(bug 650) adding WIM account instantiation parameter. 49/7349/1
authortierno <alfonso.tiernosepulveda@telefonica.com>
Thu, 21 Mar 2019 13:03:53 +0000 (13:03 +0000)
committertierno <alfonso.tiernosepulveda@telefonica.com>
Thu, 21 Mar 2019 13:03:53 +0000 (13:03 +0000)
Allow manual selection of wim or deployment without Wim

Change-Id: Ic03816d33aebb3843fc1bb0063bdbc91e43ea069
Signed-off-by: tierno <alfonso.tiernosepulveda@telefonica.com>
osmclient/scripts/osm.py
osmclient/sol005/ns.py
osmclient/v1/ns.py

index 7aa9e39..45ae5e7 100755 (executable)
@@ -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)
index bd72d42..b271e03 100644 (file)
@@ -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"]:
index 3d638e1..de60308 100644 (file)
@@ -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 = {}