from osmclient.common.exceptions import ClientException
from osmclient.common.exceptions import NotFound
-import json
+import yaml
+import time
class Vim(object):
vim_account['datacenter']['type'] = vim_access['vim-type']
vim_config = {}
- vim_config['use_floating_ip'] = False
+ if 'config' in vim_access and vim_access['config'] is not None:
+ vim_config = yaml.safe_load(vim_access['config'])
- if ('floating_ip_pool' in vim_access and
- vim_access['floating_ip_pool'] is not None):
- vim_config['use_floating_ip'] = True
-
- if 'keypair' in vim_access and vim_access['keypair'] is not None:
- vim_config['keypair'] = vim_access['keypair']
- elif 'config' in vim_access and vim_access['config'] is not None:
- if any(var in vim_access['config'] for var in ["admin_password","admin_username","orgname","nsx_user","nsx_password","nsx_manager","vcenter_ip","vcenter_port","vcenter_user","vcenter_password"]):
- vim_config = json.loads(vim_access['config'])
-
- vim_account['datacenter']['config'] = vim_config
+ if vim_config:
+ vim_account['datacenter']['config'] = vim_config
vim_account = self.update_vim_account_dict(vim_account, vim_access, vim_config)
raise ClientException("failed to delete vim {} - {}".format(vim_name, resp))
self._update_ro_accounts()
- def list(self):
- self._update_ro_accounts()
+ def list(self, ro_update):
+ if ro_update:
+ self._update_ro_accounts()
+ # the ro_update needs to be made synchronous, for now this works around the issue
+ # and waits a resonable amount of time for the update to finish
+ time.sleep(2)
+
if self._client._so_version == 'v3':
resp = self._http.get_cmd('v1/api/operational/{}ro-account-state'
.format(self._client.so_rbac_project_path))