Fix Bug 934. OSM CLI crashes for listing operations with insufficient permissions 85/8385/14
authorpinoa <alberto.pino@altran.com>
Thu, 12 Dec 2019 11:10:27 +0000 (12:10 +0100)
committergarciadeblas <gerardo.garciadeblas@telefonica.com>
Tue, 21 Jan 2020 08:44:57 +0000 (09:44 +0100)
Change-Id: I77c802a6ad1d77979b01377b0d1bebfff936e306
Signed-off-by: pinoa <alberto.pino@altran.com>
19 files changed:
osmclient/common/exceptions.py
osmclient/sol005/client.py
osmclient/sol005/http.py
osmclient/sol005/k8scluster.py
osmclient/sol005/ns.py
osmclient/sol005/nsd.py
osmclient/sol005/nsi.py
osmclient/sol005/nst.py
osmclient/sol005/package.py
osmclient/sol005/pdud.py
osmclient/sol005/project.py
osmclient/sol005/repo.py
osmclient/sol005/role.py
osmclient/sol005/sdncontroller.py
osmclient/sol005/user.py
osmclient/sol005/vim.py
osmclient/sol005/vnf.py
osmclient/sol005/vnfd.py
osmclient/sol005/wim.py

index 0be2778..92ed0f6 100644 (file)
@@ -21,3 +21,6 @@ class ClientException(Exception):
 
 class NotFound(ClientException):
     pass
 
 class NotFound(ClientException):
     pass
+
+class OsmHttpException(ClientException):
+    pass
index bf6f845..3f397f7 100644 (file)
@@ -36,7 +36,6 @@ from osmclient.sol005 import role
 from osmclient.sol005 import pdud
 from osmclient.sol005 import k8scluster
 from osmclient.sol005 import repo
 from osmclient.sol005 import pdud
 from osmclient.sol005 import k8scluster
 from osmclient.sol005 import repo
-from osmclient.common.exceptions import ClientException
 from osmclient.common import package_tool
 import json
 import logging
 from osmclient.common import package_tool
 import json
 import logging
@@ -107,9 +106,9 @@ class Client(object):
                                'project_id': self._project}
             http_code, resp = self._http_client.post_cmd(endpoint=self._auth_endpoint,
                                                          postfields_dict=postfields_dict)
                                'project_id': self._project}
             http_code, resp = self._http_client.post_cmd(endpoint=self._auth_endpoint,
                                                          postfields_dict=postfields_dict)
-            if http_code not in (200, 201, 202, 204):
-                message ='Authentication error: not possible to get auth token\nresp:\n{}'.format(resp)
-                raise ClientException(message)
+#            if http_code not in (200, 201, 202, 204):
+#                message ='Authentication error: not possible to get auth token\nresp:\n{}'.format(resp)
+#                raise ClientException(message)
 
             token = json.loads(resp) if resp else None
             self._token = token['id']
 
             token = json.loads(resp) if resp else None
             self._token = token['id']
@@ -121,6 +120,7 @@ class Client(object):
                 self._http_client.set_http_header(http_header)
 
     def get_version(self):
                 self._http_client.set_http_header(http_header)
 
     def get_version(self):
-        resp = self._http_client.get_cmd(endpoint="/version")
+        _, resp = self._http_client.get2_cmd(endpoint="/version")
+        resp = json.loads(resp)
         return "{} {}".format(resp.get("version"), resp.get("date"))
 
         return "{} {}".format(resp.get("version"), resp.get("date"))
 
index aca8a4b..9bdf94e 100644 (file)
@@ -20,6 +20,7 @@ import json
 import logging
 import copy
 from osmclient.common import http
 import logging
 import copy
 from osmclient.common import http
+from osmclient.common.exceptions import OsmHttpException
 
 
 class Http(http.Http):
 
 
 class Http(http.Http):
@@ -54,6 +55,7 @@ class Http(http.Http):
         http_code = curl_cmd.getinfo(pycurl.HTTP_CODE)
         self._logger.info("Response HTTPCODE: {}".format(http_code))
         curl_cmd.close()
         http_code = curl_cmd.getinfo(pycurl.HTTP_CODE)
         self._logger.info("Response HTTPCODE: {}".format(http_code))
         curl_cmd.close()
+        self.check_http_response(http_code, data)
         # TODO 202 accepted should be returned somehow
         if data.getvalue():
             self._logger.verbose("Response DATA: {}".format(json.loads(data.getvalue().decode())))
         # TODO 202 accepted should be returned somehow
         if data.getvalue():
             self._logger.verbose("Response DATA: {}".format(json.loads(data.getvalue().decode())))
@@ -106,6 +108,7 @@ class Http(http.Http):
         http_code = curl_cmd.getinfo(pycurl.HTTP_CODE)
         self._logger.info("Response HTTPCODE: {}".format(http_code))
         curl_cmd.close()
         http_code = curl_cmd.getinfo(pycurl.HTTP_CODE)
         self._logger.info("Response HTTPCODE: {}".format(http_code))
         curl_cmd.close()
+        self.check_http_response(http_code, data)
         if data.getvalue():
             self._logger.verbose("Response DATA: {}".format(json.loads(data.getvalue().decode())))
             return http_code, data.getvalue().decode()
         if data.getvalue():
             self._logger.verbose("Response DATA: {}".format(json.loads(data.getvalue().decode())))
             return http_code, data.getvalue().decode()
@@ -150,8 +153,15 @@ class Http(http.Http):
         http_code = curl_cmd.getinfo(pycurl.HTTP_CODE)
         self._logger.info("Response HTTPCODE: {}".format(http_code))
         curl_cmd.close()
         http_code = curl_cmd.getinfo(pycurl.HTTP_CODE)
         self._logger.info("Response HTTPCODE: {}".format(http_code))
         curl_cmd.close()
+        self.check_http_response(http_code, data)
         if data.getvalue():
             self._logger.debug("Response DATA: {}".format(json.loads(data.getvalue().decode())))
             return http_code, data.getvalue().decode()
         return http_code, None
 
         if data.getvalue():
             self._logger.debug("Response DATA: {}".format(json.loads(data.getvalue().decode())))
             return http_code, data.getvalue().decode()
         return http_code, None
 
+    def check_http_response(self, http_code, data):
+        if http_code >= 300:
+            resp = ""
+            if data.getvalue():
+                resp=": " + data.getvalue().decode()
+            raise OsmHttpException("Error {}{}".format(http_code, resp))
index 5520787..f001dee 100644 (file)
@@ -17,8 +17,8 @@ OSM K8s cluster API handling
 """
 
 from osmclient.common import utils
 """
 
 from osmclient.common import utils
-from osmclient.common.exceptions import ClientException
 from osmclient.common.exceptions import NotFound
 from osmclient.common.exceptions import NotFound
+from osmclient.common.exceptions import OsmHttpException
 import json
 
 class K8scluster(object):
 import json
 
 class K8scluster(object):
@@ -45,21 +45,22 @@ class K8scluster(object):
                                        postfields_dict=k8s_cluster)
         #print 'HTTP CODE: {}'.format(http_code)
         #print 'RESP: {}'.format(resp)
                                        postfields_dict=k8s_cluster)
         #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 http_code in (200, 201, 202, 204):
+        if resp:
+            resp = json.loads(resp)
             print(resp['id'])
             print(resp['id'])
-        else:
-            msg = ""
-            if resp:
-                try:
-                    msg = json.loads(resp)
-                except ValueError:
-                    msg = resp
-            raise ClientException("failed to add K8s cluster {} - {}".format(name, msg))
+        if not resp or 'id' not in resp:
+            raise OsmHttpException('unexpected response from server - {}'.format(
+                                      resp))
+        print(resp['id'])
+        #else:
+        #    msg = ""
+        #    if resp:
+        #        try:
+        #            msg = json.loads(resp)
+        #        except ValueError:
+        #            msg = resp
+        #    raise ClientException("failed to add K8s cluster {} - {}".format(name, msg))
 
     def update(self, name, k8s_cluster):
         self._client.get_token()
 
     def update(self, name, k8s_cluster):
         self._client.get_token()
@@ -68,16 +69,16 @@ class K8scluster(object):
                                        postfields_dict=k8s_cluster)
         # print 'HTTP CODE: {}'.format(http_code)
         # print 'RESP: {}'.format(resp)
                                        postfields_dict=k8s_cluster)
         # print 'HTTP CODE: {}'.format(http_code)
         # print 'RESP: {}'.format(resp)
-        if http_code in (200, 201, 202, 204):
-            pass
-        else:
-            msg = ""
-            if resp:
-                try:
-                    msg = json.loads(resp)
-                except ValueError:
-                    msg = resp
-            raise ClientException("failed to update K8s cluster {} - {}".format(name, msg))
+        #if http_code in (200, 201, 202, 204):
+        #pass
+        #else:
+        #    msg = ""
+        #    if resp:
+        #        try:
+        #            msg = json.loads(resp)
+        #        except ValueError:
+        #            msg = resp
+        #    raise ClientException("failed to update K8s cluster {} - {}".format(name, msg))
 
     def get_id(self, name):
         """Returns a K8s cluster id from a K8s cluster name
 
     def get_id(self, name):
         """Returns a K8s cluster id from a K8s cluster name
@@ -110,7 +111,7 @@ class K8scluster(object):
                     msg = json.loads(resp)
                 except ValueError:
                     msg = resp
                     msg = json.loads(resp)
                 except ValueError:
                     msg = resp
-            raise ClientException("failed to delete K8s cluster {} - {}".format(name, msg))
+            raise OsmHttpException("failed to delete K8s cluster {} - {}".format(name, msg))
 
     def list(self, filter=None):
         """Returns a list of K8s clusters
 
     def list(self, filter=None):
         """Returns a list of K8s clusters
@@ -119,9 +120,9 @@ class K8scluster(object):
         filter_string = ''
         if filter:
             filter_string = '?{}'.format(filter)
         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:
         if resp:
-            return resp
+            return json.loads(resp) 
         return list()
 
     def get(self, name):
         return list()
 
     def get(self, name):
