@@ -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