Merge "Fixed get ring name from recon cli"

This commit is contained in:
Jenkins 2017-04-18 10:25:59 +00:00 committed by Gerrit Code Review
commit 9627bcbc94
2 changed files with 21 additions and 1 deletions

View File

@ -227,7 +227,7 @@ class SwiftRecon(object):
if self.server_type == 'object':
for ring_name in os.listdir(swift_dir):
if ring_name.startswith('object') and \
ring_name.endswith('ring.gz'):
ring_name.endswith('.ring.gz'):
ring_names.add(ring_name)
else:
ring_name = '%s.ring.gz' % self.server_type

View File

@ -263,6 +263,26 @@ class TestRecon(unittest.TestCase):
self.assertEqual(set([('127.0.0.1', 10001),
('127.0.0.2', 10004)]), ips)
def test_get_error_ringnames(self):
# create invalid ring name files
invalid_ring_file_names = ('object.sring.gz',
'object-1.sring.gz',
'broken')
for invalid_ring in invalid_ring_file_names:
ring_path = os.path.join(self.swift_dir, invalid_ring)
with open(ring_path, 'w'):
pass
hosts = [("127.0.0.1", "8080")]
self.recon_instance.verbose = True
self.recon_instance.server_type = 'object'
stdout = StringIO()
with mock.patch('sys.stdout', new=stdout), \
mock.patch('swift.common.utils.md5'):
self.recon_instance.get_ringmd5(hosts, self.swift_dir)
output = stdout.getvalue()
self.assertNotIn('On disk ', output)
def test_get_ringmd5(self):
for server_type in ('account', 'container', 'object', 'object-1'):
ring_name = '%s.ring.gz' % server_type