@@ -131,10 +132,11 @@ class K8scluster(object):
         cluster_id = name
         if not utils.validate_uuid4(name):
             cluster_id = self.get_id(name)
         cluster_id = name
         if not utils.validate_uuid4(name):
             cluster_id = self.get_id(name)
-        resp = self._http.get_cmd('{}/{}'.format(self._apiBase,cluster_id))
-        if not resp or '_id' not in resp:
-            raise ClientException('failed to get K8s cluster info: '.format(resp))
-        else:
-            return resp
+        _, resp = self._http.get2_cmd('{}/{}'.format(self._apiBase,cluster_id))
+#        if not resp or '_id' not in resp:
+#            raise ClientException('failed to get K8s cluster info: '.format(resp))
+#        else:
+        if resp:
+            return json.loads(resp) 
         raise NotFound("K8s cluster {} not found".format(name))
 
         raise NotFound("K8s cluster {} not found".format(name))
 
index 12c5416..c8e2a77 100644 (file)
@@ -22,6 +22,7 @@ from osmclient.common import utils
 from osmclient.common import wait as WaitForStatus
 from osmclient.common.exceptions import ClientException
 from osmclient.common.exceptions import NotFound
 from osmclient.common import wait as WaitForStatus
 from osmclient.common.exceptions import ClientException
 from osmclient.common.exceptions import NotFound
+from osmclient.common.exceptions import OsmHttpException
 import yaml
 import json
 import logging
 import yaml
 import json
 import logging
@@ -61,9 +62,9 @@ class Ns(object):
         filter_string = ''
         if filter:
             filter_string = '?{}'.format(filter)
         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:
         if resp:
-            return resp
+            return json.loads(resp)
         return list()
 
     def get(self, name):
         return list()
 
     def get(self, name):
@@ -90,11 +91,11 @@ class Ns(object):
                 if name == ns['name']:
                     ns_id = ns['_id']
                     break
                 if name == ns['name']:
                     ns_id = ns['_id']
                     break
-        resp = self._http.get_cmd('{}/{}'.format(self._apiBase, ns_id))
+        _, resp = self._http.get2_cmd('{}/{}'.format(self._apiBase, ns_id))
         #resp = self._http.get_cmd('{}/{}/nsd_content'.format(self._apiBase, ns_id))
         #print(yaml.safe_dump(resp))
         if resp:
         #resp = self._http.get_cmd('{}/{}/nsd_content'.format(self._apiBase, ns_id))
         #print(yaml.safe_dump(resp))
         if resp:
-            return resp
+            return json.loads(resp)
         raise NotFound("ns {} not found".format(name))
 
     def delete(self, name, force=False, wait=False):
         raise NotFound("ns {} not found".format(name))
 
     def delete(self, name, force=False, wait=False):
@@ -123,7 +124,7 @@ class Ns(object):
                     msg = json.loads(resp)
                 except ValueError:
                     msg = resp
                     msg = json.loads(resp)
                 except ValueError:
                     msg = resp
-            raise ClientException("failed to delete ns {} - {}".format(name, msg))
+            raise OsmHttpException("failed to delete ns {} - {}".format(name, msg))
 
     def create(self, nsd_name, nsr_name, account, config=None,
                ssh_keys=None, description='default description',
 
     def create(self, nsd_name, nsr_name, account, config=None,
                ssh_keys=None, description='default description',
@@ -226,33 +227,33 @@ class Ns(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,
                           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=ns)
+                                   postfields_dict=ns)
             # print('HTTP CODE: {}'.format(http_code))
             # print('RESP: {}'.format(resp))
             # 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(
+            #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))
                                       resp))
-                if wait:
-                    # Wait for status for NS instance creation
-                    self._wait(resp.get('nslcmop_id'))
-                return resp['id']
-            else:
-                msg = ""
-                if resp:
-                    try:
-                        msg = json.loads(resp)
-                    except ValueError:
-                        msg = resp
-                raise ClientException(msg)
+            if wait:
+                # Wait for status for NS instance creation
+                self._wait(resp.get('nslcmop_id'))
+            return 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 ns: {} nsd: {}\nerror:\n{}".format(
                     nsr_name,
                     nsd_name,
                     str(exc))
         except ClientException as exc:
             message="failed to create ns: {} nsd: {}\nerror:\n{}".format(
                     nsr_name,
                     nsd_name,
                     str(exc))
-            raise ClientException(message)
+            raise OsmHttpException(message)
 
     def list_op(self, name, filter=None):
         """Returns the list of operations of a NS
 
     def list_op(self, name, filter=None):
         """Returns the list of operations of a NS
@@ -265,32 +266,32 @@ class Ns(object):
                                       self._apiVersion, self._apiResource)
             filter_string = ''
             if filter:
                                       self._apiVersion, self._apiResource)
             filter_string = ''
             if filter:
-                filter_string = '&{}'.format(filter)
+                 filter_string = '&{}'.format(filter)
             http_code, resp = self._http.get2_cmd('{}?nsInstanceId={}'.format(
                                                        self._apiBase, ns['_id'],
                                                        filter_string) )
             #print('HTTP CODE: {}'.format(http_code))
             #print('RESP: {}'.format(resp))
             http_code, resp = self._http.get2_cmd('{}?nsInstanceId={}'.format(
                                                        self._apiBase, ns['_id'],
                                                        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:
             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 NS {}:\nerror:\n{}".format(
                     name,
                     str(exc))
         except ClientException as exc:
             message="failed to get operation list of NS {}:\nerror:\n{}".format(
                     name,
                     str(exc))
-            raise ClientException(message)
+            raise OsmHttpException(message)
 
     def get_op(self, operationId):
         """Returns the status of an operation
 
     def get_op(self, operationId):
         """Returns the status of an operation
@@ -304,26 +305,26 @@ class Ns(object):
             http_code, resp = self._http.get2_cmd('{}/{}'.format(self._apiBase, operationId))
             #print('HTTP CODE: {}'.format(http_code))
             #print('RESP: {}'.format(resp))
             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:
             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,
                     str(exc))
         except ClientException as exc:
             message="failed to get status of operation {}:\nerror:\n{}".format(
                     operationId,
                     str(exc))
-            raise ClientException(message)
+            raise OsmHttpException(message)
 
     def exec_op(self, name, op_name, op_data=None, wait=False, ):
         """Executes an operation on a NS
 
     def exec_op(self, name, op_name, op_data=None, wait=False, ):
         """Executes an operation on a NS
@@ -341,30 +342,30 @@ class Ns(object):
             http_code, resp = self._http.post_cmd(endpoint=endpoint, postfields_dict=op_data)
             #print('HTTP CODE: {}'.format(http_code))
             #print('RESP: {}'.format(resp))
             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))
-                if wait:
-                    # Wait for status for NS instance action
-                    # For the 'action' operation, 'id' is used
-                    self._wait(resp.get('id'))
-                return 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 NS instance action
+                # For the 'action' operation, 'id' is used
+                self._wait(resp.get('id'))
+            return 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,
                     str(exc))
         except ClientException as exc:
             message="failed to exec operation {}:\nerror:\n{}".format(
                     name,
                     str(exc))
-            raise ClientException(message)
+            raise OsmHttpException(message)
 
     def scale_vnf(self, ns_name, vnf_name, scaling_group, scale_in, scale_out, wait=False):
         """Scales a VNF by adding/removing VDUs
 
     def scale_vnf(self, ns_name, vnf_name, scaling_group, scale_in, scale_out, wait=False):
         """Scales a VNF by adding/removing VDUs
@@ -396,28 +397,28 @@ class Ns(object):
         data = {}
         data["create_alarm_request"] = {}
         data["create_alarm_request"]["alarm_create_request"] = alarm
         data = {}
         data["create_alarm_request"] = {}
         data["create_alarm_request"]["alarm_create_request"] = alarm
-        try:
-            http_code, resp = self._http.post_cmd(endpoint='/test/message/alarm_request',
-                                       postfields_dict=data)
+        #try:
+        http_code, resp = self._http.post_cmd(endpoint='/test/message/alarm_request',
+                                   postfields_dict=data)
             #print('HTTP CODE: {}'.format(http_code))
             #print('RESP: {}'.format(resp))
             #print('HTTP CODE: {}'.format(http_code))
             #print('RESP: {}'.format(resp))
-            if http_code in (200, 201, 202, 204):
-                #resp = json.loads(resp)
-                print('Alarm created')
-            else:
-                msg = ""
-                if resp:
-                    try:
-                        msg = json.loads(resp)
-                    except ValueError:
-                        msg = resp
-                raise ClientException('error: code: {}, resp: {}'.format(
-                                      http_code, msg))
-        except ClientException as exc:
-            message="failed to create alarm: alarm {}\n{}".format(
-                    alarm,
-                    str(exc))
-            raise ClientException(message)
+            #if http_code in (200, 201, 202, 204):
+            #resp = json.loads(resp)
+        print('Alarm created')
+            #else:
+            #    msg = ""
+            #    if resp:
+            #        try:
+            #            msg = json.loads(resp)
+            #        except ValueError:
+            #            msg = resp
+            #    raise ClientException('error: code: {}, resp: {}'.format(
+            #                          http_code, msg))
+        #except ClientException as exc:
+        #    message="failed to create alarm: alarm {}\n{}".format(
+        #            alarm,
+        #            str(exc))
+        #    raise ClientException(message)
 
     def delete_alarm(self, name):
         self._logger.debug("")
 
     def delete_alarm(self, name):
         self._logger.debug("")
@@ -426,56 +427,56 @@ class Ns(object):
         data["delete_alarm_request"] = {}
         data["delete_alarm_request"]["alarm_delete_request"] = {}
         data["delete_alarm_request"]["alarm_delete_request"]["alarm_uuid"] = name
         data["delete_alarm_request"] = {}
         data["delete_alarm_request"]["alarm_delete_request"] = {}
         data["delete_alarm_request"]["alarm_delete_request"]["alarm_uuid"] = name
