def cli(env, identifier, passwords, price):
    """Get details for a hardware device."""

    hardware = SoftLayer.HardwareManager(env.client)

    table = formatting.KeyValueTable(['name', 'value'])
    table.align['name'] = 'r'
    table.align['value'] = 'l'

    hardware_id = helpers.resolve_id(hardware.resolve_ids, identifier, 'hardware')
    result = hardware.get_hardware(hardware_id)
    result = utils.NestedDict(result)

    operating_system = utils.lookup(result, 'operatingSystem', 'softwareLicense', 'softwareDescription') or {}
    memory = formatting.gb(result.get('memoryCapacity', 0))
    owner = None
    if utils.lookup(result, 'billingItem') != []:
        owner = utils.lookup(result, 'billingItem', 'orderItem', 'order', 'userRecord', 'username')

    table.add_row(['id', result['id']])
    table.add_row(['guid', result['globalIdentifier'] or formatting.blank()])
    table.add_row(['hostname', result['hostname']])
    table.add_row(['domain', result['domain']])
    table.add_row(['fqdn', result['fullyQualifiedDomainName']])
    table.add_row(['status', result['hardwareStatus']['status']])
    table.add_row(['datacenter', result['datacenter']['name'] or formatting.blank()])
    table.add_row(['cores', result['processorPhysicalCoreAmount']])
    table.add_row(['memory', memory])
    table.add_row(['public_ip', result['primaryIpAddress'] or formatting.blank()])
    table.add_row(['private_ip', result['primaryBackendIpAddress'] or formatting.blank()])
    table.add_row(['ipmi_ip', result['networkManagementIpAddress'] or formatting.blank()])
    table.add_row(['os', operating_system.get('name') or formatting.blank()])
    table.add_row(['os_version', operating_system.get('version') or formatting.blank()])
    table.add_row(['created', result['provisionDate'] or formatting.blank()])
    table.add_row(['owner', owner or formatting.blank()])

    vlan_table = formatting.Table(['type', 'number', 'id'])
    for vlan in result['networkVlans']:
        vlan_table.add_row([vlan['networkSpace'], vlan['vlanNumber'], vlan['id']])

    table.add_row(['vlans', vlan_table])

    if result.get('notes'):
        table.add_row(['notes', result['notes']])

    if price:
        total_price = utils.lookup(result, 'billingItem', 'nextInvoiceTotalRecurringAmount') or 0

        price_table = formatting.Table(['Item', 'Recurring Price'])
        price_table.add_row(['Total', total_price])

        for item in utils.lookup(result, 'billingItem', 'children') or []:
            price_table.add_row([item['description'], item['nextInvoiceTotalRecurringAmount']])

        table.add_row(['prices', price_table])

    if passwords:
        pass_table = formatting.Table(['username', 'password'])
        for item in result['operatingSystem']['passwords']:
            pass_table.add_row([item['username'], item['password']])
        table.add_row(['users', pass_table])

        pass_table = formatting.Table(['ipmi_username', 'password'])
        for item in result['remoteManagementAccounts']:
            pass_table.add_row([item['username'], item['password']])
        table.add_row(['remote users', pass_table])

    table.add_row(['tags', formatting.tags(result['tagReferences'])])

    env.fout(table)
def cli ( env , identifier , passwords , price ) : hardware = SoftLayer . HardwareManager ( env . client ) table = formatting . KeyValueTable ( [ 'name' , 'value' ] ) table . align [ 'name' ] = 'r' table . align [ 'value' ] = 'l' hardware_id = helpers . resolve_id ( hardware . resolve_ids , identifier , 'hardware' ) result = hardware . get_hardware ( hardware_id ) result = utils . NestedDict ( result ) operating_system = utils . lookup ( result , 'operatingSystem' , 'softwareLicense' , 'softwareDescription' ) or { } memory = formatting . gb ( result . get ( 'memoryCapacity' , 0 ) ) owner = None if utils . lookup ( result , 'billingItem' ) != [ ] : owner = utils . lookup ( result , 'billingItem' , 'orderItem' , 'order' , 'userRecord' , 'username' ) table . add_row ( [ 'id' , result [ 'id' ] ] ) table . add_row ( [ 'guid' , result [ 'globalIdentifier' ] or formatting . blank ( ) ] ) table . add_row ( [ 'hostname' , result [ 'hostname' ] ] ) table . add_row ( [ 'domain' , result [ 'domain' ] ] ) table . add_row ( [ 'fqdn' , result [ 'fullyQualifiedDomainName' ] ] ) table . add_row ( [ 'status' , result [ 'hardwareStatus' ] [ 'status' ] ] ) table . add_row ( [ 'datacenter' , result [ 'datacenter' ] [ 'name' ] or formatting . blank ( ) ] ) table . add_row ( [ 'cores' , result [ 'processorPhysicalCoreAmount' ] ] ) table . add_row ( [ 'memory' , memory ] ) table . add_row ( [ 'public_ip' , result [ 'primaryIpAddress' ] or formatting . blank ( ) ] ) table . add_row ( [ 'private_ip' , result [ 'primaryBackendIpAddress' ] or formatting . blank ( ) ] ) table . add_row ( [ 'ipmi_ip' , result [ 'networkManagementIpAddress' ] or formatting . blank ( ) ] ) table . add_row ( [ 'os' , operating_system . get ( 'name' ) or formatting . blank ( ) ] ) table . add_row ( [ 'os_version' , operating_system . get ( 'version' ) or formatting . blank ( ) ] ) table . add_row ( [ 'created' , result [ 'provisionDate' ] or formatting . blank ( ) ] ) table . add_row ( [ 'owner' , owner or formatting . blank ( ) ] ) vlan_table = formatting . Table ( [ 'type' , 'number' , 'id' ] ) for vlan in result [ 'networkVlans' ] : vlan_table . add_row ( [ vlan [ 'networkSpace' ] , vlan [ 'vlanNumber' ] , vlan [ 'id' ] ] ) table . add_row ( [ 'vlans' , vlan_table ] ) if result . get ( 'notes' ) : table . add_row ( [ 'notes' , result [ 'notes' ] ] ) if price : total_price = utils . lookup ( result , 'billingItem' , 'nextInvoiceTotalRecurringAmount' ) or 0 price_table = formatting . Table ( [ 'Item' , 'Recurring Price' ] ) price_table . add_row ( [ 'Total' , total_price ] ) for item in utils . lookup ( result , 'billingItem' , 'children' ) or [ ] : price_table . add_row ( [ item [ 'description' ] , item [ 'nextInvoiceTotalRecurringAmount' ] ] ) table . add_row ( [ 'prices' , price_table ] ) if passwords : pass_table = formatting . Table ( [ 'username' , 'password' ] ) for item in result [ 'operatingSystem' ] [ 'passwords' ] : pass_table . add_row ( [ item [ 'username' ] , item [ 'password' ] ] ) table . add_row ( [ 'users' , pass_table ] ) pass_table = formatting . Table ( [ 'ipmi_username' , 'password' ] ) for item in result [ 'remoteManagementAccounts' ] : pass_table . add_row ( [ item [ 'username' ] , item [ 'password' ] ] ) table . add_row ( [ 'remote users' , pass_table ] ) table . add_row ( [ 'tags' , formatting . tags ( result [ 'tagReferences' ] ) ] ) env . fout ( table )
Get details for a hardware device.