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"],
+ }
+
+ 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,
+ }
+
+ return extra_dict
+
def _ip_profile_2_ro(ip_profile):
if not ip_profile:
return None
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"
+ ]:
+ 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(
"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,
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