-        try:
-            http_code, resp = self._http.post_cmd(endpoint='/test/message/alarm_request',
-                                       postfields_dict=data)
+        #try:
+        http_code, resp = self._http.post_cmd(endpoint='/test/message/alarm_request',
+                                   postfields_dict=data)
             #print('HTTP CODE: {}'.format(http_code))
             #print('RESP: {}'.format(resp))
             #print('HTTP CODE: {}'.format(http_code))
             #print('RESP: {}'.format(resp))
-            if http_code in (200, 201, 202, 204):
-                #resp = json.loads(resp)
-                print('Alarm deleted')
-            else:
-                msg = ""
-                if resp:
-                    try:
-                        msg = json.loads(resp)
-                    except ValueError:
-                        msg = resp
-                raise ClientException('error: code: {}, resp: {}'.format(
-                                      http_code, msg))
-        except ClientException as exc:
-            message="failed to delete alarm: alarm {}\n{}".format(
-                    name,
-                    str(exc))
-            raise ClientException(message)
+            #if http_code in (200, 201, 202, 204):
+            #resp = json.loads(resp)
+        print('Alarm deleted')
+            #else:
+            #    msg = ""
+            #    if resp:
+            #        try:
+            #            msg = json.loads(resp)
+            #        except ValueError:
+            #            msg = resp
+            #    raise ClientException('error: code: {}, resp: {}'.format(
+            #                          http_code, msg))
+        #except ClientException as exc:
+        #    message="failed to delete alarm: alarm {}\n{}".format(
+        #            name,
+        #            str(exc))
+        #    raise ClientException(message)
 
     def export_metric(self, metric):
         self._logger.debug("")
         self._client.get_token()
         data = {}
         data["read_metric_data_request"] = metric
 
     def export_metric(self, metric):
         self._logger.debug("")
         self._client.get_token()
         data = {}
         data["read_metric_data_request"] = metric
-        try:
-            http_code, resp = self._http.post_cmd(endpoint='/test/message/metric_request',
-                                       postfields_dict=data)
+        #try:
+        http_code, resp = self._http.post_cmd(endpoint='/test/message/metric_request',
+                                   postfields_dict=data)
             #print('HTTP CODE: {}'.format(http_code))
             #print('RESP: {}'.format(resp))
             #print('HTTP CODE: {}'.format(http_code))
             #print('RESP: {}'.format(resp))
-            if http_code in (200, 201, 202, 204):
-                #resp = json.loads(resp)
-                return 'Metric exported'
-            else:
-                msg = ""
-                if resp:
-                    try:
-                        msg = json.loads(resp)
-                    except ValueError:
-                        msg = resp
-                raise ClientException('error: code: {}, resp: {}'.format(
-                                      http_code, msg))
-        except ClientException as exc:
-            message="failed to export metric: metric {}\n{}".format(
-                    metric,
-                    str(exc))
-            raise ClientException(message)
+            #if http_code in (200, 201, 202, 204):
+            #resp = json.loads(resp)
+        return 'Metric exported'
+            #else:
+            #    msg = ""
+            #    if resp:
+            #        try:
+            #            msg = json.loads(resp)
+            #        except ValueError:
+            #            msg = resp
+            #    raise ClientException('error: code: {}, resp: {}'.format(
+            #                          http_code, msg))
+        #except ClientException as exc:
+        #    message="failed to export metric: metric {}\n{}".format(
+        #            metric,
+        #            str(exc))
+        #    raise ClientException(message)
 
     def get_field(self, ns_name, field):
         self._logger.debug("")
 
     def get_field(self, ns_name, field):
         self._logger.debug("")
index bf91ca6..a2a1902 100644 (file)
@@ -20,6 +20,7 @@ OSM nsd API handling
 
 from osmclient.common.exceptions import NotFound
 from osmclient.common.exceptions import ClientException
 
 from osmclient.common.exceptions import NotFound
 from osmclient.common.exceptions import ClientException
+from osmclient.common.exceptions import OsmHttpException
 from osmclient.common import utils
 import json
 import magic
 from osmclient.common import utils
 import json
 import magic
@@ -47,10 +48,10 @@ class Nsd(object):
         filter_string = ''
         if filter:
             filter_string = '?{}'.format(filter)
         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))
         #print(yaml.safe_dump(resp))
         if resp:
         #print(yaml.safe_dump(resp))
         if resp:
-            return resp
+            return json.loads(resp)
         return list()
 
     def get(self, name):
         return list()
 
     def get(self, name):
@@ -72,10 +73,10 @@ class Nsd(object):
         nsd = self.get(name)
         # It is redundant, since the previous one already gets the whole nsdinfo
         # The only difference is that a different primitive is exercised
         nsd = self.get(name)
         # It is redundant, since the previous one already gets the whole nsdinfo
         # The only difference is that a different primitive is exercised
-        resp = self._http.get_cmd('{}/{}'.format(self._apiBase, nsd['_id']))
+        _, resp = self._http.get2_cmd('{}/{}'.format(self._apiBase, nsd['_id']))
         #print(yaml.safe_dump(resp))
         if resp:
         #print(yaml.safe_dump(resp))
         if resp:
-            return resp
+            return json.loads(resp)
         raise NotFound("nsd {} not found".format(name))
 
     def get_thing(self, name, thing, filename):
         raise NotFound("nsd {} not found".format(name))
 
     def get_thing(self, name, thing, filename):
@@ -87,18 +88,18 @@ class Nsd(object):
         http_code, resp = self._http.get2_cmd('{}/{}/{}'.format(self._apiBase, nsd['_id'], thing))
         #print('HTTP CODE: {}'.format(http_code))
         #print('RESP: {}'.format(resp))
         http_code, resp = self._http.get2_cmd('{}/{}/{}'.format(self._apiBase, nsd['_id'], thing))
         #print('HTTP CODE: {}'.format(http_code))
         #print('RESP: {}'.format(resp))
-        if http_code in (200, 201, 202, 204):
-            if resp:
-                #store in a file
-                return resp
-        else:
-            msg = ""
-            if resp:
-                try:
-                    msg = json.loads(resp)
-                except ValueError:
-                    msg = resp
-            raise ClientException("failed to get {} from {} - {}".format(thing, name, msg))
+        #if http_code in (200, 201, 202, 204):
+        if resp:
+            #store in a file
+            return json.loads(resp)
+        #else:
+        #    msg = ""
+        #    if resp:
+        #        try:
+        #            msg = json.loads(resp)
+        #        except ValueError:
+        #            msg = resp
+        #    raise ClientException("failed to get {} from {} - {}".format(thing, name, msg))
 
     def get_descriptor(self, name, filename):
         self._logger.debug("")
 
     def get_descriptor(self, name, filename):
         self._logger.debug("")
@@ -133,7 +134,7 @@ class Nsd(object):
                     msg = json.loads(resp)
                 except ValueError:
                     msg = resp
                     msg = json.loads(resp)
                 except ValueError:
                     msg = resp
-            raise ClientException("failed to delete nsd {} - {}".format(name, msg))
+            raise OsmHttpException("failed to delete nsd {} - {}".format(name, msg))
 
     def create(self, filename, overwrite=None, update_endpoint=None):
         self._logger.debug("")
 
     def create(self, filename, overwrite=None, update_endpoint=None):
         self._logger.debug("")
@@ -175,23 +176,22 @@ class Nsd(object):
             http_code, resp = self._http.post_cmd(endpoint=endpoint, filename=filename)
         #print('HTTP CODE: {}'.format(http_code))
         #print('RESP: {}'.format(resp))
             http_code, resp = self._http.post_cmd(endpoint=endpoint, filename=filename)
         #print('HTTP CODE: {}'.format(http_code))
         #print('RESP: {}'.format(resp))
-        if http_code in (200, 201, 202, 204):
+        if http_code in (200, 201, 202):
             if resp:
                 resp = json.loads(resp)
             if not resp or 'id' not in resp:
             if resp:
                 resp = json.loads(resp)
             if not resp or 'id' not in resp:
-                raise ClientException('unexpected response from server - {}'.format(
-                                      resp))
+                raise OsmHttpException('unexpected response from server - {}'.format(resp))
             print(resp['id'])
         elif http_code == 204:
             print('Updated')
             print(resp['id'])
         elif http_code == 204:
             print('Updated')
-        else:
-            msg = "Error {}".format(http_code)
-            if resp:
-                try:
-                    msg = "{} - {}".format(msg, json.loads(resp))
-                except ValueError:
-                    msg = "{} - {}".format(msg, resp)
-            raise ClientException("failed to create/update nsd - {}".format(msg))
+        else:
+            msg = "Error {}".format(http_code)
+            if resp:
+                try:
+                    msg = "{} - {}".format(msg, json.loads(resp))
+                except ValueError:
+                    msg = "{} - {}".format(msg, resp)
+            raise ClientException("failed to create/update nsd - {}".format(msg))
 
     def update(self, name, filename):
         self._logger.debug("")
 
     def update(self, name, filename):
         self._logger.debug("")
index c01b4e9..b582ae1 100644 (file)
@@ -22,6 +22,7 @@ from osmclient.common import utils
 from osmclient.common import wait as WaitForStatus
 from osmclient.common.exceptions import ClientException
 from osmclient.common.exceptions import NotFound
 from osmclient.common import wait as WaitForStatus
 from osmclient.common.exceptions import ClientException
 from osmclient.common.exceptions import NotFound
+from osmclient.common.exceptions import OsmHttpException
 import yaml
 import json
 import logging
 import yaml
 import json
 import logging
@@ -62,9 +63,9 @@ class Nsi(object):
         filter_string = ''
         if filter:
             filter_string = '?{}'.format(filter)
         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:
         if resp:
-            return resp
+            return json.loads(resp)
         return list()
 
     def get(self, name):
         return list()
 
     def get(self, name):
@@ -91,11 +92,11 @@ class Nsi(object):
                 if name == nsi['name']:
                     nsi_id = nsi['_id']
                     break
                 if name == nsi['name']:
                     nsi_id = nsi['_id']
                     break
