1"""List hosts with access to block volume.""" 2# :license: MIT, see LICENSE for more details. 3 4import click 5import SoftLayer 6from SoftLayer.CLI import columns as column_helper 7from SoftLayer.CLI import environment 8from SoftLayer.CLI import formatting 9from SoftLayer.CLI import helpers 10from SoftLayer.CLI import storage_utils 11 12 13@click.command() 14@click.argument('volume_id') 15@click.option('--sortby', help='Column to sort by', default='name') 16@click.option('--columns', 17 callback=column_helper.get_formatter(storage_utils.COLUMNS), 18 help='Columns to display. Options: {0}'.format( 19 ', '.join(column.name for column in storage_utils.COLUMNS)), 20 default=','.join(storage_utils.DEFAULT_COLUMNS)) 21@environment.pass_env 22def cli(env, columns, sortby, volume_id): 23 """List ACLs.""" 24 block_manager = SoftLayer.BlockStorageManager(env.client) 25 resolved_id = helpers.resolve_id(block_manager.resolve_ids, volume_id, 'Volume Id') 26 access_list = block_manager.get_block_volume_access_list( 27 volume_id=resolved_id) 28 table = formatting.Table(columns.columns) 29 table.sortby = sortby 30 31 for key, type_name in [('allowedVirtualGuests', 'VIRTUAL'), 32 ('allowedHardware', 'HARDWARE'), 33 ('allowedSubnets', 'SUBNET'), 34 ('allowedIpAddresses', 'IP')]: 35 for obj in access_list.get(key, []): 36 obj['type'] = type_name 37 table.add_row([value or formatting.blank() 38 for value in columns.row(obj)]) 39 40 env.fout(table) 41