don't print cached dispersion if it's a lie
Change-Id: I551fcaf274876861feb12848749590f220842d68
This commit is contained in:
parent
ecf4d057b3
commit
376dc5adc3
@ -248,10 +248,12 @@ swift-ring-builder <builder_file>
|
||||
dev_count = len([dev for dev in builder.devs
|
||||
if dev is not None])
|
||||
balance = builder.get_balance()
|
||||
dispersion_trailer = '' if builder.dispersion is None else (
|
||||
', %.02f dispersion' % (builder.dispersion))
|
||||
print '%d partitions, %.6f replicas, %d regions, %d zones, ' \
|
||||
'%d devices, %.02f balance, %.02f dispersion' % (
|
||||
'%d devices, %.02f balance%s' % (
|
||||
builder.parts, builder.replicas, regions, zones, dev_count,
|
||||
balance, builder.dispersion)
|
||||
balance, dispersion_trailer)
|
||||
print 'The minimum number of hours before a partition can be ' \
|
||||
'reassigned is %s' % builder.min_part_hours
|
||||
print 'The overload factor is %.6f' % builder.overload
|
||||
@ -637,7 +639,7 @@ swift-ring-builder <builder_file> rebalance [options]
|
||||
)
|
||||
print '-' * 79
|
||||
exit(EXIT_ERROR)
|
||||
if not parts:
|
||||
if not (parts or options.force):
|
||||
print 'No partitions could be reassigned.'
|
||||
print 'Either none need to be or none can be due to ' \
|
||||
'min_part_hours [%s].' % builder.min_part_hours
|
||||
|
@ -147,7 +147,7 @@ class RingBuilder(object):
|
||||
self._last_part_moves = builder['_last_part_moves']
|
||||
self._last_part_gather_start = builder['_last_part_gather_start']
|
||||
self._dispersion_graph = builder.get('_dispersion_graph', {})
|
||||
self.dispersion = builder.get('dispersion', 0.0)
|
||||
self.dispersion = builder.get('dispersion')
|
||||
self._remove_devs = builder['_remove_devs']
|
||||
self._ring = None
|
||||
|
||||
|
@ -381,6 +381,28 @@ class TestRebalanceCommand(unittest.TestCase):
|
||||
out, err = self.run_srb("rebalance")
|
||||
self.assertTrue("rebalance/repush" in out)
|
||||
|
||||
def test_cached_dispersion_value(self):
|
||||
self.run_srb("create", 8, 3, 24)
|
||||
self.run_srb("add",
|
||||
"r1z1-10.1.1.1:2345/sda", 100.0,
|
||||
"r1z1-10.1.1.1:2345/sdb", 100.0,
|
||||
"r1z1-10.1.1.1:2345/sdc", 100.0,
|
||||
"r1z1-10.1.1.1:2345/sdd", 100.0)
|
||||
self.run_srb('rebalance')
|
||||
out, err = self.run_srb() # list devices
|
||||
self.assertTrue('dispersion' in out)
|
||||
# remove cached dispersion value
|
||||
builder = RingBuilder.load(self.tempfile)
|
||||
builder.dispersion = None
|
||||
builder.save(self.tempfile)
|
||||
# now dispersion output is supressed
|
||||
out, err = self.run_srb() # list devices
|
||||
self.assertFalse('dispersion' in out)
|
||||
# but will show up after rebalance
|
||||
self.run_srb('rebalance', '-f')
|
||||
out, err = self.run_srb() # list devices
|
||||
self.assertTrue('dispersion' in out)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
Loading…
x
Reference in New Issue
Block a user