Example #1
0
File: f5.py Project: jonozzz/iRack
def get_ssh(asset, log):
    try:
        bag = asset.get_static_bag()
        mgmtip = bag.address_set.get(access=True)
    # Bail if no mgmt addresses are found.
    except Address.DoesNotExist: #@UndefinedVariable
        raise ValueError("No mgmt addresses found.")

    for cred in bag.credential_set.filter(type=const.CT_SSH):
        try:
            ssh = ssh_process(unicode(mgmtip.address), cred.username,
                              cred.password, timeout=conf.SSH_CONNECT_TIMEOUT)
        except BadAuthenticationType:
            log.info('bad ssh credential %s', cred)
            continue

        if ssh:
            log.info('good ssh credential %s', cred)
            cred.save()
            return ssh

    return None
Example #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