X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=NG-RO%2Fosm_ng_ro%2Fns.py;h=a4c7b65cf63f4636aee5c3a42a697763943e67dc;hb=refs%2Fchanges%2F21%2F12521%2F11;hp=c6f918b27b9ee93dabd67df78585de7e0b3a5191;hpb=4bc8eb99dbadadf5013de93fcb424038149e1576;p=osm%2FRO.git diff --git a/NG-RO/osm_ng_ro/ns.py b/NG-RO/osm_ng_ro/ns.py index c6f918b2..a4c7b65c 100644 --- a/NG-RO/osm_ng_ro/ns.py +++ b/NG-RO/osm_ng_ro/ns.py @@ -1030,6 +1030,7 @@ class Ns(object): persistent_root_disk[vsd["id"]] = { "image_id": vdu.get("sw-image-desc"), "size": root_disk.get("size-of-storage"), + "keep": Ns.is_volume_keeping_required(root_disk), } disk_list.append(persistent_root_disk[vsd["id"]]) @@ -1073,9 +1074,29 @@ class Ns(object): if disk["id"] not in persistent_disk.keys(): persistent_disk[disk["id"]] = { "size": disk.get("size-of-storage"), + "keep": Ns.is_volume_keeping_required(disk), } disk_list.append(persistent_disk[disk["id"]]) + @staticmethod + def is_volume_keeping_required(virtual_storage_desc: Dict[str, Any]) -> bool: + """Function to decide keeping persistent volume + upon VDU deletion. + + Args: + virtual_storage_desc (Dict[str, Any]): virtual storage description dictionary + + Returns: + bool (True/False) + """ + + if not virtual_storage_desc.get("vdu-storage-requirements"): + return False + for item in virtual_storage_desc.get("vdu-storage-requirements", {}): + if item.get("key") == "keep-volume" and item.get("value") == "true": + return True + return False + @staticmethod def _sort_vdu_interfaces(target_vdu: dict) -> None: """Sort the interfaces according to position number. @@ -1397,13 +1418,13 @@ class Ns(object): if vdu["name"] == target_vdu["vdu-name"]: for vsd in vnfd.get("virtual-storage-desc", ()): root_disk = Ns._select_persistent_root_disk(vsd, vdu) - if not root_disk: continue persistent_root_disk[vsd["id"]] = { "image_id": vdu.get("sw-image-desc"), "size": root_disk["size-of-storage"], + "keep": Ns.is_volume_keeping_required(root_disk), } disk_list.append(persistent_root_disk[vsd["id"]]) @@ -1434,6 +1455,7 @@ class Ns(object): ): persistent_ordinary_disk[disk["id"]] = { "size": disk["size-of-storage"], + "keep": Ns.is_volume_keeping_required(disk), } disk_list.append(persistent_ordinary_disk[disk["id"]])