From 1d8033e54e009bbc4408f6e16aec4f6c01687c91 Mon Sep 17 00:00:00 2001 From: Brian Rosmaita Date: Tue, 18 Apr 2023 11:22:27 -0400 Subject: [PATCH] Add force to os-brick disconnect In order to be sure that devices are being removed from the host, we should be using the 'force' parameter with os-brick's disconnect_volume() method. Closes-bug: #2004555 Change-Id: I63d09ad9ef465bc154c85a9ea125449c039d1b90 --- glance_store/_drivers/cinder/base.py | 3 ++- glance_store/tests/unit/cinder/test_base.py | 2 +- glance_store/tests/unit/cinder/test_cinder_base.py | 2 +- releasenotes/notes/bug-2004555-4fd67fce86c07461.yaml | 11 +++++++++++ 4 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 releasenotes/notes/bug-2004555-4fd67fce86c07461.yaml diff --git a/glance_store/_drivers/cinder/base.py b/glance_store/_drivers/cinder/base.py index 20fb897d..26d83f66 100644 --- a/glance_store/_drivers/cinder/base.py +++ b/glance_store/_drivers/cinder/base.py @@ -50,7 +50,8 @@ class BaseBrickConnectorInterface(object): return device def disconnect_volume(self, device): - self.conn.disconnect_volume(self.connection_info, device) + # Bug #2004555: use force so there aren't any leftovers + self.conn.disconnect_volume(self.connection_info, device, force=True) def extend_volume(self): self.conn.extend_volume(self.connection_info) diff --git a/glance_store/tests/unit/cinder/test_base.py b/glance_store/tests/unit/cinder/test_base.py index 488cf1ad..7c0add56 100644 --- a/glance_store/tests/unit/cinder/test_base.py +++ b/glance_store/tests/unit/cinder/test_base.py @@ -102,7 +102,7 @@ class TestBaseBrickConnectorInterface(test_base.StoreBaseTest): self.mock_object(self.connector.conn, 'disconnect_volume') self.connector.disconnect_volume(fake_device) self.connector.conn.disconnect_volume.assert_called_once_with( - self.connection_info, fake_device) + self.connection_info, fake_device, force=True) def test_extend_volume(self): self.mock_object(self.connector.conn, 'extend_volume') diff --git a/glance_store/tests/unit/cinder/test_cinder_base.py b/glance_store/tests/unit/cinder/test_cinder_base.py index 922b1611..3269de11 100644 --- a/glance_store/tests/unit/cinder/test_cinder_base.py +++ b/glance_store/tests/unit/cinder/test_cinder_base.py @@ -328,7 +328,7 @@ class TestCinderStoreBase(object): fake_connector.connect_volume.assert_called_once_with( mock.ANY) fake_connector.disconnect_volume.assert_called_once_with( - mock.ANY, fake_devinfo) + mock.ANY, fake_devinfo, force=True) fake_conn_obj.assert_called_once_with( mock.ANY, root_helper, conn=mock.ANY, use_multipath=multipath_supported) diff --git a/releasenotes/notes/bug-2004555-4fd67fce86c07461.yaml b/releasenotes/notes/bug-2004555-4fd67fce86c07461.yaml new file mode 100644 index 00000000..8d982c6a --- /dev/null +++ b/releasenotes/notes/bug-2004555-4fd67fce86c07461.yaml @@ -0,0 +1,11 @@ +security: + - | + Cinder glance_store driver: in order to avoid a situation where a + leftover device could be mapped to a different volume than the one + intended, the cinder glance_store driver now instructs the os-brick + library to force detach volumes, which ensures that devices are + removed from the host. + + See `Bug #2004555 + `_ for more + information about this issue.