From 4a7bfc5688736abb8ece7a9c3a6a33aec5c35e70 Mon Sep 17 00:00:00 2001 From: Jon Bernard Date: Tue, 19 Nov 2024 13:40:54 -0500 Subject: [PATCH] Fix volume clone across cluster members Closes-bug: #1906286 Change-Id: Ic0abdbb0cf3e0cad36015fa5545ba6acce18b81a Signed-off-by: Simon Dodsley --- cinder/volume/flows/manager/create_volume.py | 11 +++++++++-- .../cinder_backend_aa_glance-300c8e087c8cf192.yaml | 6 ++++++ 2 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 releasenotes/notes/cinder_backend_aa_glance-300c8e087c8cf192.yaml diff --git a/cinder/volume/flows/manager/create_volume.py b/cinder/volume/flows/manager/create_volume.py index eda5608a80b..41c24bd9064 100644 --- a/cinder/volume/flows/manager/create_volume.py +++ b/cinder/volume/flows/manager/create_volume.py @@ -740,12 +740,19 @@ class CreateVolumeFromSpecTask(flow_utils.CinderTask): urls = list(set([direct_url] + [loc.get('url') for loc in locations or []])) image_volume_ids = self._extract_cinder_ids(urls) + + filters = {'id': image_volume_ids} + if volume.cluster_name: + filters['cluster_name'] = volume.cluster_name + else: + filters['host'] = volume.host + if self.driver.capabilities.get('clone_across_pools'): image_volumes = self.db.volume_get_all( - context, filters={'id': image_volume_ids}) + context, filters=filters) else: image_volumes = self.db.volume_get_all_by_host( - context, volume['host'], filters={'id': image_volume_ids}) + context, volume['host'], filters=filters) for image_volume in image_volumes: # For the case image volume is stored in the service tenant, diff --git a/releasenotes/notes/cinder_backend_aa_glance-300c8e087c8cf192.yaml b/releasenotes/notes/cinder_backend_aa_glance-300c8e087c8cf192.yaml new file mode 100644 index 00000000000..309110bef50 --- /dev/null +++ b/releasenotes/notes/cinder_backend_aa_glance-300c8e087c8cf192.yaml @@ -0,0 +1,6 @@ +--- +fixes: + - | + `Bug #1906286 `_: Fixed + issue with Cinder-backed images in A/A environment not correctly using + the cluster name.