X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=NG-RO%2Fosm_ng_ro%2Fns.py;h=472ce795102b4da00aec82d0b766c5ac37216519;hb=72c67141682d0156c0108302eb0d2dcc52cfd808;hp=08ee7c44e5f386c46621964afffa546c20571d95;hpb=0fe84cb549863fc3e5a04ce5f9d974b4a52a56a6;p=osm%2FRO.git diff --git a/NG-RO/osm_ng_ro/ns.py b/NG-RO/osm_ng_ro/ns.py index 08ee7c44..472ce795 100644 --- a/NG-RO/osm_ng_ro/ns.py +++ b/NG-RO/osm_ng_ro/ns.py @@ -693,6 +693,23 @@ class Ns(object): return extra_dict + def _process_affinity_group_params( + target_affinity_group, vim_info, target_record_id + ): + extra_dict = {} + + affinity_group_data = { + "name": target_affinity_group["name"], + "type": target_affinity_group["type"], + "scope": target_affinity_group["scope"], + } + + extra_dict["params"] = { + "affinity_group_data": affinity_group_data, + } + + return extra_dict + def _ip_profile_2_ro(ip_profile): if not ip_profile: return None @@ -908,6 +925,25 @@ class Ns(object): == "persistent-storage:persistent-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" + ]: + affinity_group_text = ( + 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_list.append(affinity_group) + extra_dict["params"] = { "name": "{}-{}-{}-{}".format( indata["name"][:16], @@ -919,6 +955,7 @@ class Ns(object): "start": True, "image_id": "TASK-" + image_text, "flavor_id": "TASK-" + flavor_text, + "affinity_group_list": affinity_group_list, "net_list": net_list, "cloud_config": cloud_config or None, "disk_list": disk_list, @@ -1156,6 +1193,20 @@ class Ns(object): process_params=_process_flavor_params, ) + 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 + ), + db_update=db_nsr_update, + db_path="affinity-or-anti-affinity-group", + item="affinity-or-anti-affinity-group", + process_params=_process_affinity_group_params, + ) + # VNF.vld for vnfr_id, vnfr in db_vnfrs.items(): # vnfr_id need to be set as global variable for among others nested method _process_vdu_params