X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osmclient%2Fsol005%2Fnsi.py;h=46714414a49a193d27a3ec713cb7b05b673b198c;hb=5b5cd4bd8dbcc8b9ba5fa94209c216e255118a94;hp=c01b4e907916bb1a7018eb0b3ec8ab4452f0502b;hpb=63ab62675e9db9c956f7a676e2f0230f01d8ce9a;p=osm%2Fosmclient.git diff --git a/osmclient/sol005/nsi.py b/osmclient/sol005/nsi.py index c01b4e9..4671441 100644 --- a/osmclient/sol005/nsi.py +++ b/osmclient/sol005/nsi.py @@ -40,16 +40,18 @@ class Nsi(object): self._apiVersion, self._apiResource) # NSI '--wait' option - def _wait(self, id, deleteFlag=False): + def _wait(self, id, wait_time, deleteFlag=False): self._logger.debug("") self._client.get_token() # Endpoint to get operation status apiUrlStatus = '{}{}{}'.format(self._apiName, self._apiVersion, '/nsi_lcm_op_occs') # Wait for status for NSI instance creation/update/deletion + if isinstance(wait_time, bool): + wait_time = WaitForStatus.TIMEOUT_NSI_OPERATION WaitForStatus.wait_for_status( 'NSI', str(id), - WaitForStatus.TIMEOUT_NSI_OPERATION, + wait_time, apiUrlStatus, self._http.get2_cmd, deleteFlag=deleteFlag) @@ -62,9 +64,9 @@ class Nsi(object): filter_string = '' if filter: filter_string = '?{}'.format(filter) - resp = self._http.get_cmd('{}{}'.format(self._apiBase,filter_string)) + _, resp = self._http.get2_cmd('{}{}'.format(self._apiBase,filter_string)) if resp: - return resp + return json.loads(resp) return list() def get(self, name): @@ -91,11 +93,14 @@ class Nsi(object): if name == nsi['name']: nsi_id = nsi['_id'] break - resp = self._http.get_cmd('{}/{}'.format(self._apiBase, nsi_id)) - #resp = self._http.get_cmd('{}/{}/nsd_content'.format(self._apiBase, nsi_id)) - #print(yaml.safe_dump(resp)) - if resp: - return resp + try: + _, resp = self._http.get2_cmd('{}/{}'.format(self._apiBase, nsi_id)) + #resp = self._http.get_cmd('{}/{}/nsd_content'.format(self._apiBase, nsi_id)) + #print(yaml.safe_dump(resp)) + if resp: + return json.loads(resp) + except NotFound: + raise NotFound("nsi '{}' not found".format(name)) raise NotFound("nsi {} not found".format(name)) def delete(self, name, force=False, wait=False): @@ -113,18 +118,18 @@ class Nsi(object): resp = json.loads(resp) # Wait for status for NSI instance deletion # For the 'delete' operation, '_id' is used - self._wait(resp.get('_id'), deleteFlag=True) + self._wait(resp.get('_id'), wait, deleteFlag=True) else: print('Deletion in progress') elif http_code == 204: print('Deleted') else: - msg = "" - if resp: - try: - msg = json.loads(resp) - except ValueError: - msg = resp + msg = resp or "" + # if resp: + # try: + # msg = json.loads(resp) + # except ValueError: + # msg = resp raise ClientException("failed to delete nsi {} - {}".format(name, msg)) def create(self, nst_name, nsi_name, account, config=None, @@ -226,27 +231,27 @@ class Nsi(object): for (key,val) in list(headers.items())] self._http.set_http_header(http_header) http_code, resp = self._http.post_cmd(endpoint=self._apiBase, - postfields_dict=nsi) + postfields_dict=nsi) #print('HTTP CODE: {}'.format(http_code)) #print('RESP: {}'.format(resp)) - if http_code in (200, 201, 202, 204): - if resp: - resp = json.loads(resp) - if not resp or 'id' not in resp: - raise ClientException('unexpected response from server - {} '.format( - resp)) - if wait: - # Wait for status for NSI instance creation - self._wait(resp.get('nsilcmop_id')) - print(resp['id']) - else: - msg = "" - if resp: - try: - msg = json.loads(resp) - except ValueError: - msg = resp - raise ClientException(msg) + #if http_code in (200, 201, 202, 204): + if resp: + resp = json.loads(resp) + if not resp or 'id' not in resp: + raise ClientException('unexpected response from server - {} '.format( + resp)) + if wait: + # Wait for status for NSI instance creation + self._wait(resp.get('nsilcmop_id'), wait) + print(resp['id']) + #else: + # msg = "" + # if resp: + # try: + # msg = json.loads(resp) + # except ValueError: + # msg = resp + # raise ClientException(msg) except ClientException as exc: message="failed to create nsi: {} nst: {}\nerror:\n{}".format( nsi_name, @@ -271,21 +276,21 @@ class Nsi(object): filter_string) ) #print('HTTP CODE: {}'.format(http_code)) #print('RESP: {}'.format(resp)) - if http_code == 200: - if resp: - resp = json.loads(resp) - return resp - else: - raise ClientException('unexpected response from server') + #if http_code == 200: + if resp: + resp = json.loads(resp) + return resp else: - msg = "" - if resp: - try: - resp = json.loads(resp) - msg = resp['detail'] - except ValueError: - msg = resp - raise ClientException(msg) + raise ClientException('unexpected response from server') + #else: + # msg = "" + # if resp: + # try: + # resp = json.loads(resp) + # msg = resp['detail'] + # except ValueError: + # msg = resp + # raise ClientException(msg) except ClientException as exc: message="failed to get operation list of NSI {}:\nerror:\n{}".format( name, @@ -304,21 +309,21 @@ class Nsi(object): http_code, resp = self._http.get2_cmd('{}/{}'.format(self._apiBase, operationId)) #print('HTTP CODE: {}'.format(http_code)) #print('RESP: {}'.format(resp)) - if http_code == 200: - if resp: - resp = json.loads(resp) - return resp - else: - raise ClientException('unexpected response from server') + #if http_code == 200: + if resp: + resp = json.loads(resp) + return resp else: - msg = "" - if resp: - try: - resp = json.loads(resp) - msg = resp['detail'] - except ValueError: - msg = resp - raise ClientException(msg) + raise ClientException('unexpected response from server') + #else: + # msg = "" + # if resp: + # try: + # resp = json.loads(resp) + # msg = resp['detail'] + # except ValueError: + # msg = resp + # raise ClientException(msg) except ClientException as exc: message="failed to get status of operation {}:\nerror:\n{}".format( operationId, @@ -340,21 +345,21 @@ class Nsi(object): http_code, resp = self._http.post_cmd(endpoint=endpoint, postfields_dict=op_data) #print('HTTP CODE: {}'.format(http_code)) #print('RESP: {}'.format(resp)) - if http_code in (200, 201, 202, 204): - if resp: - resp = json.loads(resp) - if not resp or 'id' not in resp: - raise ClientException('unexpected response from server - {}'.format( - resp)) - print(resp['id']) - else: - msg = "" - if resp: - try: - msg = json.loads(resp) - except ValueError: - msg = resp - raise ClientException(msg) + #if http_code in (200, 201, 202, 204): + if resp: + resp = json.loads(resp) + if not resp or 'id' not in resp: + raise ClientException('unexpected response from server - {}'.format( + resp)) + print(resp['id']) + #else: + # msg = "" + # if resp: + # try: + # msg = json.loads(resp) + # except ValueError: + # msg = resp + # raise ClientException(msg) except ClientException as exc: message="failed to exec operation {}:\nerror:\n{}".format( name,