Skip to content

Commit 0a84e45

Browse files
Merge pull request #1479 from ATGE/issues/1449
Add image detail transaction data
2 parents 7b2d070 + 9a8fcf8 commit 0a84e45

File tree

2 files changed

+37
-12
lines changed

2 files changed

+37
-12
lines changed

SoftLayer/CLI/image/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55

66
MASK = ('id,accountId,name,globalIdentifier,parentId,publicFlag,flexImageFlag,'
77
'imageType')
8-
DETAIL_MASK = MASK + (',children[id,blockDevicesDiskSpaceTotal,datacenter],'
8+
DETAIL_MASK = MASK + (',firstChild,children[id,blockDevicesDiskSpaceTotal,datacenter,'
9+
'transaction[transactionGroup,transactionStatus]],'
910
'note,createDate,status,transaction')
1011
PUBLIC_TYPE = formatting.FormattedItem('PUBLIC', 'Public')
1112
PRIVATE_TYPE = formatting.FormattedItem('PRIVATE', 'Private')

SoftLayer/CLI/image/detail.py

Lines changed: 35 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,10 @@ def cli(env, identifier):
1919

2020
image_mgr = SoftLayer.ImageManager(env.client)
2121
image_id = helpers.resolve_id(image_mgr.resolve_ids, identifier, 'image')
22-
2322
image = image_mgr.get_image(image_id, mask=image_mod.DETAIL_MASK)
24-
disk_space = 0
25-
datacenters = []
26-
for child in image.get('children'):
27-
disk_space = int(child.get('blockDevicesDiskSpaceTotal', 0))
28-
if child.get('datacenter'):
29-
datacenters.append(utils.lookup(child, 'datacenter', 'name'))
23+
24+
children_images = image.get('children')
25+
total_size = utils.lookup(image, 'firstChild', 'blockDevicesDiskSpaceTotal') or 0
3026

3127
table = formatting.KeyValueTable(['name', 'value'])
3228
table.align['name'] = 'r'
@@ -40,9 +36,10 @@ def cli(env, identifier):
4036
utils.lookup(image, 'status', 'keyname'),
4137
utils.lookup(image, 'status', 'name'),
4238
)])
39+
4340
table.add_row([
4441
'active_transaction',
45-
formatting.transaction_status(image.get('transaction')),
42+
formatting.listing(_get_transaction_groups(children_images), separator=','),
4643
])
4744
table.add_row(['account', image.get('accountId', formatting.blank())])
4845
table.add_row(['visibility',
@@ -56,8 +53,35 @@ def cli(env, identifier):
5653
table.add_row(['flex', image.get('flexImageFlag')])
5754
table.add_row(['note', image.get('note')])
5855
table.add_row(['created', image.get('createDate')])
59-
table.add_row(['disk_space', formatting.b_to_gb(disk_space)])
60-
table.add_row(['datacenters', formatting.listing(sorted(datacenters),
61-
separator=',')])
56+
table.add_row(['total_size', formatting.b_to_gb(total_size)])
57+
table.add_row(['datacenters', _get_datacenter_table(children_images)])
6258

6359
env.fout(table)
60+
61+
62+
def _get_datacenter_table(children_images):
63+
"""Returns image details as datacenter, size, and transaction within a formatting table.
64+
65+
:param children_images: A list of images.
66+
"""
67+
table_datacenter = formatting.Table(['DC', 'size', 'transaction'])
68+
for child in children_images:
69+
table_datacenter.add_row([
70+
utils.lookup(child, 'datacenter', 'name'),
71+
formatting.b_to_gb(child.get('blockDevicesDiskSpaceTotal', 0)),
72+
formatting.transaction_status(child.get('transaction'))
73+
])
74+
75+
return table_datacenter
76+
77+
78+
def _get_transaction_groups(children_images):
79+
"""Returns a Set of transaction groups.
80+
81+
:param children_images: A list of images.
82+
"""
83+
transactions = set()
84+
for child in children_images:
85+
transactions.add(utils.lookup(child, 'transaction', 'transactionGroup', 'name'))
86+
87+
return transactions

0 commit comments

Comments
 (0)