Skip to content

Commit 8d6270f

Browse files
committed
Adds more details to image commands
1 parent 0ad2acc commit 8d6270f

2 files changed

Lines changed: 48 additions & 10 deletions

File tree

SoftLayer/CLI/formatting.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,15 @@ def mb_to_gb(megabytes):
104104
return FormattedItem(megabytes, "%dG" % (float(megabytes) / 1024))
105105

106106

107+
def b_to_gb(_bytes):
108+
"""Converts number of bytes to a FormattedItem in gigabytes.
109+
110+
:param int _bytes: number of bytes
111+
"""
112+
return FormattedItem(_bytes,
113+
"%.2fG" % (float(_bytes) / 1024 / 1024 / 1024))
114+
115+
107116
def gb(gigabytes): # pylint: disable=C0103
108117
"""Converts number of gigabytes to a FormattedItem in gigabytes.
109118

SoftLayer/CLI/modules/image.py

Lines changed: 39 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,14 @@
1616
from SoftLayer.CLI import exceptions
1717
from SoftLayer.CLI import formatting
1818
from SoftLayer.CLI import helpers
19+
from SoftLayer import utils
20+
21+
MASK = ('id,accountId,name,globalIdentifier,parentId,publicFlag,flexImageFlag,'
22+
'imageType')
23+
DETAIL_MASK = MASK + (',children[id,blockDevicesDiskSpaceTotal,datacenter],'
24+
'note')
25+
PUBLIC_TYPE = formatting.FormattedItem('PUBLIC', 'Public')
26+
PRIVATE_TYPE = formatting.FormattedItem('PRIVATE', 'Private')
1927

2028

2129
class ListImages(environment.CLIRunnable):
@@ -34,32 +42,34 @@ def execute(self, args):
3442
image_mgr = SoftLayer.ImageManager(self.client)
3543

3644
neither = not any([args['--private'], args['--public']])
37-
mask = 'id,accountId,name,globalIdentifier,blockDevices,parentId'
3845

3946
images = []
4047
if args['--private'] or neither:
41-
for image in image_mgr.list_private_images(mask=mask):
42-
image['visibility'] = 'private'
48+
for image in image_mgr.list_private_images(mask=MASK):
4349
images.append(image)
4450

4551
if args['--public'] or neither:
46-
for image in image_mgr.list_public_images(mask=mask):
47-
image['visibility'] = 'public'
52+
for image in image_mgr.list_public_images(mask=MASK):
4853
images.append(image)
4954

5055
table = formatting.Table(['id',
5156
'account',
52-
'visibility',
5357
'name',
58+
'type',
59+
'visibility',
5460
'global_identifier'])
5561

5662
images = [image for image in images if image['parentId'] == '']
5763
for image in images:
64+
5865
table.add_row([
5966
image['id'],
6067
image.get('accountId', formatting.blank()),
61-
image['visibility'],
6268
image['name'].strip(),
69+
formatting.FormattedItem(
70+
utils.lookup(image, 'imageType', 'keyName'),
71+
utils.lookup(image, 'imageType', 'name')),
72+
PUBLIC_TYPE if image['publicFlag'] else PRIVATE_TYPE,
6373
image.get('globalIdentifier', formatting.blank()),
6474
])
6575

@@ -80,17 +90,36 @@ def execute(self, args):
8090
args.get('<identifier>'),
8191
'image')
8292

83-
image = image_mgr.get_image(image_id)
93+
image = image_mgr.get_image(image_id, mask=DETAIL_MASK)
8494

8595
table = formatting.KeyValueTable(['Name', 'Value'])
8696
table.align['Name'] = 'r'
8797
table.align['Value'] = 'l'
8898

8999
table.add_row(['id', image['id']])
90-
table.add_row(['account', image.get('accountId', formatting.blank())])
91-
table.add_row(['name', image['name'].strip()])
92100
table.add_row(['global_identifier',
93101
image.get('globalIdentifier', formatting.blank())])
102+
table.add_row(['name', image['name'].strip()])
103+
table.add_row(['account', image.get('accountId', formatting.blank())])
104+
table.add_row(['visibility',
105+
PUBLIC_TYPE if image['publicFlag'] else PRIVATE_TYPE])
106+
table.add_row(['type',
107+
formatting.FormattedItem(
108+
utils.lookup(image, 'imageType', 'keyName'),
109+
utils.lookup(image, 'imageType', 'name'),
110+
)])
111+
table.add_row(['flex', image.get('flexImageFlag')])
112+
table.add_row(['note', image.get('note')])
113+
disk_space = 0
114+
datacenters = []
115+
for child in image.get('children'):
116+
disk_space = child.get('blockDevicesDiskSpaceTotal', 0)
117+
if child.get('datacenter'):
118+
datacenters.append(utils.lookup(child, 'datacenter', 'name'))
119+
120+
table.add_row(['disk_space', formatting.b_to_gb(disk_space)])
121+
table.add_row(['datacenters', formatting.listing(datacenters,
122+
separator=',')])
94123

95124
return table
96125

0 commit comments

Comments
 (0)