diff --git a/swift/common/storage_policy.py b/swift/common/storage_policy.py index feee975aa7..37c799396d 100644 --- a/swift/common/storage_policy.py +++ b/swift/common/storage_policy.py @@ -129,7 +129,8 @@ def parse_storage_policies(conf): raise ValueError("Malformed storage policy %s" % section) try: is_default = conf.get(section, 'default') - need_default = False + if config_true_value(is_default): + need_default = False except NoOptionError: is_default = False try: diff --git a/test/unit/common/test_storage_policies.py b/test/unit/common/test_storage_policies.py index c1144b7462..e8314e5d10 100644 --- a/test/unit/common/test_storage_policies.py +++ b/test/unit/common/test_storage_policies.py @@ -120,6 +120,24 @@ class TestStoragePolicies(unittest.TestCase): self.assertRaises( ValueError, storage_policy.parse_storage_policies, conf) + conf = self._conf(""" + [storage-policy:0] + default = no + [storage-policy:1] + default = no + """) + stor_pols = storage_policy.parse_storage_policies(conf) + self.assertEquals(stor_pols.get_by_index(0).idx, 0) + + conf = self._conf(""" + [storage-policy:1] + default = no + [storage-policy:2] + default = no + """) + stor_pols = storage_policy.parse_storage_policies(conf) + self.assertEquals(stor_pols.get_by_index(0).idx, 0) + def test_no_default_specified(self): conf = self._conf(""" [storage-policy:1] @@ -136,5 +154,22 @@ class TestStoragePolicies(unittest.TestCase): stor_pols = storage_policy.parse_storage_policies(conf1) self.assertEqual(stor_pols.default.name, 'thisOne') + def test_false_default(self): + conf = self._conf(""" + [storage-policy:0] + default = no + [storage-policy:1] + """) + stor_pols = storage_policy.parse_storage_policies(conf) + self.assertEquals(stor_pols.get_by_index(0).idx, 0) + + conf = self._conf(""" + [storage-policy:0] + [storage-policy:1] + default = no + """) + stor_pols = storage_policy.parse_storage_policies(conf) + self.assertEquals(stor_pols.get_by_index(0).idx, 0) + if __name__ == '__main__': unittest.main()