-        resp = self._http.get_cmd('{}/{}'.format(self._apiBase, nsi_id))
+        _, 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:
         #resp = self._http.get_cmd('{}/{}/nsd_content'.format(self._apiBase, nsi_id))
         #print(yaml.safe_dump(resp))
         if resp:
-            return resp
+            return json.loads(resp)
         raise NotFound("nsi {} not found".format(name))
 
     def delete(self, name, force=False, wait=False):
         raise NotFound("nsi {} not found".format(name))
 
     def delete(self, name, force=False, wait=False):
@@ -125,7 +126,7 @@ class Nsi(object):
                     msg = json.loads(resp)
                 except ValueError:
                     msg = resp
                     msg = json.loads(resp)
                 except ValueError:
                     msg = resp
-            raise ClientException("failed to delete nsi {} - {}".format(name, msg))
+            raise OsmHttpException("failed to delete nsi {} - {}".format(name, msg))
 
     def create(self, nst_name, nsi_name, account, config=None,
                ssh_keys=None, description='default description',
 
     def create(self, nst_name, nsi_name, account, config=None,
                ssh_keys=None, description='default description',
@@ -226,33 +227,33 @@ 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,
                           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))
             #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'))
+            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,
                     nst_name,
                     str(exc))
         except ClientException as exc:
             message="failed to create nsi: {} nst: {}\nerror:\n{}".format(
                     nsi_name,
                     nst_name,
                     str(exc))
-            raise ClientException(message)
+            raise OsmHttpException(message)
 
     def list_op(self, name, filter=None):
         """Returns the list of operations of a NSI
 
     def list_op(self, name, filter=None):
         """Returns the list of operations of a NSI
@@ -271,26 +272,26 @@ class Nsi(object):
                                                        filter_string) )
             #print('HTTP CODE: {}'.format(http_code))
             #print('RESP: {}'.format(resp))
                                                        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:
             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,
                     str(exc))
         except ClientException as exc:
             message="failed to get operation list of NSI {}:\nerror:\n{}".format(
                     name,
                     str(exc))
-            raise ClientException(message)
+            raise OsmHttpException(message)
 
     def get_op(self, operationId):
         """Returns the status of an operation
 
     def get_op(self, operationId):
         """Returns the status of an operation
@@ -304,26 +305,26 @@ class Nsi(object):
             http_code, resp = self._http.get2_cmd('{}/{}'.format(self._apiBase, operationId))
             #print('HTTP CODE: {}'.format(http_code))
             #print('RESP: {}'.format(resp))
             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:
             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,
                     str(exc))
         except ClientException as exc:
             message="failed to get status of operation {}:\nerror:\n{}".format(
                     operationId,
                     str(exc))
-            raise ClientException(message)
+            raise OsmHttpException(message)
 
     def exec_op(self, name, op_name, op_data=None):
         """Executes an operation on a NSI
 
     def exec_op(self, name, op_name, op_data=None):
         """Executes an operation on a NSI
@@ -340,24 +341,24 @@ 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))
             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,
                     str(exc))
         except ClientException as exc:
             message="failed to exec operation {}:\nerror:\n{}".format(
                     name,
                     str(exc))
-            raise ClientException(message)
+            raise OsmHttpException(message)
 
 
index e75c8f5..f6a03f1 100644 (file)
@@ -20,6 +20,7 @@ OSM NST (Network Slice Template) API handling
 
 from osmclient.common.exceptions import NotFound
 from osmclient.common.exceptions import ClientException
 
 from osmclient.common.exceptions import NotFound
 from osmclient.common.exceptions import ClientException
+from osmclient.common.exceptions import OsmHttpException
 from osmclient.common import utils
 import json
 import magic
 from osmclient.common import utils
 import json
 import magic
@@ -45,10 +46,10 @@ class Nst(object):
         filter_string = ''
         if filter:
             filter_string = '?{}'.format(filter)
         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))
         #print(yaml.safe_dump(resp))
         if resp:
         #print(yaml.safe_dump(resp))
         if resp:
-            return resp
+            return json.loads(resp)
         return list()
 
     def get(self, name):
         return list()
 
     def get(self, name):
@@ -69,10 +70,10 @@ class Nst(object):
         nst = self.get(name)
         # It is redundant, since the previous one already gets the whole nstinfo
         # The only difference is that a different primitive is exercised
         nst = self.get(name)
         # It is redundant, since the previous one already gets the whole nstinfo
         # The only difference is that a different primitive is exercised
-        resp = self._http.get_cmd('{}/{}'.format(self._apiBase, nst['_id']))
+        _, resp = self._http.get2_cmd('{}/{}'.format(self._apiBase, nst['_id']))
         #print(yaml.safe_dump(resp))
         if resp:
         #print(yaml.safe_dump(resp))
         if resp:
-            return resp
+            return json.loads(resp)
         raise NotFound("nst {} not found".format(name))
 
     def get_thing(self, name, thing, filename):
         raise NotFound("nst {} not found".format(name))
 
     def get_thing(self, name, thing, filename):
@@ -83,18 +84,18 @@ class Nst(object):
         http_code, resp = self._http.get2_cmd('{}/{}/{}'.format(self._apiBase, nst['_id'], thing))
         #print('HTTP CODE: {}'.format(http_code))
         #print('RESP: {}'.format(resp))
         http_code, resp = self._http.get2_cmd('{}/{}/{}'.format(self._apiBase, nst['_id'], thing))
         #print('HTTP CODE: {}'.format(http_code))
         #print('RESP: {}'.format(resp))
-        if http_code in (200, 201, 202, 204):
-            if resp:
-                #store in a file
-                return resp
-        else:
-            msg = ""
-            if resp:
-                try:
-                    msg = json.loads(resp)
-                except ValueError:
-                    msg = resp
-            raise ClientException("failed to get {} from {} - {}".format(thing, name, msg))
+        #if http_code in (200, 201, 202, 204):
+        if resp:
+            #store in a file
+            return json.loads(resp)
+        #else:
+        #    msg = ""
+        #    if resp:
+        #        try:
+        #            msg = json.loads(resp)
+        #        except ValueError:
+        #            msg = resp
+        #    raise ClientException("failed to get {} from {} - {}".format(thing, name, msg))
 
     def get_descriptor(self, name, filename):
         self._logger.debug("")
 
     def get_descriptor(self, name, filename):
         self._logger.debug("")
@@ -129,7 +130,7 @@ class Nst(object):
                     resp = json.loads(resp)
                 except ValueError:
                     msg = resp
                     resp = json.loads(resp)
                 except ValueError:
                     msg = resp
-            raise ClientException("failed to delete nst {} - {}".format(name, msg))
+            raise OsmHttpException("failed to delete nst {} - {}".format(name, msg))
 
     def create(self, filename, overwrite=None, update_endpoint=None):
         self._logger.debug("")
 
     def create(self, filename, overwrite=None, update_endpoint=None):
         self._logger.debug("")
@@ -170,21 +171,20 @@ class Nst(object):
             http_code, resp = self._http.post_cmd(endpoint=endpoint, filename=filename)
         #print('HTTP CODE: {}'.format(http_code))
         #print('RESP: {}'.format(resp))
             http_code, resp = self._http.post_cmd(endpoint=endpoint, filename=filename)
         #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 = "Error {}".format(http_code)
-            if resp:
-                try:
-                    msg = "{} - {}".format(msg, json.loads(resp))
-                except ValueError:
-                    msg = "{} - {}".format(msg, resp)
-            raise ClientException("failed to create/update nst - {}".format(msg))
+        # if http_code in (200, 201, 202, 204):
+        if resp:
+            resp = json.loads(resp)
+        if not resp or 'id' not in resp:
+            raise OsmHttpException('unexpected response from server - {}'.format(resp))
+        print(resp['id'])
+        # else:
+        #     msg = "Error {}".format(http_code)
+        #     if resp:
+        #         try:
+        #             msg = "{} - {}".format(msg, json.loads(resp))
+        #         except ValueError:
+        #             msg = "{} - {}".format(msg, resp)
+        #     raise ClientException("failed to create/update nst - {}".format(msg))
 
     def update(self, name, filename):
         self._logger.debug("")
 
     def update(self, name, filename):
         self._logger.debug("")
index a52ba15..27b3ad4 100644 (file)
@@ -20,6 +20,7 @@ OSM package API handling
 
 #from os import stat
 #from os.path import basename
 
 #from os import stat
 #from os.path import basename
+from osmclient.common.exceptions import OsmHttpException
 from osmclient.common.exceptions import ClientException
 from osmclient.common.exceptions import NotFound
 from osmclient.common import utils
 from osmclient.common.exceptions import ClientException
 from osmclient.common.exceptions import NotFound
 from osmclient.common import utils
@@ -100,19 +101,18 @@ class Package(object):
         http_code, resp = self._http.post_cmd(endpoint=endpoint, filename=filename)
         #print('HTTP CODE: {}'.format(http_code))
         #print('RESP: {}'.format(resp))
         http_code, resp = self._http.post_cmd(endpoint=endpoint, filename=filename)
         #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("failed to upload package - {}".format(msg))
-
+        #if http_code in (200, 201, 202, 204):
+        if resp:
+            resp = json.loads(resp)
+        if not resp or 'id' not in resp:
+            raise OsmHttpException('unexpected response from server - {}'.format(
+                                   resp))
+        print(resp['id'])
+        # else:
+        #     msg = ""
+        #     if resp:
+        #         try:
+        #              msg = json.loads(resp)
+        #         except ValueError:
+        #             msg = resp
+        #     raise ClientException("failed to upload package - {}".format(msg))
index 42fe40d..9b15ca7 100644 (file)
@@ -19,7 +19,7 @@ OSM pdud API handling
 """
 
 from osmclient.common.exceptions import NotFound
 """
 
 from osmclient.common.exceptions import NotFound
