Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
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