def run(address, config=None, interactive=False): """Run discovery and return results.""" if config is None: config = {} results = {} if utils.is_valid_ip_address(address): ipaddress = address else: ipaddress = dns.resolve_hostname(address) #TODO(sam): Use ipaddress.ip_address.is_global # " .is_private # " .is_unspecified # " .is_multicast # To determine address "type" if not ipaddress_module.ip_address(unicode(ipaddress)).is_loopback: try: results['domain'] = dns.domain_info(address) except shared.WhoisException as exc: results['domain'] = str(exc) results['address'] = ipaddress results['host'] = host = {'type': 'Undetermined'} if config.get('username'): server = find_nova_host(ipaddress, config) if server: host['type'] = 'Nova instance' host['uri'] = [ l['href'] for l in server.links if l['rel'] == 'self' ][0] host['name'] = server.name host['id'] = server.id host['addresses'] = server.addresses if config.get('system_info'): module_name = config['system_info'].replace("-", "_") if '.' not in module_name: module_name = 'satori.sysinfo.%s' % module_name system_info_module = utils.import_object(module_name) result = system_info_module.get_systeminfo(ipaddress, config, interactive=interactive) host['system_info'] = result return results
def run(address, config=None, interactive=False): """Run discovery and return results.""" if config is None: config = {} results = {} if utils.is_valid_ip_address(address): ipaddress = address else: ipaddress = dns.resolve_hostname(address) #TODO(sam): Use ipaddress.ip_address.is_global # " .is_private # " .is_unspecified # " .is_multicast # To determine address "type" if not ipaddress_module.ip_address(unicode(ipaddress)).is_loopback: try: results['domain'] = dns.domain_info(address) except shared.WhoisException as exc: results['domain'] = str(exc) results['address'] = ipaddress results['host'] = host = {'type': 'Undetermined'} if config.get('username'): server = find_nova_host(ipaddress, config) if server: host['type'] = 'Nova instance' host['uri'] = [l['href'] for l in server.links if l['rel'] == 'self'][0] host['name'] = server.name host['id'] = server.id host['addresses'] = server.addresses if config.get('system_info'): module_name = config['system_info'].replace("-", "_") if '.' not in module_name: module_name = 'satori.sysinfo.%s' % module_name system_info_module = utils.import_object(module_name) result = system_info_module.get_systeminfo(ipaddress, config, interactive=interactive) host['system_info'] = result return results
def discover_host(address, config, interactive=False): """Discover host by IP address.""" host = {} errors = {} if config.get('username'): server = find_nova_host(address, config) if server: host['type'] = 'OS::Nova::Instance' data = {} host['data'] = data data['uri'] = [ l['href'] for l in server.links if l['rel'] == 'self' ][0] data['name'] = server.name data['id'] = server.id data['addresses'] = server.addresses host['key'] = data['uri'] if config.get('system_info'): module_name = config['system_info'].replace("-", "_") if '.' not in module_name: module_name = 'satori.sysinfo.%s' % module_name system_info_module = utils.import_object(module_name) try: result = system_info_module.get_systeminfo(address, config, interactive=interactive) host.setdefault('data', {}) host['data']['system_info'] = result except Exception as exc: exc_traceback = sys.exc_info()[2] errors['system_info'] = { 'type': "ERROR", 'message': str(exc), 'exception': exc, 'traceback': traceback.format_tb(exc_traceback), } return host, errors
def discover_host(address, config, interactive=False): """Discover host by IP address.""" host = {} errors = {} if config.get('username'): server = find_nova_host(address, config) if server: host['type'] = 'OS::Nova::Instance' data = {} host['data'] = data data['uri'] = [l['href'] for l in server.links if l['rel'] == 'self'][0] data['name'] = server.name data['id'] = server.id data['addresses'] = server.addresses host['key'] = data['uri'] if config.get('system_info'): module_name = config['system_info'].replace("-", "_") if '.' not in module_name: module_name = 'satori.sysinfo.%s' % module_name system_info_module = utils.import_object(module_name) try: result = system_info_module.get_systeminfo( address, config, interactive=interactive) host.setdefault('data', {}) host['data']['system_info'] = result except Exception as exc: exc_traceback = sys.exc_info()[2] errors['system_info'] = { 'type': "ERROR", 'message': str(exc), 'exception': exc, 'traceback': traceback.format_tb(exc_traceback), } return host, errors