-from osmclient.common.exceptions import ClientException
+from osmclient.common.exceptions import OsmHttpException
 from osmclient.common import utils
 import json
 import logging
 from osmclient.common import utils
 import json
 import logging
@@ -43,9 +43,9 @@ class Pdu(object):
         filter_string = ''
         if filter:
             filter_string = '?{}'.format(filter)
         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:
         if resp:
-            return resp
+            return json.loads(resp)
         return list()
 
     def get(self, name):
         return list()
 
     def get(self, name):
@@ -66,10 +66,10 @@ class Pdu(object):
         pdud = self.get(name)
         # It is redundant, since the previous one already gets the whole pdudInfo
         # The only difference is that a different primitive is exercised
         pdud = self.get(name)
         # It is redundant, since the previous one already gets the whole pdudInfo
         # The only difference is that a different primitive is exercised
-        resp = self._http.get_cmd('{}/{}'.format(self._apiBase, pdud['_id']))
+        _, resp = self._http.get2_cmd('{}/{}'.format(self._apiBase, pdud['_id']))
         #print(yaml.safe_dump(resp))
         if resp:
         #print(yaml.safe_dump(resp))
         if resp:
-            return resp
+            return json.loads(resp)
         raise NotFound("pdu {} not found".format(name))
 
     def delete(self, name, force=False):
         raise NotFound("pdu {} not found".format(name))
 
     def delete(self, name, force=False):
@@ -93,7 +93,7 @@ class Pdu(object):
                     msg = json.loads(resp)
                 except ValueError:
                     msg = resp
                     msg = json.loads(resp)
                 except ValueError:
                     msg = resp
-            raise ClientException("failed to delete pdu {} - {}".format(name, msg))
+            raise OsmHttpException("failed to delete pdu {} - {}".format(name, msg))
 
     def create(self, pdu, update_endpoint=None):
         self._logger.debug("")
 
     def create(self, pdu, update_endpoint=None):
         self._logger.debug("")
@@ -111,21 +111,21 @@ class Pdu(object):
             http_code, resp = self._http.post_cmd(endpoint=endpoint, postfields_dict=pdu)
         #print('HTTP CODE: {}'.format(http_code))
         #print('RESP: {}'.format(resp))
             http_code, resp = self._http.post_cmd(endpoint=endpoint, postfields_dict=pdu)
         #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 = "Error {}".format(http_code)
-            if resp:
-                try:
-                    msg = "{} - {}".format(msg, json.loads(resp))
-                except ValueError:
-                    msg = "{} - {}".format(msg, resp)
-            raise ClientException("failed to create/update pdu - {}".format(msg))
+        #if http_code in (200, 201, 202, 204):
+        if resp:
+            resp = json.loads(resp)
+        if not resp or 'id' not in resp:
+            raise OsmHttpException('unexpected response from server: '.format(
+                                  resp))
+        print(resp['id'])
+        #else:
+        #    msg = "Error {}".format(http_code)
+        #    if resp:
+        #        try:
+        #            msg = "{} - {}".format(msg, json.loads(resp))
+        #        except ValueError:
+        #            msg = "{} - {}".format(msg, resp)
+        #    raise ClientException("failed to create/update pdu - {}".format(msg))
 
     def update(self, name, filename):
         self._logger.debug("")
 
     def update(self, name, filename):
         self._logger.debug("")
index 8f119e8..39d2453 100644 (file)
@@ -20,8 +20,8 @@ OSM project mgmt API
 """
 
 from osmclient.common import utils
 """
 
 from osmclient.common import utils
-from osmclient.common.exceptions import ClientException
 from osmclient.common.exceptions import NotFound
 from osmclient.common.exceptions import NotFound
+from osmclient.common.exceptions import OsmHttpException
 import json
 import logging
 
 import json
 import logging
 
@@ -46,21 +46,21 @@ class Project(object):
                                               postfields_dict=project)
         #print('HTTP CODE: {}'.format(http_code))
         #print('RESP: {}'.format(resp))
                                               postfields_dict=project)
         #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("failed to create project {} - {}".format(name, msg))
+        #if http_code in (200, 201, 202, 204):
+        if resp:
+            resp = json.loads(resp)
+        if not resp or 'id' not in resp:
+            raise OsmHttpException('unexpected response from server - {}'.format(
+                                  resp))
+        print(resp['id'])
+        #else:
+        #    msg = ""
+        #    if resp:
+        #        try:
+        #            msg = json.loads(resp)
+        #        except ValueError:
+        #            msg = resp
+        #    raise ClientException("failed to create project {} - {}".format(name, msg))
 
     def update(self, project, project_changes):
         """Updates an OSM project identified by name
 
     def update(self, project, project_changes):
         """Updates an OSM project identified by name
@@ -76,19 +76,19 @@ class Project(object):
             if resp:
                 resp = json.loads(resp)
             if not resp or 'id' not in resp:
             if resp:
                 resp = json.loads(resp)
             if not resp or 'id' not in resp:
-                raise ClientException('unexpected response from server - {}'.format(
+                raise OsmHttpException('unexpected response from server - {}'.format(
                                       resp))
             print(resp['id'])
         elif http_code == 204:
             print("Updated")
                                       resp))
             print(resp['id'])
         elif http_code == 204:
             print("Updated")
-        else:
-            msg = ""
-            if resp:
-                try:
-                    msg = json.loads(resp)
-                except ValueError:
-                    msg = resp
-            raise ClientException("failed to update project {} - {}".format(project, msg))
+        #else:
+        #    msg = ""
+        #    if resp:
+        #        try:
+        #            msg = json.loads(resp)
+        #        except ValueError:
+        #            msg = resp
+        #    raise ClientException("failed to update project {} - {}".format(project, msg))
 
     def delete(self, name, force=False):
         """Deletes an OSM project identified by name
 
     def delete(self, name, force=False):
         """Deletes an OSM project identified by name
@@ -116,7 +116,7 @@ class Project(object):
                     msg = json.loads(resp)
                 except ValueError:
                     msg = resp
                     msg = json.loads(resp)
                 except ValueError:
                     msg = resp
-            raise ClientException("failed to delete project {} - {}".format(name, msg))
+            raise OsmHttpException("failed to delete project {} - {}".format(name, msg))
 
     def list(self, filter=None):
         """Returns the list of OSM projects
 
     def list(self, filter=None):
         """Returns the list of OSM projects
@@ -126,10 +126,10 @@ class Project(object):
         filter_string = ''
         if filter:
             filter_string = '?{}'.format(filter)
         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))
         #print('RESP: {}'.format(resp))
         if resp:
         #print('RESP: {}'.format(resp))
         if resp:
-            return resp
+            return json.loads(resp)
         return list()
 
     def get(self, name):
         return list()
 
     def get(self, name):
index a8d8f17..1f487de 100644 (file)
@@ -17,6 +17,7 @@ OSM Repo API handling
 """
 
 from osmclient.common import utils
 """
 
 from osmclient.common import utils
+from osmclient.common.exceptions import OsmHttpException
 from osmclient.common.exceptions import ClientException
 from osmclient.common.exceptions import NotFound
 import json
 from osmclient.common.exceptions import ClientException
 from osmclient.common.exceptions import NotFound
 import json
@@ -37,21 +38,21 @@ class Repo(object):
                                        postfields_dict=repo)
         #print 'HTTP CODE: {}'.format(http_code)
         #print 'RESP: {}'.format(resp)
                                        postfields_dict=repo)
         #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("failed to add repo {} - {}".format(name, msg))
+        #if http_code in (200, 201, 202, 204):
+        if resp:
+            resp = json.loads(resp)
+        if not resp or 'id' not in resp:
+            raise OsmHttpException('unexpected response from server - {}'.format(
+                                  resp))
+        print(resp['id'])
+        #else:
+        #    msg = ""
+        #    if resp:
+        #        try:
+        #            msg = json.loads(resp)
+        #        except ValueError:
+        #            msg = resp
+        #    raise ClientException("failed to add repo {} - {}".format(name, msg))
 
     def update(self, name, repo):
         self._client.get_token()
 
     def update(self, name, repo):
         self._client.get_token()
@@ -60,16 +61,16 @@ class Repo(object):
                                        postfields_dict=repo)
         # print 'HTTP CODE: {}'.format(http_code)
         # print 'RESP: {}'.format(resp)
                                        postfields_dict=repo)
         # print 'HTTP CODE: {}'.format(http_code)
         # print 'RESP: {}'.format(resp)
-        if http_code in (200, 201, 202, 204):
-            pass
-        else:
-            msg = ""
-            if resp:
-                try:
-                    msg = json.loads(resp)
-                except ValueError:
-                    msg = resp
-            raise ClientException("failed to update repo {} - {}".format(name, msg))
+        #if http_code in (200, 201, 202, 204):
+        #    pass
+        #else:
+        #    msg = ""
+        #    if resp:
+        #        try:
+        #            msg = json.loads(resp)
+        #        except ValueError:
+        #            msg = resp
+        #    raise ClientException("failed to update repo {} - {}".format(name, msg))
 
     def get_id(self, name):
         """Returns a repo id from a repo name
 
     def get_id(self, name):
         """Returns a repo id from a repo name
@@ -112,9 +113,9 @@ class Repo(object):
         filter_string = ''
         if filter:
             filter_string = '?{}'.format(filter)
         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:
         if resp:
-            return resp
+            return json.loads(resp)
         return list()
 
     def get(self, name):
         return list()
 
     def get(self, name):
@@ -124,10 +125,11 @@ class Repo(object):
         repo_id = name
         if not utils.validate_uuid4(name):
             repo_id = self.get_id(name)
         repo_id = name
         if not utils.validate_uuid4(name):
             repo_id = self.get_id(name)
-        resp = self._http.get_cmd('{}/{}'.format(self._apiBase,repo_id))
-        if not resp or '_id' not in resp:
-            raise ClientException('failed to get repo info: '.format(resp))
-        else:
-            return resp
+        _, resp = self._http.get2_cmd('{}/{}'.format(self._apiBase,repo_id))
+#        if not resp or '_id' not in resp:
+#            raise ClientException('failed to get repo info: '.format(resp))
+#        else:
+        if resp:
+            return json.loads(resp)
         raise NotFound("Repo {} not found".format(name))
 
         raise NotFound("Repo {} not found".format(name))
 
