Fixes bug 1658 package-create update with sol006 templates
[osm/osmclient.git] / osmclient / common / package_tool.py
index af1e426..aa31ed8 100644 (file)
@@ -39,7 +39,7 @@ class PackageTool(object):
         self._validator = validation_im()
 
     def create(self, package_type, base_directory, package_name, override, image, vdus, vcpu, memory, storage,
-               interfaces, vendor, detailed, netslice_subnets, netslice_vlds):
+               interfaces, vendor, detailed, netslice_subnets, netslice_vlds, old):
         """
             **Create a package descriptor**
 
@@ -56,6 +56,7 @@ class PackageTool(object):
                 - detailed: include all possible values for NSD, VNFD, NST
                 - netslice_subnets: number of netslice_subnets for the NST
                 - netslice_vlds: number of virtual link descriptors for the NST
+                - old: flag to create a package using the IM of OSM<9
 
             :return: status
         """
@@ -64,11 +65,11 @@ class PackageTool(object):
         file_loader = PackageLoader("osmclient")
         env = Environment(loader=file_loader)
         if package_type == 'ns':
-            template = env.get_template('nsd.yaml.j2')
+            template = env.get_template("nsd.yaml.j2" if not old else "nsd_old.yaml.j2")
             content = {"name": package_name, "vendor": vendor, "vdus": vdus, "clean": False, "interfaces": interfaces,
                        "detailed": detailed}
         elif package_type == 'vnf':
-            template = env.get_template('vnfd.yaml.j2')
+            template = env.get_template("vnfd.yaml.j2" if not old else "vnfd_old.yaml.j2")
             content = {"name": package_name, "vendor": vendor, "vdus": vdus, "clean": False, "interfaces": interfaces,
                        "image": image, "vcpu": vcpu, "memory": memory, "storage": storage, "detailed": detailed}
         elif package_type == 'nst':
@@ -558,16 +559,15 @@ class PackageTool(object):
         charms_list = []
         for k1, v1 in sol006_dict.items():
             for k2, v2 in v1.items():
-                if 'vnf-configuration' in k2:
-                    for vnf_config in v2:
-                        for k3, v3 in vnf_config.items():
-                            if 'charm' in v3:
-                                charms_list.append((v3['charm']))
-                if 'vdu-configuration' in k2:
-                    for vdu_config in v2:
-                        for k3, v3 in vdu_config.items():
-                            if 'charm' in v3:
-                                charms_list.append((v3['charm']))
+                if k2 == "df":
+                    for df in v2:
+                        lcm_ops = df.get("lcm-operations-configuration", {})
+                        ops_config = lcm_ops.get("operate-vnf-op-config", {})
+                        for day_12_config in ops_config.get("day1-2", []):
+                            self._logger.debug("Execution environment found")
+                            for ee in day_12_config.get("execution-environment-list", []):
+                                if "juju" in ee:
+                                    charms_list.append((ee["juju"]['charm']))
         return charms_list
 
     def _charms_search_on_nsd_sol006_dict(self, sol006_dict):