Feature 11037 Change default NBI port
[osm/osmclient.git] / osmclient / sol005 / vnf.py
index 11d2057..12e789f 100644 (file)
@@ -20,55 +20,69 @@ OSM vnf API handling
 
 from osmclient.common import utils
 from osmclient.common.exceptions import NotFound
+import logging
+import json
 
 
 class Vnf(object):
-
     def __init__(self, http=None, client=None):
         self._http = http
         self._client = client
-        self._apiName = '/nslcm'
-        self._apiVersion = '/v1'
-        self._apiResource = '/vnfrs'
-        self._apiBase = '{}{}{}'.format(self._apiName,
-                                        self._apiVersion, self._apiResource)
+        self._logger = logging.getLogger("osmclient")
+        self._apiName = "/nslcm"
+        self._apiVersion = "/v1"
+        self._apiResource = "/vnfrs"
+        self._apiBase = "{}{}{}".format(
+            self._apiName, self._apiVersion, self._apiResource
+        )
 
-    def list(self, ns=None):
-        """Returns a list of VNF instances
-        """
-        filter_string = ''
+    def list(self, ns=None, filter=None):
+        """Returns a list of VNF instances"""
+        self._logger.debug("")
+        self._client.get_token()
+        filter_string = ""
+        if filter:
+            filter_string = "?{}".format(filter)
         if ns:
             ns_instance = self._client.ns.get(ns)
-            filter_string = '?nsr-id-ref={}'.format(ns_instance['_id'])
-        resp = self._http.get_cmd('{}{}'.format(self._apiBase,filter_string))
-        #print 'RESP: {}'.format(resp)
+            if filter_string:
+                filter_string += "&nsr-id-ref={}".format(ns_instance["_id"])
+            else:
+                filter_string = "?nsr-id-ref={}".format(ns_instance["_id"])
+        _, resp = self._http.get2_cmd("{}{}".format(self._apiBase, filter_string))
+        # print('RESP: {}'.format(resp))
         if resp:
-            return resp
+            return json.loads(resp)
         return list()
 
     def get(self, name):
-        """Returns a VNF instance based on name or id
-        """
+        """Returns a VNF instance based on name or id"""
+        self._logger.debug("")
+        self._client.get_token()
         if utils.validate_uuid4(name):
             for vnf in self.list():
-                if name == vnf['_id']:
+                if name == vnf["_id"]:
                     return vnf
         else:
             for vnf in self.list():
-                if name == vnf['name']:
+                if name == vnf.get("name"):
                     return vnf
         raise NotFound("vnf {} not found".format(name))
 
     def get_individual(self, name):
+        self._logger.debug("")
+        self._client.get_token()
         vnf_id = name
         if not utils.validate_uuid4(name):
             for vnf in self.list():
-                if name == vnf['name']:
-                    vnf_id = vnf['_id']
+                if name == vnf["name"]:
+                    vnf_id = vnf["_id"]
                     break
-        resp = self._http.get_cmd('{}/{}'.format(self._apiBase, vnf_id))
-        #print 'RESP: {}'.format(resp)
-        if resp:
-            return resp
-        raise NotFound("vnf {} not found".format(name))
-
+        try:
+            _, resp = self._http.get2_cmd("{}/{}".format(self._apiBase, vnf_id))
+            # print('RESP: {}'.format(resp))
+            if resp:
+                return json.loads(resp)
+        except NotFound:
+            raise NotFound("vnf '{}' not found".format(name))
+        raise NotFound("vnf '{}' not found".format(name))