Make add_dev complain louder about missing keys
... and remove some cruft that couldn't possibly work Change-Id: I560f0a29f0a881c63ec3cb910dbf5476fe2a915a Related-Change-Id: I0d8928b55020592f8e75321d1f7678688301d797
This commit is contained in:
parent
bc92423150
commit
6be5196fbe
@ -367,6 +367,11 @@ class RingBuilder(object):
|
|||||||
# Add holes to self.devs to ensure self.devs[dev['id']] will be the dev
|
# Add holes to self.devs to ensure self.devs[dev['id']] will be the dev
|
||||||
while dev['id'] >= len(self.devs):
|
while dev['id'] >= len(self.devs):
|
||||||
self.devs.append(None)
|
self.devs.append(None)
|
||||||
|
required_keys = ('ip', 'port', 'weight')
|
||||||
|
if any(required not in dev for required in required_keys):
|
||||||
|
raise ValueError(
|
||||||
|
'%r is missing at least one the required key %r' % (
|
||||||
|
dev, required_keys))
|
||||||
dev['weight'] = float(dev['weight'])
|
dev['weight'] = float(dev['weight'])
|
||||||
dev['parts'] = 0
|
dev['parts'] = 0
|
||||||
self.devs[dev['id']] = dev
|
self.devs[dev['id']] = dev
|
||||||
@ -1657,10 +1662,8 @@ class RingBuilder(object):
|
|||||||
# NOTE(akscram): An old ring builder file don't contain
|
# NOTE(akscram): An old ring builder file don't contain
|
||||||
# replication parameters.
|
# replication parameters.
|
||||||
if dev:
|
if dev:
|
||||||
if 'ip' in dev:
|
dev.setdefault('replication_ip', dev['ip'])
|
||||||
dev.setdefault('replication_ip', dev['ip'])
|
dev.setdefault('replication_port', dev['port'])
|
||||||
if 'port' in dev:
|
|
||||||
dev.setdefault('replication_port', dev['port'])
|
|
||||||
return builder
|
return builder
|
||||||
|
|
||||||
def save(self, builder_file):
|
def save(self, builder_file):
|
||||||
|
@ -229,6 +229,13 @@ class TestRingBuilder(unittest.TestCase):
|
|||||||
'ip': '127.0.0.1', 'port': 6200})
|
'ip': '127.0.0.1', 'port': 6200})
|
||||||
self.assertEqual(rb.devs[1]['id'], 1)
|
self.assertEqual(rb.devs[1]['id'], 1)
|
||||||
self.assertEqual(dev_id, 1)
|
self.assertEqual(dev_id, 1)
|
||||||
|
# some keys are required
|
||||||
|
self.assertRaises(ValueError, rb.add_dev, {})
|
||||||
|
stub_dev = {'weight': 1, 'ip': '127.0.0.1', 'port': 7000}
|
||||||
|
for key in (stub_dev.keys()):
|
||||||
|
dev = stub_dev.copy()
|
||||||
|
dev.pop(key)
|
||||||
|
self.assertRaises(ValueError, rb.add_dev, dev)
|
||||||
|
|
||||||
def test_set_dev_weight(self):
|
def test_set_dev_weight(self):
|
||||||
rb = ring.RingBuilder(8, 3, 1)
|
rb = ring.RingBuilder(8, 3, 1)
|
||||||
|
Loading…
Reference in New Issue
Block a user