index 404784a..733e00f 100644 (file)
@@ -23,6 +23,7 @@ OSM role mgmt API
 from osmclient.common import utils
 from osmclient.common.exceptions import ClientException
 from osmclient.common.exceptions import NotFound
 from osmclient.common import utils
 from osmclient.common.exceptions import ClientException
 from osmclient.common.exceptions import NotFound
+from osmclient.common.exceptions import OsmHttpException
 import json
 import yaml
 import logging
 import json
 import yaml
 import logging
@@ -68,21 +69,21 @@ class Role(object):
                                               postfields_dict=role)
         # print('HTTP CODE: {}'.format(http_code))
         # print('RESP: {}'.format(resp))
                                               postfields_dict=role)
         # 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("Failed to create role {} - {}".format(name, msg))
+        #if http_code in (200, 201, 202, 204):
+        if resp:
+            resp = json.loads(resp)
+        if not resp or 'id' not in resp:
+            raise OsmHttpException('Unexpected response from server - {}'.format(
+                                  resp))
+        print(resp['id'])
+        #else:
+        #    msg = ""
+        #    if resp:
+        #        try:
+        #            msg = json.loads(resp)
+        #        except ValueError:
+        #            msg = resp
+        #    raise ClientException("Failed to create role {} - {}".format(name, msg))
 
     def update(self, name, new_name, permissions, add=None, remove=None):
         """
 
     def update(self, name, new_name, permissions, add=None, remove=None):
         """
@@ -155,19 +156,19 @@ class Role(object):
             if resp:
                 resp = json.loads(resp)
             if not resp or 'id' not in resp:
             if resp:
                 resp = json.loads(resp)
             if not resp or 'id' not in resp:
-                raise ClientException('Unexpected response from server - {}'.format(
+                raise OsmHttpException('Unexpected response from server - {}'.format(
                                       resp))
             print(resp['id'])
         elif http_code == 204:
             print("Updated")
                                       resp))
             print(resp['id'])
         elif http_code == 204:
             print("Updated")
-        else:
-            msg = ""
-            if resp:
-                try:
-                    msg = json.loads(resp)
-                except ValueError:
-                    msg = resp
-            raise ClientException("Failed to update role {} - {}".format(name, msg))
+        #else:
+        #    msg = ""
+        #    if resp:
+        #        try:
+        #            msg = json.loads(resp)
+        #        except ValueError:
+        #            msg = resp
+        #    raise ClientException("Failed to update role {} - {}".format(name, msg))
 
     def delete(self, name, force=False):
         """
 
     def delete(self, name, force=False):
         """
@@ -200,7 +201,7 @@ class Role(object):
                     msg = json.loads(resp)
                 except ValueError:
                     msg = resp
                     msg = json.loads(resp)
                 except ValueError:
                     msg = resp
-            raise ClientException("Failed to delete role {} - {}".format(name, msg))
+            raise OsmHttpException("Failed to delete role {} - {}".format(name, msg))
 
     def list(self, filter=None):
         """
 
     def list(self, filter=None):
         """
@@ -214,10 +215,10 @@ class Role(object):
         filter_string = ''
         if filter:
             filter_string = '?{}'.format(filter)
         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))
         # print('RESP: {}'.format(resp))
         if resp:
         # print('RESP: {}'.format(resp))
         if resp:
-            return resp
+            return json.loads(resp)
         return list()
 
     def get(self, name):
         return list()
 
     def get(self, name):
index b2bbc37..2a4d409 100644 (file)
@@ -20,8 +20,8 @@ OSM SDN controller API handling
 
 from osmclient.common import utils
 from osmclient.common import wait as WaitForStatus
 
 from osmclient.common import utils
 from osmclient.common import wait as WaitForStatus
-from osmclient.common.exceptions import ClientException
 from osmclient.common.exceptions import NotFound
 from osmclient.common.exceptions import NotFound
+from osmclient.common.exceptions import OsmHttpException
 import json
 import logging
 
 import json
 import logging
 
@@ -67,26 +67,28 @@ class SdnController(object):
     def create(self, name, sdn_controller, wait=False):
         self._logger.debug("")
         self._client.get_token()
     def create(self, name, sdn_controller, wait=False):
         self._logger.debug("")
         self._client.get_token()
-        http_code, resp = self._http.post_cmd(endpoint=self._apiBase, postfields_dict=sdn_controller)
-        # 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 SDNC instance creation
-                self._wait(resp.get('id'))
-            print(resp['id'])
-        else:
-            msg = ""
-            if resp:
-                try:
-                    msg = json.loads(resp)
-                except ValueError:
-                    msg = resp
-            raise ClientException("failed to create SDN controller {} - {}".format(name, msg))
+        http_code, resp = self._http.post_cmd(endpoint=self._apiBase,
+                                       postfields_dict=sdn_controller)
+        #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 OsmHttpException('unexpected response from server - {}'.format(
+                                  resp))
+        if wait:
+            # Wait for status for SDNC instance creation
+            self._wait(resp.get('id'))
+        print(resp['id'])
+        #else:
+        #    msg = ""
+        #    if resp:
+        #        try:
+        #            msg = json.loads(resp)
+        #        except ValueError:
+        #            msg = resp
+        #    raise ClientException("failed to create SDN controller {} - {}".format(name, msg))
 
     def update(self, name, sdn_controller, wait=False):
         self._logger.debug("")
 
     def update(self, name, sdn_controller, wait=False):
         self._logger.debug("")
@@ -97,23 +99,23 @@ class SdnController(object):
                                                postfields_dict=sdn_controller)
         # print('HTTP CODE: {}'.format(http_code))
         # print('RESP: {}'.format(resp))
                                                postfields_dict=sdn_controller)
         # print('HTTP CODE: {}'.format(http_code))
         # print('RESP: {}'.format(resp))
-        if http_code in (200, 201, 202, 204):
-            if wait:
-                # In this case, 'resp' always returns None, so 'resp['id']' cannot be used.
-                # Use the previously obtained id instead.
-                wait_id = sdnc_id_for_wait
-                # Wait for status for VI instance update
-                self._wait(wait_id)
-            else:
-                pass
+        #if http_code in (200, 201, 202, 204):
+        if wait:
+            # In this case, 'resp' always returns None, so 'resp['id']' cannot be used.
+            # Use the previously obtained id instead.
+            wait_id = sdnc_id_for_wait
+            # Wait for status for VI instance update
+            self._wait(wait_id)
         else:
         else:
-            msg = ""
-            if resp:
-                try:
-                    msg = json.loads(resp)
-                except ValueError:
-                    msg = resp
-            raise ClientException("failed to update SDN controller {} - {}".format(name, msg))
+            pass
+        #else:
+        #    msg = ""
+        #    if resp:
+        #        try:
+        #            msg = json.loads(resp)
+        #        except ValueError:
+        #            msg = resp
+        #    raise ClientException("failed to update SDN controller {} - {}".format(name, msg))
 
     def delete(self, name, force=False, wait=False):
         self._logger.debug("")
 
     def delete(self, name, force=False, wait=False):
         self._logger.debug("")
@@ -144,7 +146,7 @@ class SdnController(object):
                     msg = json.loads(resp)
                 except ValueError:
                     msg = resp
                     msg = json.loads(resp)
                 except ValueError:
                     msg = resp
-            raise ClientException("failed to delete SDN controller {} - {}".format(name, msg))
+            raise OsmHttpException("failed to delete SDN controller {} - {}".format(name, msg))
 
     def list(self, filter=None):
         """Returns a list of SDN controllers
 
     def list(self, filter=None):
         """Returns a list of SDN controllers
@@ -154,10 +156,10 @@ class SdnController(object):
         filter_string = ''
         if filter:
             filter_string = '?{}'.format(filter)
         filter_string = ''
         if filter:
             filter_string = '?{}'.format(filter)
-        resp = self._http.get_cmd('{}{}'.format(self._apiBase, filter_string))
-        # print('RESP: {}'.format(resp))
+        _, resp = self._http.get2_cmd('{}{}'.format(self._apiBase,filter_string))
+        #print('RESP: {}'.format(resp))
         if resp:
         if resp:
-            return resp
+            return json.loads(resp)
         return list()
 
     def get(self, name):
         return list()
 
     def get(self, name):
index 6c10325..276c450 100644 (file)
@@ -22,6 +22,7 @@ OSM user mgmt API
 from osmclient.common import utils
 from osmclient.common.exceptions import ClientException
 from osmclient.common.exceptions import NotFound
 from osmclient.common import utils
 from osmclient.common.exceptions import ClientException
 from osmclient.common.exceptions import NotFound
+from osmclient.common.exceptions import OsmHttpException
 import json
 import logging
 
 import json
 import logging
 
@@ -68,21 +69,21 @@ class User(object):
                                        postfields_dict=user)
         #print('HTTP CODE: {}'.format(http_code))
         #print('RESP: {}'.format(resp))
                                        postfields_dict=user)
         #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("failed to create user {} - {}".format(name, msg))
+        #if http_code in (200, 201, 202, 204):
+        if resp:
+            resp = json.loads(resp)
+        if not resp or 'id' not in resp:
+            raise OsmHttpException('unexpected response from server - {}'.format(
+                                  resp))
+        print(resp['id'])
+        #else:
+        #    msg = ""
+        #    if resp:
+        #        try:
+        #            msg = json.loads(resp)
+        #        except ValueError:
+        #            msg = resp
+        #    raise ClientException("failed to create user {} - {}".format(name, msg))
 
     def update(self, name, user):
         """Updates an existing OSM user identified by name
 
     def update(self, name, user):
         """Updates an existing OSM user identified by name
@@ -152,19 +153,19 @@ class User(object):
             if resp:
                 resp = json.loads(resp)
             if not resp or 'id' not in resp:
             if resp:
                 resp = json.loads(resp)
             if not resp or 'id' not in resp:
