X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osmclient%2Fsol005%2Fvim.py;h=89c2db4c32017f6142272fdeaeb421a1fb722bae;hb=3984c7f63e1a92853c87175ef6d1d72b38d3f0ac;hp=e5bf399bcff4943a1bcb0152a1f61b2837948bd2;hpb=4335f9962fec0516628b5d0b8337fc977e55669c;p=osm%2Fosmclient.git diff --git a/osmclient/sol005/vim.py b/osmclient/sol005/vim.py index e5bf399..89c2db4 100644 --- a/osmclient/sol005/vim.py +++ b/osmclient/sol005/vim.py @@ -70,21 +70,29 @@ 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 +127,20 @@ 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 +181,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):