From b268ef82fa6d17d0abccb0d13f3eaa2b9d48a0df Mon Sep 17 00:00:00 2001 From: vnathan Date: Mon, 14 Nov 2016 22:09:58 +0530 Subject: [PATCH] Fixed handling duplicate block devices specified in config Change-Id: I5c96c49d47b762fecc16c8700ef6ed65bcd39bf5 closes-bug: 1582317 --- lib/swift_storage_utils.py | 1 + unit_tests/test_swift_storage_utils.py | 11 +++++++++++ 2 files changed, 12 insertions(+) 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')