-                raise ClientException('unexpected response from server - {}'.format(
+                raise OsmHttpException('unexpected response from server - {}'.format(
                                       resp))
             print(resp['id'])
         elif http_code == 204:
             print('Updated')
                                       resp))
             print(resp['id'])
         elif http_code == 204:
             print('Updated')
-        else:
-            msg = ""
-            if resp:
-                try:
-                    msg = json.loads(resp)
-                except ValueError:
-                    msg = resp
-            raise ClientException("failed to update user {} - {}".format(name, msg))
+        #else:
+        #    msg = ""
+        #    if resp:
+        #        try:
+        #            msg = json.loads(resp)
+        #        except ValueError:
+        #            msg = resp
+        #    raise ClientException("failed to update user {} - {}".format(name, msg))
 
     def delete(self, name, force=False):
         """Deletes an existing OSM user identified by name
 
     def delete(self, name, force=False):
         """Deletes an existing OSM user identified by name
@@ -192,7 +193,7 @@ class User(object):
                     msg = json.loads(resp)
                 except ValueError:
                     msg = resp
                     msg = json.loads(resp)
                 except ValueError:
                     msg = resp
-            raise ClientException("failed to delete user {} - {}".format(name, msg))
+            raise OsmHttpException("failed to delete user {} - {}".format(name, msg))
 
     def list(self, filter=None):
         """Returns the list of OSM users
 
     def list(self, filter=None):
         """Returns the list of OSM users
@@ -202,10 +203,10 @@ class User(object):
         filter_string = ''
         if filter:
             filter_string = '?{}'.format(filter)
         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))
         #print('RESP: {}'.format(resp))
         if resp:
         #print('RESP: {}'.format(resp))
         if resp:
-            return resp
+            return json.loads(resp)
         return list()
 
     def get(self, name):
         return list()
 
     def get(self, name):
index 43911a6..b6f1614 100644 (file)
@@ -22,6 +22,7 @@ from osmclient.common import utils
 from osmclient.common import wait as WaitForStatus
 from osmclient.common.exceptions import ClientException
 from osmclient.common.exceptions import NotFound
 from osmclient.common import wait as WaitForStatus
 from osmclient.common.exceptions import ClientException
 from osmclient.common.exceptions import NotFound
+from osmclient.common.exceptions import OsmHttpException
 import yaml
 import json
 import logging
 import yaml
 import json
 import logging
@@ -94,24 +95,24 @@ class Vim(object):
                                        postfields_dict=vim_account)
         #print('HTTP CODE: {}'.format(http_code))
         #print('RESP: {}'.format(resp))
                                        postfields_dict=vim_account)
         #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 VIM instance creation
-                self._wait(resp.get('id'))
-            print(resp['id'])
-        else:
-            msg = ""
-            if resp:
-                try:
-                    msg = json.loads(resp)
-                except ValueError:
-                    msg = resp
-            raise ClientException("failed to create vim {} - {}".format(name, msg))
+        #if http_code in (200, 201, 202, 204):
+        if resp:
+            resp = json.loads(resp)
+        if not resp or 'id' not in resp:
+            raise OsmHttpException('unexpected response from server - {}'.format(
+                                  resp))
+        if wait:
+            # Wait for status for VIM instance creation
+            self._wait(resp.get('id'))
+        print(resp['id'])
+        #else:
+        #    msg = ""
+        #    if resp:
+        #        try:
+        #            msg = json.loads(resp)
+        #        except ValueError:
+        #            msg = resp
+        #    raise ClientException("failed to create vim {} - {}".format(name, msg))
 
     def update(self, vim_name, vim_account, sdn_controller, sdn_port_mapping, wait=False):
         self._logger.debug("")
 
     def update(self, vim_name, vim_account, sdn_controller, sdn_port_mapping, wait=False):
         self._logger.debug("")
@@ -138,23 +139,23 @@ class Vim(object):
                                        postfields_dict=vim_account)
         # print('HTTP CODE: {}'.format(http_code))
         # print('RESP: {}'.format(resp))
                                        postfields_dict=vim_account)
         # print('HTTP CODE: {}'.format(http_code))
         # print('RESP: {}'.format(resp))
-        if http_code in (200, 201, 202, 204):
-            if wait:
-                # In this case, 'resp' always returns None, so 'resp['id']' cannot be used.
-                # Use the previously obtained id instead.
-                wait_id = vim_id_for_wait
-                # Wait for status for VI instance update
-                self._wait(wait_id)
-            else:
-                pass
+        #if http_code in (200, 201, 202, 204):
+        if wait:
+            # In this case, 'resp' always returns None, so 'resp['id']' cannot be used.
+            # Use the previously obtained id instead.
+            wait_id = vim_id_for_wait
+            # Wait for status for VI instance update
+            self._wait(wait_id)
         else:
         else:
-            msg = ""
-            if resp:
-                try:
-                    msg = json.loads(resp)
-                except ValueError:
-                    msg = resp
-            raise ClientException("failed to update vim {} - {}".format(vim_name, msg))
+            pass
+        #else:
+        #    msg = ""
+        #    if resp:
+        #        try:
+        #            msg = json.loads(resp)
+        #        except ValueError:
+        #            msg = resp
+        #    raise ClientException("failed to update vim {} - {}".format(vim_name, msg))
 
     def update_vim_account_dict(self, vim_account, vim_access):
         self._logger.debug("")
 
     def update_vim_account_dict(self, vim_account, vim_access):
         self._logger.debug("")
@@ -209,7 +210,7 @@ class Vim(object):
                     msg = json.loads(resp)
                 except ValueError:
                     msg = resp
                     msg = json.loads(resp)
                 except ValueError:
                     msg = resp
-            raise ClientException("failed to delete vim {} - {}".format(vim_name, msg))
+            raise OsmHttpException("failed to delete vim {} - {}".format(vim_name, msg))
 
     def list(self, filter=None):
         """Returns a list of VIM accounts
 
     def list(self, filter=None):
         """Returns a list of VIM accounts
@@ -219,11 +220,11 @@ class Vim(object):
         filter_string = ''
         if filter:
             filter_string = '?{}'.format(filter)
         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 not resp:
             return list()
         vim_accounts = []
         if not resp:
             return list()
         vim_accounts = []
-        for datacenter in resp:
+        for datacenter in json.loads(resp):
             vim_accounts.append({"name": datacenter['name'], "uuid": datacenter['_id']
                         if '_id' in datacenter else None})
         return vim_accounts
             vim_accounts.append({"name": datacenter['name'], "uuid": datacenter['_id']
                         if '_id' in datacenter else None})
         return vim_accounts
@@ -236,11 +237,12 @@ class Vim(object):
         vim_id = name
         if not utils.validate_uuid4(name):
             vim_id = self.get_id(name)
         vim_id = name
         if not utils.validate_uuid4(name):
             vim_id = self.get_id(name)
-        resp = self._http.get_cmd('{}/{}'.format(self._apiBase,vim_id))
-        if not resp or '_id' not in resp:
-            raise ClientException('failed to get vim info: '.format(
-                                  resp))
-        else:
-            return resp
+        _, resp = self._http.get2_cmd('{}/{}'.format(self._apiBase,vim_id))
+#        if not resp or '_id' not in resp:
+#            raise ClientException('failed to get vim info: '.format(
+#                                  resp))
+#        else:
+        if resp:
+            return json.loads(resp)
         raise NotFound("vim {} not found".format(name))
 
         raise NotFound("vim {} not found".format(name))
 
index 6aa44d8..d0c87b8 100644 (file)
@@ -21,7 +21,7 @@ OSM vnf API handling
 from osmclient.common import utils
 from osmclient.common.exceptions import NotFound
 import logging
 from osmclient.common import utils
 from osmclient.common.exceptions import NotFound
 import logging
-
+import json
 
 class Vnf(object):
 
 
 class Vnf(object):
 
@@ -49,10 +49,10 @@ class Vnf(object):
                 filter_string += ',nsr-id-ref={}'.format(ns_instance['_id'])
             else:
                 filter_string = '?nsr-id-ref={}'.format(ns_instance['_id'])
                 filter_string += ',nsr-id-ref={}'.format(ns_instance['_id'])
             else:
                 filter_string = '?nsr-id-ref={}'.format(ns_instance['_id'])
-        resp = self._http.get_cmd('{}{}'.format(self._apiBase,filter_string))
+        _, resp = self._http.get2_cmd('{}{}'.format(self._apiBase,filter_string))
         #print('RESP: {}'.format(resp))
         if resp:
         #print('RESP: {}'.format(resp))
         if resp:
-            return resp
+            return json.loads(resp)
         return list()
 
     def get(self, name):
         return list()
 
     def get(self, name):
@@ -79,9 +79,9 @@ class Vnf(object):
                 if name == vnf['name']:
                     vnf_id = vnf['_id']
                     break
                 if name == vnf['name']:
                     vnf_id = vnf['_id']
                     break
-        resp = self._http.get_cmd('{}/{}'.format(self._apiBase, vnf_id))
+        _, resp = self._http.get2_cmd('{}/{}'.format(self._apiBase, vnf_id))
         #print('RESP: {}'.format(resp))
         if resp:
         #print('RESP: {}'.format(resp))
         if resp:
-            return resp
+            return json.loads(resp)
         raise NotFound("vnf {} not found".format(name))
 
         raise NotFound("vnf {} not found".format(name))
 
index ec54c95..8f0f3c6 100644 (file)
@@ -20,6 +20,7 @@ OSM vnfd API handling
 
 from osmclient.common.exceptions import NotFound
 from osmclient.common.exceptions import ClientException
 
 from osmclient.common.exceptions import NotFound
 from osmclient.common.exceptions import ClientException
+from osmclient.common.exceptions import OsmHttpException
 from osmclient.common import utils
 import json
 import magic
 from osmclient.common import utils
 import json
 import magic
