[VVP] adding list support for non-server-name uniqueness 34/86834/1
authorstark, steven <steven.stark@att.com>
Thu, 2 May 2019 15:50:11 +0000 (08:50 -0700)
committerstark, steven <steven.stark@att.com>
Thu, 2 May 2019 15:50:11 +0000 (08:50 -0700)
Change-Id: I9990cc0f3535df96f1ea7679fb87aea36398f433
Issue-ID: VVP-179
Signed-off-by: stark, steven <steven.stark@att.com>
ice_validator/tests/fixtures/test_non_server_name/pass/pass0.yaml
ice_validator/tests/structures.py

index ca80c87..267d0b2 100644 (file)
@@ -52,6 +52,26 @@ parameters:
 
 resources:
 
 
 resources:
 
+  testr0:
+    type: testr
+    properties:
+      name:
+        str_replace:
+          template: vnfname_param
+          params:
+            vnfname: { get_param: vnf_name }
+            param: { get_param: [params, 0]}
+
+  testr1:
+    type: testr
+    properties:
+      name:
+        str_replace:
+          template: vnfname_param
+          params:
+            vnfname: { get_param: vnf_name }
+            param: { get_param: [params, 1]}
+
   vm_typeX_0_bialy_port_2:
     type: OS::Neutron::Port
     properties:
   vm_typeX_0_bialy_port_2:
     type: OS::Neutron::Port
     properties:
index e81f3a1..a6b2015 100644 (file)
@@ -85,13 +85,19 @@ class HeatProcessor(object):
     # regex parses the proper resource id format.
 
     @staticmethod
     # regex parses the proper resource id format.
 
     @staticmethod
-    def get_param_value(value):
+    def get_param_value(value, withIndex=False):
         """Return get_param value of `value`
         """
         if isinstance(value, dict) and len(value) == 1:
             v = value.get("get_param")
             if isinstance(v, list) and v:
         """Return get_param value of `value`
         """
         if isinstance(value, dict) and len(value) == 1:
             v = value.get("get_param")
             if isinstance(v, list) and v:
-                v = v[0]
+                if withIndex and len(v) > 1:
+                    idx = v[1]
+                    if isinstance(idx, dict):
+                        idx = idx.get("get_param", idx)
+                    v = "{}{}".format(v[0], idx)
+                else:
+                    v = v[0]
         else:
             v = None
         return v
         else:
             v = None
         return v
@@ -161,7 +167,7 @@ class HeatProcessor(object):
         # are replaced in the template in arbitrary order.
         name = template
         for key, value in params.items():
         # are replaced in the template in arbitrary order.
         name = template
         for key, value in params.items():
-            param = cls.get_param_value(value)
+            param = cls.get_param_value(value, withIndex=True)
             if param is None:
                 return None
             name = name.replace(key, str(param))
             if param is None:
                 return None
             name = name.replace(key, str(param))