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
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