diff --git a/lib/swift_storage_utils.py b/lib/swift_storage_utils.py index a99f28d..9925d4b 100644 --- a/lib/swift_storage_utils.py +++ b/lib/swift_storage_utils.py @@ -258,6 +258,7 @@ def determine_block_devices(): else: bdevs = block_device.split(' ') + bdevs = list(set(bdevs)) # attempt to ensure block devices, but filter out missing devs _none = ['None', 'none'] valid_bdevs = \ diff --git a/unit_tests/test_swift_storage_utils.py b/unit_tests/test_swift_storage_utils.py index 89c1fdd..961f60e 100644 --- a/unit_tests/test_swift_storage_utils.py +++ b/unit_tests/test_swift_storage_utils.py @@ -165,6 +165,17 @@ class SwiftStorageUtilsTests(CharmTestCase): self.test_config.set('block-device', bdevs) result = swift_utils.determine_block_devices() ex = ['/dev/vdb', '/dev/vdc', '/tmp/swift.img'] + ex = list(set(ex)) + self.assertEquals(ex, result) + + @patch.object(swift_utils, 'ensure_block_device') + def test_determine_block_device_dublicate_dev(self, _ensure): + _ensure.side_effect = self._fake_ensure + bdevs = '/dev/vdb /dev/vdc /dev/vdc /dev/vdb /tmp/swift.img|1G' + self.test_config.set('block-device', bdevs) + result = swift_utils.determine_block_devices() + ex = ['/dev/vdb', '/dev/vdc', '/tmp/swift.img'] + ex = list(set(ex)) self.assertEquals(ex, result) @patch.object(swift_utils, 'ensure_block_device')