diff --git a/glanceclient/common/utils.py b/glanceclient/common/utils.py index bed25b9..dee9978 100644 --- a/glanceclient/common/utils.py +++ b/glanceclient/common/utils.py @@ -421,6 +421,8 @@ def print_image(image_obj, human_readable=False, max_col_width=None): ignore = ['self', 'access', 'file', 'schema'] image = dict([item for item in image_obj.items() if item[0] not in ignore]) + if 'virtual_size' in image: + image['virtual_size'] = image.get('virtual_size') or 'Not available' if human_readable: image['size'] = make_size_human_readable(image['size']) if str(max_col_width).isdigit(): diff --git a/glanceclient/tests/unit/test_utils.py b/glanceclient/tests/unit/test_utils.py index a63ee80..3ef585a 100644 --- a/glanceclient/tests/unit/test_utils.py +++ b/glanceclient/tests/unit/test_utils.py @@ -138,6 +138,44 @@ class TestUtils(testtools.TestCase): +--------------------------------------+--------------------------------------+ | b8e1c57e-907a-4239-aed8-0df8e54b8d2d | ['Name1', 'Tag_123', 'veeeery long'] | +--------------------------------------+--------------------------------------+ +''', + output_list.getvalue()) + + def test_print_image_virtual_size_available(self): + image = {'id': '42', 'virtual_size': 1337} + saved_stdout = sys.stdout + try: + sys.stdout = output_list = six.StringIO() + utils.print_image(image) + finally: + sys.stdout = saved_stdout + + self.assertEqual('''\ ++--------------+-------+ +| Property | Value | ++--------------+-------+ +| id | 42 | +| virtual_size | 1337 | ++--------------+-------+ +''', + output_list.getvalue()) + + def test_print_image_virtual_size_not_available(self): + image = {'id': '42', 'virtual_size': None} + saved_stdout = sys.stdout + try: + sys.stdout = output_list = six.StringIO() + utils.print_image(image) + finally: + sys.stdout = saved_stdout + + self.assertEqual('''\ ++--------------+---------------+ +| Property | Value | ++--------------+---------------+ +| id | 42 | +| virtual_size | Not available | ++--------------+---------------+ ''', output_list.getvalue())