From f09bc087b3e50f9399f1e946f051d5355bf3f752 Mon Sep 17 00:00:00 2001 From: Luciano Lo Giudice Date: Tue, 12 Apr 2022 17:30:25 -0300 Subject: [PATCH 1/3] Setup loop devices early on in the Ceph tests There appears to be a race condition between the loop device creation and its actual usage. In order to prevent that, this PR setups these devices during the test initialization instead of right before using them in the 'add-disk' tests. --- zaza/openstack/charm_tests/ceph/tests.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/zaza/openstack/charm_tests/ceph/tests.py b/zaza/openstack/charm_tests/ceph/tests.py index 379c330..64856ed 100644 --- a/zaza/openstack/charm_tests/ceph/tests.py +++ b/zaza/openstack/charm_tests/ceph/tests.py @@ -186,6 +186,11 @@ class CephTest(test_utils.OpenStackBaseTest): def setUpClass(cls): """Run the ceph's common class setup.""" super(CephTest, cls).setUpClass() + cls.loop_devs = {} # Maps osd -> loop device + for osd in (x.entity_id for x in zaza_model.get_units('ceph-osd')): + zaza_model.add_storage(osd, 'cache-devices', 'cinder', 10) + loop_dev = zaza_utils.add_loop_device(osd, 10).get('Stdout') + cls.loop_devs[osd] = loop_dev def osd_out_in(self, services): """Run OSD out and OSD in tests. @@ -565,8 +570,7 @@ class CephTest(test_utils.OpenStackBaseTest): osds = [x.entity_id for x in zaza_model.get_units('ceph-osd')] params = [] for unit in osds: - zaza_model.add_storage(unit, 'cache-devices', 'cinder', 10) - loop_dev = zaza_utils.add_loop_device(unit, 10).get('Stdout') + loop_dev = self.loop_devs[unit] params.append({'unit': unit, 'device': loop_dev}) action_obj = zaza_model.run_action( unit_name=unit, From b7bb8597ce548da380806594957bc5b0e9cb7ac7 Mon Sep 17 00:00:00 2001 From: Luciano Lo Giudice Date: Tue, 12 Apr 2022 19:47:43 -0300 Subject: [PATCH 2/3] Sync kernel partitions --- zaza/openstack/charm_tests/ceph/tests.py | 1 + 1 file changed, 1 insertion(+) diff --git a/zaza/openstack/charm_tests/ceph/tests.py b/zaza/openstack/charm_tests/ceph/tests.py index 64856ed..ae4f1c7 100644 --- a/zaza/openstack/charm_tests/ceph/tests.py +++ b/zaza/openstack/charm_tests/ceph/tests.py @@ -595,6 +595,7 @@ class CephTest(test_utils.OpenStackBaseTest): results = json.loads(action_obj.data['results']['message']) results = results[next(iter(results))] self.assertEqual(results['osd-ids'], osd_id) + zaza_model.run_on_unit(param['unit'], 'partprobe') zaza_model.wait_for_application_states() logging.info('Recycling previously removed OSDs') From a7f4e92e026915e2151a28338f8b47de03a89709 Mon Sep 17 00:00:00 2001 From: Luciano Lo Giudice Date: Tue, 12 Apr 2022 21:16:27 -0300 Subject: [PATCH 3/3] Reorder storage operation --- zaza/openstack/charm_tests/ceph/tests.py | 1 - 1 file changed, 1 deletion(-) diff --git a/zaza/openstack/charm_tests/ceph/tests.py b/zaza/openstack/charm_tests/ceph/tests.py index ae4f1c7..1904c0b 100644 --- a/zaza/openstack/charm_tests/ceph/tests.py +++ b/zaza/openstack/charm_tests/ceph/tests.py @@ -188,7 +188,6 @@ class CephTest(test_utils.OpenStackBaseTest): super(CephTest, cls).setUpClass() cls.loop_devs = {} # Maps osd -> loop device for osd in (x.entity_id for x in zaza_model.get_units('ceph-osd')): - zaza_model.add_storage(osd, 'cache-devices', 'cinder', 10) loop_dev = zaza_utils.add_loop_device(osd, 10).get('Stdout') cls.loop_devs[osd] = loop_dev