X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osmclient%2Fsol005%2Fns.py;h=12c5416047198e8b2fc0995f71b9f57d199b50b2;hb=7c12d41e92545ab962f31417a73524b007cf808f;hp=a75513b0d063ab0be24a06055e9382e1269406b5;hpb=09fa3d4dffb1fd9ea427f32a32264dd3bda56543;p=osm%2Fosmclient.git diff --git a/osmclient/sol005/ns.py b/osmclient/sol005/ns.py index a75513b..12c5416 100644 --- a/osmclient/sol005/ns.py +++ b/osmclient/sol005/ns.py @@ -24,6 +24,7 @@ from osmclient.common.exceptions import ClientException from osmclient.common.exceptions import NotFound import yaml import json +import logging class Ns(object): @@ -31,6 +32,7 @@ class Ns(object): def __init__(self, http=None, client=None): self._http = http self._client = client + self._logger = logging.getLogger('osmclient') self._apiName = '/nslcm' self._apiVersion = '/v1' self._apiResource = '/ns_instances_content' @@ -39,6 +41,7 @@ class Ns(object): # NS '--wait' option def _wait(self, id, deleteFlag=False): + self._logger.debug("") # Endpoint to get operation status apiUrlStatus = '{}{}{}'.format(self._apiName, self._apiVersion, '/ns_lcm_op_occs') # Wait for status for NS instance creation/update/deletion @@ -53,6 +56,8 @@ class Ns(object): def list(self, filter=None): """Returns a list of NS """ + self._logger.debug("") + self._client.get_token() filter_string = '' if filter: filter_string = '?{}'.format(filter) @@ -64,6 +69,8 @@ class Ns(object): def get(self, name): """Returns an NS based on name or id """ + self._logger.debug("") + self._client.get_token() if utils.validate_uuid4(name): for ns in self.list(): if name == ns['_id']: @@ -75,6 +82,8 @@ class Ns(object): raise NotFound("ns {} not found".format(name)) def get_individual(self, name): + self._logger.debug("") + self._client.get_token() ns_id = name if not utils.validate_uuid4(name): for ns in self.list(): @@ -89,6 +98,7 @@ class Ns(object): raise NotFound("ns {} not found".format(name)) def delete(self, name, force=False, wait=False): + self._logger.debug("") ns = self.get(name) querystring = '' if force: @@ -118,13 +128,15 @@ class Ns(object): def create(self, nsd_name, nsr_name, account, config=None, ssh_keys=None, description='default description', admin_status='ENABLED', wait=False): - + self._logger.debug("") + self._client.get_token() nsd = self._client.nsd.get(nsd_name) vim_account_id = {} wim_account_id = {} def get_vim_account_id(vim_account): + self._logger.debug("") if vim_account_id.get(vim_account): return vim_account_id[vim_account] @@ -135,6 +147,7 @@ class Ns(object): return vim['_id'] def get_wim_account_id(wim_account): + self._logger.debug("") if not isinstance(wim_account, str): return wim_account if wim_account_id.get(wim_account): @@ -161,7 +174,7 @@ class Ns(object): with open(pubkeyfile, 'r') as f: ns['ssh_keys'].append(f.read()) if config: - ns_config = yaml.load(config) + ns_config = yaml.safe_load(config) if "vim-network-name" in ns_config: ns_config["vld"] = ns_config.pop("vim-network-name") if "vld" in ns_config: @@ -195,13 +208,12 @@ class Ns(object): if not additional_param_vnf.get("member-vnf-index"): raise ValueError("Error at --config 'additionalParamsForVnf' items must contain " "'member-vnf-index'") - if not additional_param_vnf.get("additionalParams"): - raise ValueError("Error at --config 'additionalParamsForVnf' items must contain " - "'additionalParams'") if "wim_account" in ns_config: wim_account = ns_config.pop("wim_account") if wim_account is not None: ns['wimAccountId'] = get_wim_account_id(wim_account) + if "timeout_ns_deploy" in ns_config: + ns["timeout_ns_deploy"] = ns_config.pop("timeout_ns_deploy") # print(yaml.safe_dump(ns)) try: @@ -239,12 +251,13 @@ class Ns(object): message="failed to create ns: {} nsd: {}\nerror:\n{}".format( nsr_name, nsd_name, - exc.message) + str(exc)) raise ClientException(message) def list_op(self, name, filter=None): """Returns the list of operations of a NS """ + self._logger.debug("") ns = self.get(name) try: self._apiResource = '/ns_lcm_op_occs' @@ -276,12 +289,14 @@ class Ns(object): except ClientException as exc: message="failed to get operation list of NS {}:\nerror:\n{}".format( name, - exc.message) + str(exc)) raise ClientException(message) def get_op(self, operationId): """Returns the status of an operation """ + self._logger.debug("") + self._client.get_token() try: self._apiResource = '/ns_lcm_op_occs' self._apiBase = '{}{}{}'.format(self._apiName, @@ -307,14 +322,16 @@ class Ns(object): except ClientException as exc: message="failed to get status of operation {}:\nerror:\n{}".format( operationId, - exc.message) + str(exc)) raise ClientException(message) - def exec_op(self, name, op_name, op_data=None, wait=False): + def exec_op(self, name, op_name, op_data=None, wait=False, ): """Executes an operation on a NS """ + self._logger.debug("") ns = self.get(name) try: + ns = self.get(name) self._apiResource = '/ns_instances' self._apiBase = '{}{}{}'.format(self._apiName, self._apiVersion, self._apiResource) @@ -334,7 +351,7 @@ class Ns(object): # Wait for status for NS instance action # For the 'action' operation, 'id' is used self._wait(resp.get('id')) - print(resp['id']) + return resp['id'] else: msg = "" if resp: @@ -346,12 +363,14 @@ class Ns(object): except ClientException as exc: message="failed to exec operation {}:\nerror:\n{}".format( name, - exc.message) + str(exc)) raise ClientException(message) def scale_vnf(self, ns_name, vnf_name, scaling_group, scale_in, scale_out, wait=False): """Scales a VNF by adding/removing VDUs """ + self._logger.debug("") + self._client.get_token() try: op_data={} op_data["scaleType"] = "SCALE_VNF" @@ -364,13 +383,16 @@ class Ns(object): "member-vnf-index": vnf_name, "scaling-group-descriptor": scaling_group, } - self.exec_op(ns_name, op_name='scale', op_data=op_data, wait=wait) + op_id = self.exec_op(ns_name, op_name='scale', op_data=op_data, wait=wait) + print(str(op_id)) except ClientException as exc: message="failed to scale vnf {} of ns {}:\nerror:\n{}".format( - vnf_name, ns_name, exc.message) + vnf_name, ns_name, str(exc)) raise ClientException(message) def create_alarm(self, alarm): + self._logger.debug("") + self._client.get_token() data = {} data["create_alarm_request"] = {} data["create_alarm_request"]["alarm_create_request"] = alarm @@ -394,10 +416,12 @@ class Ns(object): except ClientException as exc: message="failed to create alarm: alarm {}\n{}".format( alarm, - exc.message) + str(exc)) raise ClientException(message) def delete_alarm(self, name): + self._logger.debug("") + self._client.get_token() data = {} data["delete_alarm_request"] = {} data["delete_alarm_request"]["alarm_delete_request"] = {} @@ -422,10 +446,12 @@ class Ns(object): except ClientException as exc: message="failed to delete alarm: alarm {}\n{}".format( name, - exc.message) + str(exc)) raise ClientException(message) def export_metric(self, metric): + self._logger.debug("") + self._client.get_token() data = {} data["read_metric_data_request"] = metric try: @@ -448,10 +474,11 @@ class Ns(object): except ClientException as exc: message="failed to export metric: metric {}\n{}".format( metric, - exc.message) + str(exc)) raise ClientException(message) def get_field(self, ns_name, field): + self._logger.debug("") nsr = self.get(ns_name) print(yaml.safe_dump(nsr)) if nsr is None: @@ -461,3 +488,4 @@ class Ns(object): return nsr[field] raise NotFound("failed to find {} in ns {}".format(field, ns_name)) +