From: aticig Date: Thu, 12 May 2022 18:35:47 +0000 (+0300) Subject: Fix Bug 1911 Root disk cannot be a Persistent Volume X-Git-Tag: v11.0.3~6 X-Git-Url: https://osm.etsi.org/gitweb/?a=commitdiff_plain;h=0bd5b30d3162899267d193101d12f8bc452e7b19;p=osm%2FRO.git Fix Bug 1911 Root disk cannot be a Persistent Volume By this fix, VNFs could have persistent root disk if the disk type is defined as persistent-storage. Besides, the problem of creating unnecessary empty persistent volume is solved. Change-Id: Ibb48fab8084962a0983c2a5260ae97b53eee8f4d Signed-off-by: aticig --- diff --git a/NG-RO/osm_ng_ro/ns.py b/NG-RO/osm_ng_ro/ns.py index 2ca12eb1..3a7929cc 100644 --- a/NG-RO/osm_ng_ro/ns.py +++ b/NG-RO/osm_ng_ro/ns.py @@ -921,14 +921,37 @@ 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 = [] diff --git a/RO-VIM-openstack/osm_rovim_openstack/vimconn_openstack.py b/RO-VIM-openstack/osm_rovim_openstack/vimconn_openstack.py index a15a53cf..92e1f56a 100644 --- a/RO-VIM-openstack/osm_rovim_openstack/vimconn_openstack.py +++ b/RO-VIM-openstack/osm_rovim_openstack/vimconn_openstack.py @@ -1867,6 +1867,7 @@ class vimconnector(vimconn.VimConnector): # Create additional volumes in case these are present in disk_list base_disk_index = ord("b") + boot_volume_id = None if disk_list: block_device_mapping = {} for disk in disk_list: @@ -1876,11 +1877,13 @@ class vimconnector(vimconn.VimConnector): ] else: if "image_id" in disk: + base_disk_index = ord("a") volume = self.cinder.volumes.create( size=disk["size"], name=name + "_vd" + chr(base_disk_index), imageRef=disk["image_id"], ) + boot_volume_id = volume.id else: volume = self.cinder.volumes.create( size=disk["size"], @@ -1912,7 +1915,8 @@ class vimconnector(vimconn.VimConnector): "Timeout creating volumes for instance " + name, http_code=vimconn.HTTP_Request_Timeout, ) - + if boot_volume_id: + self.cinder.volumes.set_bootable(boot_volume_id, True) # get availability Zone vm_av_zone = self._get_vm_availability_zone( availability_zone_index, availability_zone_list diff --git a/releasenotes/notes/fix_bug_1911-e84f3fe699d114cf.yaml b/releasenotes/notes/fix_bug_1911-e84f3fe699d114cf.yaml new file mode 100644 index 00000000..fdcbf34d --- /dev/null +++ b/releasenotes/notes/fix_bug_1911-e84f3fe699d114cf.yaml @@ -0,0 +1,22 @@ +####################################################################################### +# Copyright ETSI Contributors and Others. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. +# See the License for the specific language governing permissions and +# limitations under the License. +####################################################################################### +--- +fixes: + - | + This fixes the bug 1911 Root disk cannot be a Persistent Volume. VNFs could have + persistent root disk if the disk type is defined as persistent-storage. Besides, + the problem of creating one more persistent volume is solved. \ No newline at end of file