X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FIM.git;a=blobdiff_plain;f=osm_im%2Fim_translation.py;h=8abf942805ca71b202221eda96e10910adc034a5;hp=9216f45752766fc5fbc52f50c3d327ae7bc9448d;hb=2ab6e9bea9c5eb7a7cd4324c7e24dc424cf89678;hpb=0a517b9e7545addee365ae2622f3db035435cc63 diff --git a/osm_im/im_translation.py b/osm_im/im_translation.py index 9216f45..8abf942 100644 --- a/osm_im/im_translation.py +++ b/osm_im/im_translation.py @@ -61,6 +61,7 @@ def translate_im_vnfd_to_sol006(im_vnfd): _add_im_kdus_to_sol006_vnfd(im_vnfd, sol006_vnfd) _add_im_k8s_clusters_to_sol006_vnfd(im_vnfd, sol006_vnfd) _add_im_placement_groups_to_sol006_vnfd(im_vnfd, sol006_vnfd) + _cleanup_juju_in_configurations(sol006_vnfd) return {"vnfd": sol006_vnfd} @@ -268,6 +269,8 @@ def _add_im_vdus_to_sol006_vnfd(im_vnfd, sol006_vnfd): vdu_descriptor["name"] = vdu["name"] if vdu.get("cloud-init-file"): vdu_descriptor["cloud-init-file"] = vdu["cloud-init-file"] + if vdu.get("cloud-init"): + vdu_descriptor["cloud-init"] = vdu["cloud-init"] if vdu.get("supplemental-boot-data"): vdu_descriptor["supplemental-boot-data"] = vdu["supplemental-boot-data"] if vdu.get("alarm"): @@ -286,7 +289,7 @@ def _add_im_vdus_to_sol006_vnfd(im_vnfd, sol006_vnfd): vdu_level = _get_instantiation_level_vdu_level_from_im_vdu(vdu) if vdu.get("vdu-configuration"): vdu_configuration = vdu["vdu-configuration"] - vdu_configuration["id"] = "{}-vdu-configuration".format(vdu["id"]) + vdu_configuration["id"] = vdu["id"] vdu_configurations.append(vdu_configuration) df["vdu-profile"].append(vdu_profile) df["instantiation-level"][0]["vdu-level"].append(vdu_level) @@ -299,7 +302,8 @@ def _add_im_vdus_to_sol006_vnfd(im_vnfd, sol006_vnfd): if len(ext_cpds) > 0: sol006_vnfd["ext-cpd"] = ext_cpds if len(vdu_configurations) > 0: - sol006_vnfd["vdu-configuration"] = vdu_configurations + _prepare_dict_entries_for_configurations(sol006_vnfd) + sol006_vnfd["df"][0]["lcm-operations-configuration"]["operate-vnf-op-config"]["day1-2"].extend(vdu_configurations) def _add_im_vdu_images_to_sol006_vdu(im_vdu, sol006_vdu): @@ -365,8 +369,6 @@ def _get_vdu_profile_from_im_vdu(im_vdu, im_vnfd): sgd_min_instances = int(scaling_group_descriptor.get("min-instance-count", 0)) vdu_profile["min-number-of-instances"] = sgd_min_instances + initial_instances vdu_profile["max-number-of-instances"] = sgd_max_instances + initial_instances - if im_vdu.get("vdu-configuration"): - vdu_profile["vdu-configuration-id"] = "{}-vdu-configuration".format(im_vdu["id"]) return vdu_profile @@ -409,14 +411,51 @@ def _add_im_internal_vld_connection_point_refs_to_sol006_vnfd(ivld, im_vnfd, sol if int_cpd["id"] == sol006_int_cpd_id: int_cpd["int-virtual-link-desc"] = ivld["id"] +def _prepare_dict_entries_for_configurations(sol006_vnfd): + sol006_vnfd["df"] = sol006_vnfd.get("df", [{}]) + if not sol006_vnfd["df"][0].get("lcm-operations-configuration"): + sol006_vnfd["df"][0]["lcm-operations-configuration"] = { + "operate-vnf-op-config": { + "day1-2": [] + } + } + +def _cleanup_juju_in_configurations(sol006_vnfd): + configs = sol006_vnfd["df"][0].get("lcm-operations-configuration") + if configs: + for day12_config in configs["operate-vnf-op-config"]["day1-2"]: + if "juju" in day12_config: + ee_name = _create_execution_environment_for_juju(day12_config, day12_config["juju"]["charm"]) + for primitive in day12_config.get("config-primitive", []): + primitive["execution-environment-ref"] = ee_name + for primitive in day12_config.get("initial-config-primitive", []): + primitive["execution-environment-ref"] = ee_name + for primitive in day12_config.get("terminate-config-primitive", []): + primitive["execution-environment-ref"] = ee_name + day12_config.pop("juju", None) + +def _create_execution_environment_for_juju(day12_config, charm_name): + if not "execution-environment-list" in day12_config: + day12_config["execution-environment-list"] = [] + + day12_config["execution-environment-list"].append( + { + "id": charm_name + "-ee", + "juju": { + "charm": charm_name + } + } + ) + + return charm_name + "-ee" def _add_im_vnf_configuration_to_sol006_vnfd(im_vnfd, sol006_vnfd): vnf_configuration = im_vnfd.get("vnf-configuration") if not vnf_configuration: return - vnf_configuration["id"] = "default-vnf-configuration" - sol006_vnfd["vnf-configuration"] = [vnf_configuration] - sol006_vnfd["df"][0]["vnf-configuration-id"] = vnf_configuration["id"] + vnf_configuration["id"] = im_vnfd.get("id") + _prepare_dict_entries_for_configurations(sol006_vnfd) + sol006_vnfd["df"][0]["lcm-operations-configuration"]["operate-vnf-op-config"]["day1-2"].append(vnf_configuration) def _add_im_ip_profiles_to_sol006_vnfd(im_vnfd, sol006_vnfd): @@ -513,8 +552,18 @@ def _add_im_scaling_group_descriptors_to_sol006_vnfd(im_vnfd, sol006_vnfd): def _add_im_kdus_to_sol006_vnfd(im_vnfd, sol006_vnfd): if im_vnfd.get("kdu"): sol006_vnfd["kdu"] = im_vnfd["kdu"] + kdu_configs = [] + for a_kdu in sol006_vnfd["kdu"]: + if "kdu-configuration" in a_kdu: + kdu_config = a_kdu.pop("kdu-configuration") + kdu_config["id"] = a_kdu["name"] + kdu_configs.append(kdu_config) if len(sol006_vnfd.get("df", ())) == 0: sol006_vnfd["df"] = [{"id": "default-df"}] + if len(kdu_configs) > 0: + _prepare_dict_entries_for_configurations(sol006_vnfd) + sol006_vnfd["df"][0]["lcm-operations-configuration"]["operate-vnf-op-config"]["day1-2"].extend(kdu_configs) + def _add_im_k8s_clusters_to_sol006_vnfd(im_vnfd, sol006_vnfd):