Exemplo n.º 1
0
def do_show_vnics_information(vnics, mode, details=False):
    """
    Show given vNIC information
    parameter
    ---------
        vnics : OCIVNIC instances
        mode : the output mode as str (text,json,parsable)
        details : display detailed information ?
    """
    def _display_secondary_ip_subnet(_, privip):
        _sn = privip.get_subnet()
        return '%s (%s)' % (_sn.get_display_name(), _sn.get_cidr_block())

    _title = 'VNIs Information'
    _columns = [['Name', 32, 'get_display_name']]
    _columns.append(['Private IP', 15, 'get_private_ip'])
    _columns.append(['OCID', 90, 'get_ocid'])
    _columns.append(['MAC', 17, 'get_mac_address'])
    printerKlass = get_row_printer_impl(mode)
    if details:
        printerKlass = get_row_printer_impl('text')
        _columns.append(['Primary', 7, 'is_primary'])
        _columns.append(['Subnet', 25, 'get_subnet'])
        _columns.append(['NIC', 3, 'get_nic_index'])
        _columns.append(['Public IP', 15, 'get_public_ip'])
        _columns.append(
            ['Availability domain', 20, 'get_availability_domain_name'])

        ips_printer = TextPrinter(
            title='Private IP addresses:',
            columns=(['IP address', 15,
                      'get_address'], ['OCID', '90', 'get_ocid'
                                       ], ['Hostname', 25, 'get_hostname'],
                     ['Subnet', 24, _display_secondary_ip_subnet]),
            printer=IndentPrinter(3))

    printer = printerKlass(title=_title, columns=_columns)
    printer.printHeader()
    for vnic in vnics:
        print()
        printer.printRow(vnic)
        if details:
            private_ips = vnic.all_private_ips()
            if len(private_ips) > 1:
                # private_ips include the primary we won't print (>1)
                ips_printer.printHeader()
                for p_ip in private_ips:
                    if not p_ip.is_primary():
                        # primary already displayed
                        ips_printer.printRow(p_ip)
                        print()
            ips_printer.printFooter()
            ips_printer.finish()
    printer.printFooter()
    printer.finish()
Exemplo n.º 2
0
def compat_show_vnics_information():
    """
    Show the current vNIC configuration of the instance based on


    parameters
    ----------
     mode : output mode as str 'json','test','table','parsable','json'
     details : display details information ?

    Returns
    -------
       No return value.
    """

    def _display_subnet(_, vnic):
        """return subnet display name of this vnic """
        return vnic.get_subnet().get_display_name()
    def _display_secondary_ip_subnet(_, privip):
        _sn = privip.get_subnet()
        return '%s (%s)' % (_sn.get_display_name() ,_sn.get_cidr_block())
    def _display_vnic_name(_, vn):
        if vn.is_primary():
            return '%s (primary)' % vn.get_display_name()
        return vn.get_display_name()

    sess = get_oci_api_session()
    if sess is None:
        _logger.error("Failed to get API session.")
        return
    _logger.debug('getting instance ')
    inst = sess.this_instance()
    if inst is None:
        _logger.error("Failed to get information from OCI.")
        return
    _logger.debug('getting all vnics ')
    vnics = inst.all_vnics()
    _logger.debug('got for printing')

    _title = 'VNIC configuration for instance %s' % inst.get_display_name()

    _columns=(['Name',32,_display_vnic_name],
        ['Hostname',25,'get_hostname'],
        ['MAC',17,'get_mac_address'],
        ['Public IP',15,'get_public_ip'],
        ['Private IP(s)',15,'get_private_ip'],
        ['Subnet',18,_display_subnet],
        ['OCID',90,'get_ocid'])


    printer = TextPrinter(title=_title, columns=_columns, column_separator='')
    ips_printer = TextPrinter(title='Private IP addresses:',
            columns=(['IP address',15,'get_address'],['OCID','90','get_ocid'],['Hostname',25,'get_hostname'],
            ['Subnet',24,_display_secondary_ip_subnet]),printer=IndentPrinter(3))

    printer.printHeader()
    for vnic in vnics:
        printer.printRow(vnic)
        _all_p_ips = vnic.all_private_ips()
        if len(_all_p_ips) > 1:
            # _all_p_ips include the primary we won't print (>1)
            ips_printer.printHeader()
            for p_ip in _all_p_ips:
                if not p_ip.is_primary():
                    # primary already displayed
                    ips_printer.printRow(p_ip)
            printer.rowBreak()
            ips_printer.printFooter()
            ips_printer.finish()
    printer.printFooter()
    printer.finish()
Exemplo n.º 3
0
 def test_text_printer(self):
     tp=TextPrinter(title="mytitle",columns=(['COL1',25,'attr1'],['COL2',10,'attr2'],['COL3',12,'attr3'],['COL4-1',10,_mycallback]))
     tp.printHeader()
     tp.printRow(_mylist)
     tp.printRow(_mylist2)
     tp.printRow(_mydict)
     tp.printRow(_myfoo)
     tp.printKeyValue("myattr","myValue")
     tp.printFooter()
     tp.finish()