@@ -47,9 +48,9 @@ class Vnfd(object):
         filter_string = ''
         if filter:
             filter_string = '?{}'.format(filter)
         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:
         if resp:
-            return resp
+            return json.loads(resp)
         return list()
 
     def get(self, name):
         return list()
 
     def get(self, name):
@@ -70,10 +71,10 @@ class Vnfd(object):
         vnfd = self.get(name)
         # It is redundant, since the previous one already gets the whole vnfpkginfo
         # The only difference is that a different primitive is exercised
         vnfd = self.get(name)
         # It is redundant, since the previous one already gets the whole vnfpkginfo
         # The only difference is that a different primitive is exercised
-        resp = self._http.get_cmd('{}/{}'.format(self._apiBase, vnfd['_id']))
+        _, resp = self._http.get2_cmd('{}/{}'.format(self._apiBase, vnfd['_id']))
         #print(yaml.safe_dump(resp))
         if resp:
         #print(yaml.safe_dump(resp))
         if resp:
-            return resp
+            return json.loads(resp)
         raise NotFound("vnfd {} not found".format(name))
 
     def get_thing(self, name, thing, filename):
         raise NotFound("vnfd {} not found".format(name))
 
     def get_thing(self, name, thing, filename):
@@ -84,18 +85,18 @@ class Vnfd(object):
         http_code, resp = self._http.get2_cmd('{}/{}/{}'.format(self._apiBase, vnfd['_id'], thing))
         #print('HTTP CODE: {}'.format(http_code))
         #print('RESP: {}'.format(resp))
         http_code, resp = self._http.get2_cmd('{}/{}/{}'.format(self._apiBase, vnfd['_id'], thing))
         #print('HTTP CODE: {}'.format(http_code))
         #print('RESP: {}'.format(resp))
-        if http_code in (200, 201, 202, 204):
-            if resp:
-                #store in a file
-                return resp
-        else:
-            msg = ""
-            if resp:
-                try:
-                    msg = json.loads(resp)
-                except ValueError:
-                    msg = resp
-            raise ClientException("failed to get {} from {} - {}".format(thing, name, msg))
+        #if http_code in (200, 201, 202, 204):
+        if resp:
+            #store in a file
+            return json.loads(resp)
+        #else:
+        #    msg = ""
+        #    if resp:
+        #        try:
+        #            msg = json.loads(resp)
+        #        except ValueError:
+        #            msg = resp
+        #    raise ClientException("failed to get {} from {} - {}".format(thing, name, msg))
 
     def get_descriptor(self, name, filename):
         self._logger.debug("")
 
     def get_descriptor(self, name, filename):
         self._logger.debug("")
@@ -131,7 +132,7 @@ class Vnfd(object):
                     msg = json.loads(resp)
                 except ValueError:
                     msg = resp
                     msg = json.loads(resp)
                 except ValueError:
                     msg = resp
-            raise ClientException("failed to delete vnfd {} - {}".format(name, msg))
+            raise OsmHttpException("failed to delete vnfd {} - {}".format(name, msg))
 
     def create(self, filename, overwrite=None, update_endpoint=None):
         self._logger.debug("")
 
     def create(self, filename, overwrite=None, update_endpoint=None):
         self._logger.debug("")
@@ -177,19 +178,18 @@ class Vnfd(object):
             if resp:
                 resp = json.loads(resp)
             if not resp or 'id' not in resp:
             if resp:
                 resp = json.loads(resp)
             if not resp or 'id' not in resp:
-                raise ClientException('unexpected response from server: '.format(
-                                      resp))
+                raise OsmHttpException('unexpected response from server: '.format(resp))
             print(resp['id'])
         elif http_code == 204:
             print('Updated')
             print(resp['id'])
         elif http_code == 204:
             print('Updated')
-        else:
-            msg = "Error {}".format(http_code)
-            if resp:
-                try:
-                    msg = "{} - {}".format(msg, json.loads(resp))
-                except ValueError:
-                    msg = "{} - {}".format(msg, resp)
-            raise ClientException("failed to create/update vnfd - {}".format(msg))
+        else:
+            msg = "Error {}".format(http_code)
+            if resp:
+                try:
+                    msg = "{} - {}".format(msg, json.loads(resp))
+                except ValueError:
+                    msg = "{} - {}".format(msg, resp)
+            raise ClientException("failed to create/update vnfd - {}".format(msg))
 
     def update(self, name, filename):
         self._logger.debug("")
 
     def update(self, name, filename):
         self._logger.debug("")
index 61c4dda..b5a03b8 100644 (file)
@@ -21,6 +21,7 @@ OSM wim API handling
 from osmclient.common import utils
 from osmclient.common import wait as WaitForStatus
 from osmclient.common.exceptions import ClientException
 from osmclient.common import utils
 from osmclient.common import wait as WaitForStatus
 from osmclient.common.exceptions import ClientException
+from osmclient.common.exceptions import OsmHttpException
 from osmclient.common.exceptions import NotFound
 import yaml
 import json
 from osmclient.common.exceptions import NotFound
 import yaml
 import json
@@ -88,24 +89,24 @@ class Wim(object):
                                        postfields_dict=wim_account)
         #print('HTTP CODE: {}'.format(http_code))
         #print('RESP: {}'.format(resp))
                                        postfields_dict=wim_account)
         #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 WIM instance creation
-                self._wait(resp.get('id'))
-            print(resp['id'])
-        else:
-            msg = ""
-            if resp:
-                try:
-                    msg = json.loads(resp)
-                except ValueError:
-                    msg = resp
-            raise ClientException("failed to create wim {} - {}".format(name, msg))
+        #if http_code in (200, 201, 202, 204):
+        if resp:
+            resp = json.loads(resp)
+        if not resp or 'id' not in resp:
+            raise OsmHttpException('unexpected response from server - {}'.format(
+                                  resp))
+        if wait:
+            # Wait for status for WIM instance creation
+            self._wait(resp.get('id'))
+        print(resp['id'])
+        #else:
+        #    msg = ""
+        #    if resp:
+        #        try:
+        #            msg = json.loads(resp)
+        #        except ValueError:
+        #            msg = resp
+        #    raise ClientException("failed to create wim {} - {}".format(name, msg))
 
     def update(self, wim_name, wim_account, wim_port_mapping=None, wait=False):
         self._logger.debug("")
 
     def update(self, wim_name, wim_account, wim_port_mapping=None, wait=False):
         self._logger.debug("")
@@ -129,23 +130,23 @@ class Wim(object):
                                        postfields_dict=wim_account)
         #print('HTTP CODE: {}'.format(http_code))
         #print('RESP: {}'.format(resp))
                                        postfields_dict=wim_account)
         #print('HTTP CODE: {}'.format(http_code))
         #print('RESP: {}'.format(resp))
-        if http_code in (200, 201, 202, 204):
-            if wait:
-                # In this case, 'resp' always returns None, so 'resp['id']' cannot be used.
-                # Use the previously obtained id instead.
-                wait_id = wim_id_for_wait
-                # Wait for status for WIM instance update
-                self._wait(wait_id)
-            else:
-                pass
+        #if http_code in (200, 201, 202, 204):
+        if wait:
+            # In this case, 'resp' always returns None, so 'resp['id']' cannot be used.
+            # Use the previously obtained id instead.
+            wait_id = wim_id_for_wait
+            # Wait for status for WIM instance update
+            self._wait(wait_id)
         else:
         else:
-            msg = ""
-            if resp:
-                try:
-                    msg = json.loads(resp)
-                except ValueError:
-                    msg = resp
-            raise ClientException("failed to update wim {} - {}".format(wim_name, msg))
+            pass
+        #else:
+        #    msg = ""
+        #    if resp:
+        #        try:
+        #            msg = json.loads(resp)
+        #        except ValueError:
+        #            msg = resp
+        #    raise ClientException("failed to update wim {} - {}".format(wim_name, msg))
 
     def update_wim_account_dict(self, wim_account, wim_input):
         self._logger.debug("")
 
     def update_wim_account_dict(self, wim_account, wim_input):
         self._logger.debug("")
@@ -202,7 +203,7 @@ class Wim(object):
                     msg = json.loads(resp)
                 except ValueError:
                     msg = resp
                     msg = json.loads(resp)
                 except ValueError:
                     msg = resp
-            raise ClientException("failed to delete wim {} - {}".format(wim_name, msg))
+            raise OsmHttpException("failed to delete wim {} - {}".format(wim_name, msg))
 
     def list(self, filter=None):
         """Returns a list of VIM accounts
 
     def list(self, filter=None):
         """Returns a list of VIM accounts
@@ -212,11 +213,11 @@ class Wim(object):
         filter_string = ''
         if filter:
             filter_string = '?{}'.format(filter)
         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 not resp:
             return list()
         wim_accounts = []
         if not resp:
             return list()
         wim_accounts = []
-        for datacenter in resp:
+        for datacenter in json.loads(resp):
             wim_accounts.append({"name": datacenter['name'], "uuid": datacenter['_id']
                         if '_id' in datacenter else None})
         return wim_accounts
             wim_accounts.append({"name": datacenter['name'], "uuid": datacenter['_id']
                         if '_id' in datacenter else None})
         return wim_accounts
@@ -229,11 +230,12 @@ class Wim(object):
         wim_id = name
         if not utils.validate_uuid4(name):
             wim_id = self.get_id(name)
         wim_id = name
         if not utils.validate_uuid4(name):
             wim_id = self.get_id(name)
-        resp = self._http.get_cmd('{}/{}'.format(self._apiBase,wim_id))
-        if not resp or '_id' not in resp:
-            raise ClientException('failed to get wim info: '.format(
-                                  resp))
-        else:
-            return resp
+        _, resp = self._http.get2_cmd('{}/{}'.format(self._apiBase,wim_id))
+#        if not resp or '_id' not in resp:
+#            raise ClientException('failed to get wim info: '.format(
+#                                  resp))
+#        else:
+        if resp:
+            return json.loads(resp)
         raise NotFound("wim {} not found".format(name))
 
         raise NotFound("wim {} not found".format(name))