From ab51ef7a920bfb6d036d18ae5f3063a0d780cab2 Mon Sep 17 00:00:00 2001 From: tierno Date: Thu, 21 Mar 2019 13:03:53 +0000 Subject: [PATCH] (bug 650) adding WIM account instantiation parameter. Allow manual selection of wim or deployment without Wim Change-Id: Ic03816d33aebb3843fc1bb0063bdbc91e43ea069 Signed-off-by: tierno --- osmclient/scripts/osm.py | 6 +++++- osmclient/sol005/ns.py | 19 ++++++++++++++++++- osmclient/v1/ns.py | 2 +- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/osmclient/scripts/osm.py b/osmclient/scripts/osm.py index 7aa9e39..45ae5e7 100755 --- a/osmclient/scripts/osm.py +++ b/osmclient/scripts/osm.py @@ -1122,6 +1122,8 @@ def nfpkg_create(ctx, filename, overwrite): prompt=True, help='name of the NS descriptor') @click.option('--vim_account', prompt=True, help='default VIM account id or name for the deployment') +@click.option('--wim_account', + default=None, help='default WIM account for intersite connectivity. False to not use a WIM') @click.option('--admin_status', default='ENABLED', help='administration status') @@ -1139,6 +1141,7 @@ def ns_create(ctx, nsd_name, ns_name, vim_account, + wim_account, admin_status, ssh_keys, config, @@ -1156,7 +1159,8 @@ def ns_create(ctx, ns_name, config=config, ssh_keys=ssh_keys, - account=vim_account) + account=vim_account, + wim_account=wim_account) except ClientException as inst: print((inst.message)) exit(1) diff --git a/osmclient/sol005/ns.py b/osmclient/sol005/ns.py index bd72d42..b271e03 100644 --- a/osmclient/sol005/ns.py +++ b/osmclient/sol005/ns.py @@ -96,13 +96,14 @@ class Ns(object): msg = resp raise ClientException("failed to delete ns {} - {}".format(name, msg)) - def create(self, nsd_name, nsr_name, account, config=None, + def create(self, nsd_name, nsr_name, account, wim_account=None, config=None, ssh_keys=None, description='default description', admin_status='ENABLED'): nsd = self._client.nsd.get(nsd_name) vim_account_id = {} + wim_account_id = {} def get_vim_account_id(vim_account): if vim_account_id.get(vim_account): @@ -114,11 +115,25 @@ class Ns(object): vim_account_id[vim_account] = vim['_id'] return vim['_id'] + def get_wim_account_id(wim_account): + if not isinstance(wim_account, str): + return wim_account + if wim_account_id.get(wim_account): + return wim_account_id[wim_account] + + wim = self._client.wim.get(wim_account) + if wim is None: + raise NotFound("cannot find wim account '{}'".format(wim_account)) + wim_account_id[wim_account] = wim['_id'] + return wim['_id'] + ns = {} ns['nsdId'] = nsd['_id'] ns['nsName'] = nsr_name ns['nsDescription'] = description ns['vimAccountId'] = get_vim_account_id(account) + if wim_account: # at this point is a string or None + ns['wimAccountId'] = get_wim_account_id(yaml.load(wim_account)) #ns['userdata'] = {} #ns['userdata']['key1']='value1' #ns['userdata']['key2']='value2' @@ -140,6 +155,8 @@ class Ns(object): for vim_account, vim_net in list(vld["vim-network-name"].items()): vim_network_name_dict[get_vim_account_id(vim_account)] = vim_net vld["vim-network-name"] = vim_network_name_dict + if "wim_account" in vld and vld["wim_account"] is not None: + vld["wimAccountId"] = get_wim_account_id(vld.pop("wim_account")) ns["vld"] = ns_config["vld"] if "vnf" in ns_config: for vnf in ns_config["vnf"]: diff --git a/osmclient/v1/ns.py b/osmclient/v1/ns.py index 3d638e1..de60308 100644 --- a/osmclient/v1/ns.py +++ b/osmclient/v1/ns.py @@ -69,7 +69,7 @@ class Ns(object): ns_name, resp)) - def create(self, nsd_name, nsr_name, account, config=None, + def create(self, nsd_name, nsr_name, account, wim_account=None, config=None, ssh_keys=None, description='default description', admin_status='ENABLED'): postdata = {} -- 2.17.1