- 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)
- #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 update
- self._wait(resp.get('id'))
- print(resp['id'])
+ 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