|
| 1 | +"""List number of block storage volumes per datacenter.""" |
| 2 | +# :license: MIT, see LICENSE for more details. |
| 3 | + |
| 4 | +import click |
| 5 | +import SoftLayer |
| 6 | +from SoftLayer.CLI import columns as column_helper |
| 7 | +from SoftLayer.CLI import environment |
| 8 | +from SoftLayer.CLI import formatting |
| 9 | + |
| 10 | +COLUMNS = [ |
| 11 | + column_helper.Column('Datacenter', |
| 12 | + ('serviceResource', 'datacenter', 'name'), |
| 13 | + mask="serviceResource.datacenter.name"), |
| 14 | + column_helper.Column('Count', |
| 15 | + '', |
| 16 | + mask=None) |
| 17 | +] |
| 18 | + |
| 19 | +DEFAULT_COLUMNS = [ |
| 20 | + 'Datacenter', |
| 21 | + 'Count' |
| 22 | +] |
| 23 | + |
| 24 | + |
| 25 | +@click.command() |
| 26 | +@click.option('--datacenter', '-d', help='Datacenter shortname') |
| 27 | +@click.option('--sortby', help='Column to sort by', default='Datacenter') |
| 28 | +@click.option('--columns', |
| 29 | + callback=column_helper.get_formatter(COLUMNS), |
| 30 | + help='Columns to display. Options: {0}'.format( |
| 31 | + ', '.join(column.name for column in COLUMNS)), |
| 32 | + default=','.join(DEFAULT_COLUMNS)) |
| 33 | +@environment.pass_env |
| 34 | +def cli(env, sortby, columns, datacenter): |
| 35 | + """List number of block storage volumes per datacenter.""" |
| 36 | + block_manager = SoftLayer.BlockStorageManager(env.client) |
| 37 | + block_volumes = block_manager.list_block_volumes(datacenter=datacenter, |
| 38 | + mask=columns.mask()) |
| 39 | + |
| 40 | + # cycle through all block volumes and count datacenter occurences. |
| 41 | + datacenters = dict() |
| 42 | + for volume in block_volumes: |
| 43 | + service_resource = volume['serviceResource'] |
| 44 | + if 'datacenter' in service_resource: |
| 45 | + datacenter = service_resource['datacenter']['name'] |
| 46 | + if datacenter not in datacenters.keys(): |
| 47 | + datacenters[datacenter] = 1 |
| 48 | + else: |
| 49 | + datacenters[datacenter] += 1 |
| 50 | + |
| 51 | + table = formatting.KeyValueTable(columns.columns) |
| 52 | + table.sortby = sortby |
| 53 | + for datacenter in datacenters: |
| 54 | + table.add_row([datacenter, datacenters[datacenter]]) |
| 55 | + env.fout(table) |
0 commit comments