X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=NG-RO%2Fosm_ng_ro%2Fns.py;h=3a7929cce87263c03c03c2a7d40431435ce02f67;hb=refs%2Fchanges%2F43%2F12043%2F1;hp=e8326bf3c4829487e46240cb25ead43f8ad9610a;hpb=7399321457dedb7ad2c40280cc5ff6f367d9b2ca;p=osm%2FRO.git diff --git a/NG-RO/osm_ng_ro/ns.py b/NG-RO/osm_ng_ro/ns.py index e8326bf3..3a7929cc 100644 --- a/NG-RO/osm_ng_ro/ns.py +++ b/NG-RO/osm_ng_ro/ns.py @@ -693,7 +693,9 @@ class Ns(object): return extra_dict - def _process_affinity_group_params(target_affinity_group, vim_info, target_record_id): + def _process_affinity_group_params( + target_affinity_group, vim_info, target_record_id + ): extra_dict = {} affinity_group_data = { @@ -702,6 +704,11 @@ class Ns(object): "scope": target_affinity_group["scope"], } + if target_affinity_group.get("vim-affinity-group-id"): + affinity_group_data[ + "vim-affinity-group-id" + ] = target_affinity_group["vim-affinity-group-id"] + extra_dict["params"] = { "affinity_group_data": affinity_group_data, } @@ -914,26 +921,55 @@ class Ns(object): if ssh_keys: cloud_config["key-pairs"] = ssh_keys - disk_list = None + persistent_root_disk = {} + disk_list = [] + vnfd_id = vnfr["vnfd-id"] + vnfd = self.db.get_one("vnfds", {"_id": vnfd_id}) + for vdu in vnfd.get("vdu", ()): + if vdu["name"] == target_vdu["vdu-name"]: + for vsd in vnfd.get("virtual-storage-desc", ()): + if ( + vsd.get("id") + == vdu.get("virtual-storage-desc", [[]])[0] + ): + root_disk = vsd + if root_disk.get( + "type-of-storage" + ) == "persistent-storage:persistent-storage" and root_disk.get( + "size-of-storage" + ): + persistent_root_disk[vsd["id"]] = { + "image_id": vdu.get("sw-image-desc"), + "size": root_disk["size-of-storage"], + } + disk_list.append(persistent_root_disk[vsd["id"]]) + if target_vdu.get("virtual-storages"): - disk_list = [ - {"size": disk["size-of-storage"]} - for disk in target_vdu["virtual-storages"] - if disk.get("type-of-storage") - == "persistent-storage:persistent-storage" - ] + for disk in target_vdu["virtual-storages"]: + if ( + disk.get("type-of-storage") + == "persistent-storage:persistent-storage" + and disk["id"] not in persistent_root_disk.keys() + ): + disk_list.append({"size": disk["size-of-storage"]}) affinity_group_list = [] if target_vdu.get("affinity-or-anti-affinity-group-id"): affinity_group = {} - for affinity_group_id in target_vdu["affinity-or-anti-affinity-group-id"]: + for affinity_group_id in target_vdu[ + "affinity-or-anti-affinity-group-id" + ]: affinity_group_text = ( - ns_preffix + ":affinity-or-anti-affinity-group." + affinity_group_id + ns_preffix + + ":affinity-or-anti-affinity-group." + + affinity_group_id ) extra_dict["depends_on"].append(affinity_group_text) - affinity_group["affinity_group_id"] = "TASK-" + affinity_group_text + affinity_group["affinity_group_id"] = ( + "TASK-" + affinity_group_text + ) affinity_group_list.append(affinity_group) extra_dict["params"] = { @@ -1188,8 +1224,11 @@ class Ns(object): step = "process NS Affinity Groups" _process_items( target_list=indata.get("affinity-or-anti-affinity-group") or [], - existing_list=db_nsr.get("affinity-or-anti-affinity-group") or [], - db_record="nsrs:{}:affinity-or-anti-affinity-group".format(nsr_id), + existing_list=db_nsr.get("affinity-or-anti-affinity-group") + or [], + db_record="nsrs:{}:affinity-or-anti-affinity-group".format( + nsr_id + ), db_update=db_nsr_update, db_path="affinity-or-anti-affinity-group", item="affinity-or-anti-affinity-group",