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