Add --includes to s-m-s-r
Change-Id: I31d11af3fdba844c5cd632925b8fd774b109dbd1
This commit is contained in:
parent
a7b9d1ea69
commit
55386c836d
@ -273,6 +273,7 @@ def find_ranges(broker, args):
|
|||||||
|
|
||||||
def show_shard_ranges(broker, args):
|
def show_shard_ranges(broker, args):
|
||||||
shard_ranges = broker.get_shard_ranges(
|
shard_ranges = broker.get_shard_ranges(
|
||||||
|
includes=getattr(args, 'includes', None),
|
||||||
include_deleted=getattr(args, 'include_deleted', False))
|
include_deleted=getattr(args, 'include_deleted', False))
|
||||||
shard_data = [dict(sr, state=sr.state_text)
|
shard_data = [dict(sr, state=sr.state_text)
|
||||||
for sr in shard_ranges]
|
for sr in shard_ranges]
|
||||||
@ -552,6 +553,8 @@ def _make_parser():
|
|||||||
show_parser.add_argument(
|
show_parser.add_argument(
|
||||||
'--brief', '-b', action='store_true', default=False,
|
'--brief', '-b', action='store_true', default=False,
|
||||||
help='Show only shard range bounds in output.')
|
help='Show only shard range bounds in output.')
|
||||||
|
show_parser.add_argument('--includes',
|
||||||
|
help='limit shard ranges to include key')
|
||||||
show_parser.set_defaults(func=show_shard_ranges)
|
show_parser.set_defaults(func=show_shard_ranges)
|
||||||
|
|
||||||
# info
|
# info
|
||||||
|
@ -423,6 +423,47 @@ class TestManageShardRanges(unittest.TestCase):
|
|||||||
self.assertEqual(['Loaded db broker for a/c.'],
|
self.assertEqual(['Loaded db broker for a/c.'],
|
||||||
err.getvalue().splitlines())
|
err.getvalue().splitlines())
|
||||||
|
|
||||||
|
def test_show(self):
|
||||||
|
broker = self._make_broker()
|
||||||
|
out = StringIO()
|
||||||
|
err = StringIO()
|
||||||
|
with mock.patch('sys.stdout', out), mock.patch('sys.stderr', err):
|
||||||
|
main([broker.db_file, 'show'])
|
||||||
|
expected = [
|
||||||
|
'Loaded db broker for a/c.',
|
||||||
|
'No shard data found.',
|
||||||
|
]
|
||||||
|
self.assertEqual(expected, err.getvalue().splitlines())
|
||||||
|
self.assertEqual('', out.getvalue())
|
||||||
|
|
||||||
|
shard_ranges = make_shard_ranges(broker, self.shard_data, '.shards_')
|
||||||
|
expected_shard_ranges = [
|
||||||
|
dict(sr, state=ShardRange.STATES[sr.state])
|
||||||
|
for sr in shard_ranges
|
||||||
|
]
|
||||||
|
broker.merge_shard_ranges(shard_ranges)
|
||||||
|
out = StringIO()
|
||||||
|
err = StringIO()
|
||||||
|
with mock.patch('sys.stdout', out), mock.patch('sys.stderr', err):
|
||||||
|
main([broker.db_file, 'show'])
|
||||||
|
expected = [
|
||||||
|
'Loaded db broker for a/c.',
|
||||||
|
'Existing shard ranges:',
|
||||||
|
]
|
||||||
|
self.assertEqual(expected, err.getvalue().splitlines())
|
||||||
|
self.assertEqual(expected_shard_ranges, json.loads(out.getvalue()))
|
||||||
|
|
||||||
|
out = StringIO()
|
||||||
|
err = StringIO()
|
||||||
|
with mock.patch('sys.stdout', out), mock.patch('sys.stderr', err):
|
||||||
|
main([broker.db_file, 'show', '--includes', 'foo'])
|
||||||
|
expected = [
|
||||||
|
'Loaded db broker for a/c.',
|
||||||
|
'Existing shard ranges:',
|
||||||
|
]
|
||||||
|
self.assertEqual(expected, err.getvalue().splitlines())
|
||||||
|
self.assertEqual(expected_shard_ranges[:1], json.loads(out.getvalue()))
|
||||||
|
|
||||||
def test_replace(self):
|
def test_replace(self):
|
||||||
broker = self._make_broker()
|
broker = self._make_broker()
|
||||||
broker.update_metadata({'X-Container-Sysmeta-Sharding':
|
broker.update_metadata({'X-Container-Sysmeta-Sharding':
|
||||||
|
Loading…
x
Reference in New Issue
Block a user