1 # Copyright 2019 AT&T Intellectual Property. All rights reserved.
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
7 # http://www.apache.org/licenses/LICENSE-2.0
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
15 from robot import utils
16 from robot.api.deco import keyword
21 class ServiceMappingKeywords(object):
22 """ServiceMapping is used for loading data for services into the robot framework in a structured decentralized way
23 that lets vnfs be added without code change to testuite"""
26 super(ServiceMappingKeywords, self).__init__()
27 self._cache = utils.ConnectionCache('No Service Mappings directories loaded')
30 def set_directory(self, alias, service_mappings_directory):
31 self._cache.register(service_mappings_directory, alias=alias)
34 def get_service_folder_mapping(self, alias, service):
35 """returns an array of strings with metadata that identifies the folders to be zipped and
36 uploaded to SDC for model distribution for a given Service """
37 return self._service_mapping(alias, service)['GLOBAL_SERVICE_FOLDER_MAPPING'][service]
40 def get_service_vnf_mapping(self, alias, service):
41 """returns an array of strings that is the vnfs in this service """
42 return self._service_mapping(alias, service)['GLOBAL_SERVICE_VNF_MAPPING'][service]
45 def get_service_neutron_mapping(self, alias, service):
46 """returns an array of strings that lists the neutron networks needed in this service.
47 Map the service to the list of Generic Neutron Networks to be orchestrated """
48 return self._service_mapping(alias, service)['GLOBAL_SERVICE_GEN_NEUTRON_NETWORK_MAPPING'][service]
51 def get_service_deployment_artifact_mapping(self, alias, service):
52 """returns an array of strings that is the extra deployment artifacts needed with this service """
53 return self._service_mapping(alias, service)['GLOBAL_SERVICE_DEPLOYMENT_ARTIFACT_MAPPING'][service]
56 def get_service_template_mapping(self, alias, service, vnf):
57 """returns an array of strings that are the heat templates for this vnf. This metadata identifes the preloads
58 that need to be done for a VNF as there may be more than one (vLB) "template" maps to the parameters
59 in the preload_paramenters.py """
60 return self._service_mapping(alias, service)['GLOBAL_SERVICE_TEMPLATE_MAPPING'][vnf]
62 """@PendingDeprecationWarning"""
64 def get_validate_name_mapping(self, alias, service, vnf):
65 """returns an array of strings that are the names to validate in heatbridge for the vnf.
66 Used by the Heatbridge Validate Query to A&AI to locate the vserver name"""
67 return self._service_mapping(alias, service)['GLOBAL_VALIDATE_NAME_MAPPING'][vnf]
69 def _service_mapping(self, alias, service):
70 filepath = os.path.join(self._cache.switch(alias), service, 'service_mapping.json')
71 with open(filepath, 'r') as f: