Skip to content

Commit 7b70143

Browse files
Jenkinsopenstack-gerrit
authored andcommitted
Merge "Add more columns to image list output"
2 parents 01f7a5f + e1c32b8 commit 7b70143

4 files changed

Lines changed: 112 additions & 2 deletions

File tree

‎openstackclient/image/v1/image.py‎

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,12 @@ def get_parser(self, prog_name):
291291
metavar="<size>",
292292
help="Number of images to request in each paginated request",
293293
)
294+
parser.add_argument(
295+
'--long',
296+
action='store_true',
297+
default=False,
298+
help='List additional fields in output',
299+
)
294300
return parser
295301

296302
def take_action(self, parsed_args):
@@ -303,7 +309,11 @@ def take_action(self, parsed_args):
303309
kwargs["page_size"] = parsed_args.page_size
304310

305311
data = image_client.images.list(**kwargs)
306-
columns = ["ID", "Name"]
312+
if parsed_args.long:
313+
columns = ('ID', 'Name', 'Disk Format', 'Container Format',
314+
'Size', 'Status')
315+
else:
316+
columns = ("ID", "Name")
307317

308318
return (columns, (utils.get_item_properties(s, columns) for s in data))
309319

‎openstackclient/image/v2/image.py‎

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,12 @@ def get_parser(self, prog_name):
6363
metavar="<size>",
6464
help="Number of images to request in each paginated request",
6565
)
66+
parser.add_argument(
67+
'--long',
68+
action='store_true',
69+
default=False,
70+
help='List additional fields in output',
71+
)
6672
return parser
6773

6874
def take_action(self, parsed_args):
@@ -75,7 +81,11 @@ def take_action(self, parsed_args):
7581
kwargs["page_size"] = parsed_args.page_size
7682

7783
data = image_client.images.list(**kwargs)
78-
columns = ["ID", "Name"]
84+
if parsed_args.long:
85+
columns = ('ID', 'Name', 'Disk Format', 'Container Format',
86+
'Size', 'Status')
87+
else:
88+
columns = ("ID", "Name")
7989

8090
return (columns, (utils.get_item_properties(s, columns) for s in data))
8191

‎openstackclient/tests/image/v1/test_image.py‎

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -446,3 +446,48 @@ def test_image_set_properties(self):
446446
image_fakes.image_id,
447447
**kwargs
448448
)
449+
450+
451+
class TestImageList(TestImage):
452+
453+
def setUp(self):
454+
super(TestImageList, self).setUp()
455+
456+
# This is the return value for utils.find_resource()
457+
self.images_mock.list.return_value = [
458+
fakes.FakeResource(
459+
None,
460+
copy.deepcopy(image_fakes.IMAGE),
461+
loaded=True,
462+
),
463+
]
464+
465+
# Get the command object to test
466+
self.cmd = image.ListImage(self.app, None)
467+
468+
def test_image_list_long_option(self):
469+
arglist = [
470+
'--long',
471+
]
472+
verifylist = [
473+
('long', True),
474+
]
475+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
476+
477+
# DisplayCommandBase.take_action() returns two tuples
478+
columns, data = self.cmd.take_action(parsed_args)
479+
self.images_mock.list.assert_called_with()
480+
481+
collist = ('ID', 'Name', 'Disk Format', 'Container Format',
482+
'Size', 'Status')
483+
484+
self.assertEqual(columns, collist)
485+
datalist = ((
486+
image_fakes.image_id,
487+
image_fakes.image_name,
488+
'',
489+
'',
490+
'',
491+
'',
492+
), )
493+
self.assertEqual(datalist, tuple(data))

‎openstackclient/tests/image/v2/test_image.py‎

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,48 @@ def test_image_delete_no_options(self):
6161
self.images_mock.delete.assert_called_with(
6262
image_fakes.image_id,
6363
)
64+
65+
66+
class TestImageList(TestImage):
67+
68+
def setUp(self):
69+
super(TestImageList, self).setUp()
70+
71+
# This is the return value for utils.find_resource()
72+
self.images_mock.list.return_value = [
73+
fakes.FakeResource(
74+
None,
75+
copy.deepcopy(image_fakes.IMAGE),
76+
loaded=True,
77+
),
78+
]
79+
80+
# Get the command object to test
81+
self.cmd = image.ListImage(self.app, None)
82+
83+
def test_image_list_long_option(self):
84+
arglist = [
85+
'--long',
86+
]
87+
verifylist = [
88+
('long', True),
89+
]
90+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
91+
92+
# DisplayCommandBase.take_action() returns two tuples
93+
columns, data = self.cmd.take_action(parsed_args)
94+
self.images_mock.list.assert_called_with()
95+
96+
collist = ('ID', 'Name', 'Disk Format', 'Container Format',
97+
'Size', 'Status')
98+
99+
self.assertEqual(columns, collist)
100+
datalist = ((
101+
image_fakes.image_id,
102+
image_fakes.image_name,
103+
'',
104+
'',
105+
'',
106+
'',
107+
), )
108+
self.assertEqual(datalist, tuple(data))

0 commit comments

Comments
 (0)