Enable black and pylint in tox, and update code accordingly
[osm/osmclient.git] / osmclient / sol005 / vim.py
index e5bf399..72a0822 100644 (file)
@@ -70,21 +70,35 @@ class Vim(object):
         return ""
 
     def create(
-        self, name, vim_access, sdn_controller=None, sdn_port_mapping=None, wait=False
+        self,
+        name,
+        vim_access,
+        config={},
+        sdn_controller=None,
+        sdn_port_mapping=None,
+        wait=False,
     ):
+        vca_id = None
+
+        def get_vca_id(vca):
+            vca = self._client.vca.get(vca)
+            if vca is None:
+                raise NotFound("cannot find vca '{}'".format(vca))
+            return vca["_id"]
+
         self._logger.debug("")
         self._client.get_token()
+        if "vca" in vim_access:
+            vca_id = get_vca_id(vim_access["vca"])
         if "vim-type" not in vim_access:
             # 'openstack' not in vim_access['vim-type']):
             raise Exception("vim type not provided")
-
         vim_account = {}
         vim_account["name"] = name
         vim_account = self.update_vim_account_dict(vim_account, vim_access)
-
-        vim_config = {}
-        if "config" in vim_access and vim_access["config"] is not None:
-            vim_config = yaml.safe_load(vim_access["config"])
+        if vca_id:
+            vim_account["vca"] = vca_id
+        vim_config = config
         if sdn_controller:
             sdnc = self._client.sdnc.get(sdn_controller)
             vim_config["sdn-controller"] = sdnc["_id"]
@@ -119,22 +133,26 @@ class Vim(object):
         #    raise ClientException("failed to create vim {} - {}".format(name, msg))
 
     def update(
-        self, vim_name, vim_account, sdn_controller, sdn_port_mapping, wait=False
+        self,
+        vim_name,
+        vim_account,
+        config,
+        sdn_controller,
+        sdn_port_mapping,
+        wait=False,
     ):
         self._logger.debug("")
         self._client.get_token()
         vim = self.get(vim_name)
         vim_id_for_wait = self._get_id_for_wait(vim_name)
         vim_config = {}
-        if "config" in vim_account:
-            if vim_account.get("config") == "" and (sdn_controller or sdn_port_mapping):
+        if config is not None:
+            if not config and (sdn_controller or sdn_port_mapping):
+                # If config is empty (clearing config)
                 raise ClientException(
                     "clearing config is incompatible with updating SDN info"
                 )
-            if vim_account.get("config") == "":
-                vim_config = None
-            else:
-                vim_config = yaml.safe_load(vim_account["config"])
+            vim_config = config
         if sdn_controller == "":
             vim_config["sdn-controller"] = None
             vim_config["sdn-port-mapping"] = None
@@ -175,10 +193,10 @@ class Vim(object):
         self._logger.debug("")
         vim_account["vim_type"] = vim_access["vim-type"]
         vim_account["description"] = vim_access["description"]
-        vim_account["vim_url"] = vim_access["vim-url"]
-        vim_account["vim_user"] = vim_access["vim-username"]
-        vim_account["vim_password"] = vim_access["vim-password"]
-        vim_account["vim_tenant_name"] = vim_access["vim-tenant-name"]
+        vim_account["vim_url"] = vim_access["vim-url"] or "null"
+        vim_account["vim_user"] = vim_access["vim-username"] or "null"
+        vim_account["vim_password"] = vim_access["vim-password"] or "null"
+        vim_account["vim_tenant_name"] = vim_access["vim-tenant-name"] or "null"
         return vim_account
 
     def get_id(self, name):