- if 'config' in vim_account:
- if vim_account.get('config')=="" and (sdn_controller or sdn_port_mapping):
- 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'])
- if sdn_controller:
- sdnc = self._client.sdnc.get(sdn_controller)
- vim_config['sdn-controller'] = sdnc['_id']
- if sdn_port_mapping:
- with open(sdn_port_mapping, 'r') as f:
- vim_config['sdn-port-mapping'] = yaml.safe_load(f.read())
- vim_account['config'] = vim_config
- #vim_account['config'] = json.dumps(vim_config)
- http_code, resp = self._http.put_cmd(endpoint='{}/{}'.format(self._apiBase,vim['_id']),
- postfields_dict=vim_account)
+ 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"
+ )
+ vim_config = config
+ if sdn_controller == "":
+ vim_config["sdn-controller"] = None
+ vim_config["sdn-port-mapping"] = None
+ else:
+ if sdn_controller:
+ sdnc = self._client.sdnc.get(sdn_controller)
+ vim_config["sdn-controller"] = sdnc["_id"]
+ if sdn_port_mapping:
+ with open(sdn_port_mapping, "r") as f:
+ vim_config["sdn-port-mapping"] = yaml.safe_load(f.read())
+ vim_account["config"] = vim_config
+ # vim_account['config'] = json.dumps(vim_config)
+ http_code, resp = self._http.patch_cmd(
+ endpoint="{}/{}".format(self._apiBase, vim["_id"]),
+ postfields_dict=vim_account,
+ )