-#! /usr/bin/python
+#!/usr/bin/env python
import sys
import logging
import time
import csar_parser
import preload
-from vcpecommon import *
+from vcpecommon import * # pylint: disable=W0614
class SoUtils:
self.vcpecommon = vcpecommon
if api_version not in self.vcpecommon.so_req_api_url:
self.logger.error('Incorrect SO API version: %s', api_version)
- sys.exit()
+ sys.exit(1)
self.service_req_api_url = self.vcpecommon.so_req_api_url[api_version]
+ self.testApi = 'VNF_API'
def submit_create_req(self, req_json, req_type, service_instance_id=None, vnf_instance_id=None):
"""
def generate_vnf_or_network_request(self, req_type, instance_name, vnf_or_network_model, service_instance_id,
service_model):
+ if self.vcpecommon.gra_api_flag:
+ self.testApi = 'GR_API'
req_details = {
'modelInfo': vnf_or_network_model,
'cloudConfiguration': {"lcpCloudRegionId": self.vcpecommon.os_region_name,
"tenantId": self.vcpecommon.os_tenant_id},
- 'requestParameters': {"userParams": []},
+ 'requestParameters': {
+ "userParams": [],
+ "testApi": self.testApi
+ },
'platform': {"platformName": "Platform-Demonstration"}
}
self.add_req_info(req_details, instance_name, self.vcpecommon.product_family_id)
def generate_vfmodule_request(self, instance_name, vfmodule_model, service_instance_id,
service_model, vnf_instance_id, vnf_model):
+ if self.vcpecommon.gra_api_flag:
+ self.testApi = 'GR_API'
req_details = {
'modelInfo': vfmodule_model,
'cloudConfiguration': {"lcpCloudRegionId": self.vcpecommon.os_region_name,
"tenantId": self.vcpecommon.os_tenant_id},
- 'requestParameters': {"usePreload": 'true'}
+ 'requestParameters': {
+ "usePreload": 'true',
+ "testApi": self.testApi
+ }
}
self.add_req_info(req_details, instance_name, self.vcpecommon.product_family_id)
self.add_related_instance(req_details, service_instance_id, service_model)
return {'requestDetails': req_details}
def generate_service_request(self, instance_name, model):
+ if self.vcpecommon.gra_api_flag:
+ self.testApi = 'GR_API'
+
+ self.logger.info('testApi' + self.testApi)
+
req_details = {
'modelInfo': model,
'subscriberInfo': {'globalSubscriberId': self.vcpecommon.global_subscriber_id},
'requestParameters': {
"userParams": [],
"subscriptionServiceType": "vCPE",
- "aLaCarte": 'true'
+ "aLaCarte": 'true',
+ "testApi": self.testApi
}
}
self.add_req_info(req_details, instance_name)
self.add_project_info(req_details)
self.add_owning_entity(req_details)
+ self.logger.info(json.dumps(req_details, indent=2, sort_keys=True))
return {'requestDetails': req_details}
def add_project_info(self, req_details):
req_details['owningEntity'] = {'owningEntityId': self.vcpecommon.owning_entity_id,
'owningEntityName': self.vcpecommon.owning_entity_name}
- def generate_custom_service_request(self, instance_name, model, brg_mac):
+ def generate_custom_service_request(self, instance_name, svc_model,
+ vfmodule_models, brg_mac):
brg_mac_enc = brg_mac.replace(':', '-')
req_details = {
- 'modelInfo': model,
+ 'modelInfo': svc_model,
'subscriberInfo': {'subscriberName': 'Kaneohe',
'globalSubscriberId': self.vcpecommon.global_subscriber_id},
'cloudConfiguration': {"lcpCloudRegionId": 'RegionOne', #self.vcpecommon.os_region_name,
'name': 'VfModuleNames',
'value': [
{
- 'VfModuleModelInvariantUuid': self.vcpecommon.vgw_VfModuleModelInvariantUuid,
+ 'VfModuleModelInvariantUuid': vfmodule_models[0]['modelInvariantId'],
'VfModuleName': 'VGW2BRG-{0}'.format(brg_mac_enc)
}
]
instance_name = '_'.join([self.vcpecommon.instance_name_prefix['service'],
parser.svc_model['modelName'][0:10], name_suffix])
instance_name = instance_name.lower()
- req = self.generate_custom_service_request(instance_name, parser.svc_model, brg_mac)
+ req = self.generate_custom_service_request(instance_name, parser.svc_model,
+ parser.vfmodule_models, brg_mac)
self.logger.info(json.dumps(req, indent=2, sort_keys=True))
self.logger.info('Creating custom service {0}.'.format(instance_name))
- req_id, svc_instance_id = self.submit_create_req(req, 'service')
+ req_id, svc_instance_id = self.submit_create_req(req, 'service') # pylint: disable=W0612
if not self.check_progress(req_id, 140):
return False
return True
self.logger.error("AAI traversal didn't finish in 30 seconds. Something is wrong. Type {0}, UUID {1}".format(
node_type, uuid))
- sys.exit()
+ sys.exit(1)
def create_entire_service(self, csar_file, vnf_template_file, preload_dict, name_suffix, heatbridge=False):
"""
req = self.generate_vnf_or_network_request('network', network_name, model, svc_instance_id,
parser.svc_model)
self.logger.debug(json.dumps(req, indent=2, sort_keys=True))
- req_id, net_instance_id = self.submit_create_req(req, 'network', svc_instance_id)
+ req_id, net_instance_id = self.submit_create_req(req, 'network', svc_instance_id) # pylint: disable=W0612
if not self.check_progress(req_id, eta=20):
return None
self.logger.info('Changing subnet name to ' + self.vcpecommon.network_name_to_subnet_name(network_name))
self.vcpecommon.set_network_name(network_name)
subnet_name_changed = False
- for i in range(20):
+ for i in range(20): # pylint: disable=W0612
time.sleep(3)
if self.vcpecommon.set_subnet_name(network_name):
subnet_name_changed = True
# wait for AAI to complete traversal
if not vnf_instance_id:
self.logger.error('No VNF instance ID returned!')
- sys.exit()
+ sys.exit(1)
self.wait_for_aai('vnf', vnf_instance_id)
preloader = preload.Preload(self.vcpecommon)
- preloader.preload_vfmodule(vnf_template_file, svc_instance_id, parser.vnf_models[0], parser.vfmodule_models[0],
- preload_dict, name_suffix)
+ if self.vcpecommon.gra_api_flag:
+ preloader.preload_vfmodule(vnf_template_file, svc_instance_id, parser.vnf_models[0], parser.vfmodule_models[0],
+ preload_dict, name_suffix, True)
+ else:
+ preloader.preload_vfmodule(vnf_template_file, svc_instance_id, parser.vnf_models[0], parser.vfmodule_models[0],
+ preload_dict, name_suffix, False)
# create VF Module
if len(parser.vfmodule_models) == 1:
if not vnf_instance_id or not vnf_model:
self.logger.error('Invalid VNF instance ID or VNF model!')
- sys.exit()
+ sys.exit(1)
model = parser.vfmodule_models[0]
vfmodule_instance_name = '_'.join([self.vcpecommon.instance_name_prefix['vfmodule'],
req = self.generate_vfmodule_request(vfmodule_instance_name, model, svc_instance_id, parser.svc_model,
vnf_instance_id, vnf_model)
self.logger.debug(json.dumps(req, indent=2, sort_keys=True))
- req_id, vfmodule_instance_id = self.submit_create_req(req, 'vfmodule', svc_instance_id, vnf_instance_id)
- if not self.check_progress(req_id, eta=70, interval=5):
+ req_id, vfmodule_instance_id = self.submit_create_req(req, 'vfmodule', svc_instance_id, vnf_instance_id) # pylint: disable=W0612
+ if not self.check_progress(req_id, eta=70, interval=50):
self.logger.error('Failed to create VF Module {0}.'.format(vfmodule_instance_name))
return None
# run heatbridge
if heatbridge:
- self.vcpecommon.headbridge(vfmodule_instance_name, svc_instance_id)
+ self.vcpecommon.heatbridge(vfmodule_instance_name, svc_instance_id)
self.vcpecommon.save_vgmux_vnf_name(vnf_instance_name)
return svc_instance_id