Ejemplo n.º 1
0
Archivo: f5.py Proyecto: jonozzz/iRack
        update['is_ha'] = is_ha
        
        if marketing_name:
            update['marketing_name'] = unicode(marketing_name)
        
        update['ha_state'] = const.HA_STATE_MAP.get(ha_state)

        if sysuptime:
            update['uptime'] = datetime.timedelta(*divmod(sysuptime, 
                                                          const.SECS_PER_DAY))
        update['clock_skew'] = datetime.datetime.utcnow() - \
             datetime.datetime(systime['year'], systime['month'], systime['day'],
                               systime['hour'], systime['minute'], systime['second'])

        if ssh:
            (rc, stdout, stderr) = ssh_exec(ssh, 'physmem')
            if not rc:
                update['memsize'] = int(stdout)
            else:
                log.error(stderr)
            (rc, stdout, stderr) = ssh_exec(ssh, 
                                    'source /etc/bashrc; if [ -x /bin/ps1 ]; '
                                'then /bin/ps1; elif [ -f /var/prompt/ps1 ]; '
                                'then getPromptStatus; else echo "Active"; fi')
            if not rc:
                update['cli_prompt'] = stdout.strip().split(':')[-1]
            else:
                log.error(stderr)
            
            # If lm exists grep returns 0. So 0 means YES it's 64 bit.
            (rc, stdout, stderr) = ssh_exec(ssh, r'grep "\blm\b" /proc/cpuinfo>/dev/null')
Ejemplo n.º 2
0
def populate_ttyusb(asset, user, log, options=None):
    from labinventory.asset.constants import TTYUSB_CONF, TTYUSB_BAUD
    if options is None:
        options = {}

    log.info("Started ttyUSB HUB populator")
    try:
        bag = asset.get_static_bag()
        mgmtip = bag.address_set.get(access=True)
    # Bail if no mgmt addresses are found.
    except ObjectDoesNotExist:
        raise ValueError("No mgmt addresses found.")

    ##
    for cred in bag.credential_set.filter(type=const.CT_SSH):
        ssh = ssh_process(unicode(mgmtip.address), cred.username,
                          cred.password, timeout=conf.SSH_CONNECT_TIMEOUT)
        break
    
    (rc, stdout, stderr) = ssh_exec(ssh, 'grep {0} {1}'.format(TTYUSB_BAUD, 
                                                               TTYUSB_CONF))
    port_list = []
    if not rc:
        # line::
        # 3101:on:/dev/ttyUSB1-1:B19200 CLOCAL IGNBRK CRTSCTS CS8 CREAD;
        for line in stdout.strip().splitlines():
            if line:
                port_list.append(line.split(':'))
    else:
        log.error(stderr)

    ##
    
    any_changes = False
    with reversion.revision:
        for i in xrange(len(port_list)):
            defaults = {}
            defaultsextra = {}
            defaults['name'] = unicode(port_list[i][2].split('/dev/ttyUSB')[1])
            defaults['type'] = const.PORT_SERIAL
            
            defaultsextra['label'] = unicode(port_list[i][2])
            
            # port_props::
            # B19200 CLOCAL IGNBRK CRTSCTS CS8 CREAD;
            port_props = port_list[i][3][:-1].split()
            defaultsextra['telnet_port'] = int(port_list[i][0])
            defaultsextra['serial_baud'] = int(port_props[0][1:])

            check_for = {
                'name': defaults['name'],
                'type': defaults['type']
            }
            
            port, created = asset.port_set.get_or_create(defaults = defaults,
                                                         **check_for)

            try:
                port = port.morph()
            except TtyUsbPort.DoesNotExist:
                created = True

            defaults.update(defaultsextra)
            if created:
                TtyUsbPort.objects.create(id=port.id, asset=port.asset,
                                          **defaults)
            port = port.morph()

            any_changes |= update_if_changed((port, created), defaults)

        reversion.revision.user = user
    
    log.info("Done")
    #return any_changes
    return True