1616from SoftLayer .CLI import exceptions
1717from SoftLayer .CLI import formatting
1818from 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
2129class 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