summaryrefslogtreecommitdiffstats
path: root/robotframework-onap/vcpeutils/SoUtils.py
diff options
context:
space:
mode:
authorDR695H <dr695h@att.com>2019-05-04 15:51:36 -0400
committerDR695H <dr695h@att.com>2019-05-04 16:33:51 -0400
commit158df8f73cb2988031cd408939681d3ade443b2f (patch)
treeaaa0faca916a105adef1eb734d3e7dd528cfb7a3 /robotframework-onap/vcpeutils/SoUtils.py
parent8ad85420e45ffeafb536de55b31ad68c0d03c986 (diff)
fix vcpeutils
removed relative imports and using the preferred method of importing. use the open instead of file method to get files use the new pyaml method that specifies the loader use builtins.basestring for unicode and nonunicode comparison use the correct method to call the robot framework logger warn adding in unit tests for things to make sure they work Change-Id: I15da74ff66988ef2610ada3ae21a1c6104c26c35 Issue-ID: INT-1061 Signed-off-by: DR695H <dr695h@att.com>
Diffstat (limited to 'robotframework-onap/vcpeutils/SoUtils.py')
-rwxr-xr-xrobotframework-onap/vcpeutils/SoUtils.py90
1 files changed, 32 insertions, 58 deletions
diff --git a/robotframework-onap/vcpeutils/SoUtils.py b/robotframework-onap/vcpeutils/SoUtils.py
index c52006d..02b34e5 100755
--- a/robotframework-onap/vcpeutils/SoUtils.py
+++ b/robotframework-onap/vcpeutils/SoUtils.py
@@ -2,26 +2,22 @@
import time
-from .csar_parser import *
-from .preload import *
-from .vcpecommon import *
+from vcpeutils.preload import *
+from vcpeutils.vcpecommon import *
+
from robot.api import logger
class SoUtils:
def __init__(self):
- """
- :param api_version: must be 'v4' or 'v5'
- """
- self.tmp_solution_for_so_bug = False
- #self.logger = logging.getLogger(__name__)
- self.logger = logger
+ self.region_name = None # set later
+ self.tenant_id = None # set later
+ self.logger = logger
self.vcpecommon = VcpeCommon()
self.api_version = 'v4'
self.service_req_api_url = self.vcpecommon.so_req_api_url[self.api_version]
-
def submit_create_req(self, req_json, req_type, service_instance_id=None, vnf_instance_id=None):
"""
POST {serverRoot}/serviceInstances/v4
@@ -60,12 +56,11 @@ class SoUtils:
return req_id, instance_id
- def check_progress(self, req_id, eta=0, interval=5):
+ def check_progress(self, req_id, interval=5):
if not req_id:
self.logger.error('Error when checking SO request progress, invalid request ID: ' + req_id)
return False
duration = 0.0
- #bar = progressbar.ProgressBar(redirect_stdout=True)
url = self.vcpecommon.so_check_progress_api_url + '/' + req_id
while True:
@@ -74,15 +69,10 @@ class SoUtils:
response = r.json()
duration += interval
- if eta > 0:
- percentage = min(95, 100 * duration / eta)
- else:
- percentage = int(response['request']['requestStatus']['percentProgress'])
if response['request']['requestStatus']['requestState'] == 'IN_PROGRESS':
self.logger.debug('------------------Request Status-------------------------------')
self.logger.debug(json.dumps(response, indent=4, sort_keys=True))
- #bar.update(percentage)
else:
self.logger.debug('---------------------------------------------------------------')
self.logger.debug('----------------- Creation Request Results --------------------')
@@ -92,11 +82,10 @@ class SoUtils:
if not flag:
self.logger.error('Request failed.')
self.logger.error(json.dumps(response, indent=4, sort_keys=True))
- #bar.update(100)
- #bar.finish()
return flag
- def add_req_info(self, req_details, instance_name, product_family_id=None):
+ @staticmethod
+ def add_req_info(req_details, instance_name, product_family_id=None):
req_details['requestInfo'] = {
'instanceName': instance_name,
'source': 'VID',
@@ -106,19 +95,17 @@ class SoUtils:
if product_family_id:
req_details['requestInfo']['productFamilyId'] = product_family_id
- def add_related_instance(self, req_details, instance_id, instance_model):
+ @staticmethod
+ def add_related_instance(req_details, instance_id, instance_model):
instance = {"instanceId": instance_id, "modelInfo": instance_model}
if 'relatedInstanceList' not in req_details:
req_details['relatedInstanceList'] = [{"relatedInstance": instance}]
else:
req_details['relatedInstanceList'].append({"relatedInstance": instance})
- def generate_vnf_or_network_request(self, req_type, instance_name, vnf_or_network_model, service_instance_id,
- service_model):
+ def generate_vnf_or_network_request(self, instance_name, vnf_or_network_model, service_instance_id, service_model):
req_details = {
'modelInfo': vnf_or_network_model,
- #'cloudConfiguration': {"lcpCloudRegionId": self.vcpecommon.os_region_name,
- # "tenantId": self.vcpecommon.os_tenant_id},
'cloudConfiguration': {"lcpCloudRegionId": self.region_name,
"tenantId": self.tenant_id},
'requestParameters': {"userParams": []},
@@ -129,11 +116,9 @@ class SoUtils:
return {'requestDetails': req_details}
def generate_vfmodule_request(self, instance_name, vfmodule_model, service_instance_id,
- service_model, vnf_instance_id, vnf_model):
+ service_model, vnf_instance_id, vnf_model):
req_details = {
'modelInfo': vfmodule_model,
- #'cloudConfiguration': {"lcpCloudRegionId": self.vcpecommon.os_region_name,
- # "tenantId": self.vcpecommon.os_tenant_id},
'cloudConfiguration': {"lcpCloudRegionId": self.region_name,
"tenantId": self.tenant_id},
'requestParameters': {"usePreload": 'true'}
@@ -223,35 +208,33 @@ class SoUtils:
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')
- if not self.check_progress(req_id, 140):
+ if not self.check_progress(req_id):
return False
return True
def wait_for_aai(self, node_type, uuid):
self.logger.info('Waiting for AAI traversal to complete...')
- #bar = progressbar.ProgressBar()
for i in range(30):
time.sleep(1)
- #bar.update(i*100.0/30)
if self.vcpecommon.is_node_in_aai(node_type, uuid):
- #bar.update(100)
- #bar.finish()
return
self.logger.error("AAI traversal didn't finish in 30 seconds. Something is wrong. Type {0}, UUID {1}".format(
node_type, uuid))
sys.exit()
- def create_entire_service(self, csar_file, vnf_template_file, preload_dict, name_suffix, region_name, tenant_id, heatbridge=False):
+ def create_entire_service(self, csar_file, vnf_template_file, preload_dict, name_suffix, region_name, tenant_id):
"""
:param csar_file:
:param vnf_template_file:
:param preload_dict:
:param name_suffix:
+ :param region_name:
+ :param tenant_id
:return: service instance UUID
"""
- self.region_name=region_name
- self.tenant_id=tenant_id
+ self.region_name = region_name
+ self.tenant_id = tenant_id
self.logger.info('\n----------------------------------------------------------------------------------')
self.logger.info('Start to create entire service defined in csar: {0}'.format(csar_file))
parser = CsarParser()
@@ -266,13 +249,13 @@ class SoUtils:
instance_name = '_'.join([self.vcpecommon.instance_name_prefix['service'],
parser.svc_model['modelName'], global_timestamp, name_suffix])
instance_name = instance_name.lower()
- instance_name = instance_name.replace(' ','')
- instance_name = instance_name.replace(':','')
+ instance_name = instance_name.replace(' ', '')
+ instance_name = instance_name.replace(':', '')
self.logger.info('Creating service instance: {0}.'.format(instance_name))
req = self.generate_service_request(instance_name, parser.svc_model)
self.logger.debug(json.dumps(req, indent=2, sort_keys=True))
req_id, svc_instance_id = self.submit_create_req(req, 'service')
- if not self.check_progress(req_id, eta=2, interval=5):
+ if not self.check_progress(req_id, interval=5):
return None
# wait for AAI to complete traversal
@@ -284,11 +267,10 @@ class SoUtils:
network_name = '_'.join([self.vcpecommon.instance_name_prefix['network'], base_name, name_suffix])
network_name = network_name.lower()
self.logger.info('Creating network: ' + network_name)
- req = self.generate_vnf_or_network_request('network', network_name, model, svc_instance_id,
- parser.svc_model)
+ req = self.generate_vnf_or_network_request(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)
- if not self.check_progress(req_id, eta=20):
+ if not self.check_progress(req_id):
return None
self.logger.info('Changing subnet name to ' + self.vcpecommon.network_name_to_subnet_name(network_name))
@@ -304,7 +286,6 @@ class SoUtils:
self.logger.error('Failed to change subnet name for ' + network_name)
return None
-
vnf_model = None
vnf_instance_id = None
# create VNF
@@ -313,14 +294,13 @@ class SoUtils:
vnf_instance_name = '_'.join([self.vcpecommon.instance_name_prefix['vnf'],
vnf_model['modelCustomizationName'].split(' ')[0], name_suffix])
vnf_instance_name = vnf_instance_name.lower()
- vnf_instance_name = vnf_instance_name.replace(' ','')
- vnf_instance_name = vnf_instance_name.replace(':','')
+ vnf_instance_name = vnf_instance_name.replace(' ', '')
+ vnf_instance_name = vnf_instance_name.replace(':', '')
self.logger.info('Creating VNF: ' + vnf_instance_name)
- req = self.generate_vnf_or_network_request('vnf', vnf_instance_name, vnf_model, svc_instance_id,
- parser.svc_model)
+ req = self.generate_vnf_or_network_request(vnf_instance_name, vnf_model, svc_instance_id, parser.svc_model)
self.logger.debug(json.dumps(req, indent=2, sort_keys=True))
req_id, vnf_instance_id = self.submit_create_req(req, 'vnf', svc_instance_id)
- if not self.check_progress(req_id, eta=2, interval=5):
+ if not self.check_progress(req_id, interval=5):
self.logger.error('Failed to create VNF {0}.'.format(vnf_instance_name))
return False
@@ -346,21 +326,15 @@ class SoUtils:
vfmodule_instance_name = '_'.join([self.vcpecommon.instance_name_prefix['vfmodule'],
model['modelCustomizationName'].split('..')[0], name_suffix])
vfmodule_instance_name = vfmodule_instance_name.lower()
- vfmodule_instance_name = vfmodule_instance_name.replace(' ','')
- vfmoduel_instance_name = vfmodule_instance_name.replace(':','')
+ vfmodule_instance_name = vfmodule_instance_name.replace(' ', '')
+ vfmodule_instance_name = vfmodule_instance_name.replace(':', '')
self.logger.info('Creating VF Module: ' + vfmodule_instance_name)
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=50):
+ if not self.check_progress(req_id, interval=50):
self.logger.error('Failed to create VF Module {0}.'.format(vfmodule_instance_name))
return None
- # run heatbridge
- # removed until we fold in heatbridge
- #if heatbridge:
- #self.vcpecommon.heatbridge(vfmodule_instance_name, svc_instance_id)
- #self.vcpecommon.save_vgmux_vnf_name(vnf_instance_name)
-
- return svc_instance_id
+ return svc_instance_id \ No newline at end of file