Example #1
0
def _get(vdsmnets=None):
    """
    Generate a networking report for all devices.
    In case vdsmnets is provided, it is used in the report instead of
    retrieving data from the running config.
    :return: Dict of networking devices with all their details.
    """
    ipaddrs = getIpAddrs()
    routes = get_routes()

    devices_info = _devices_report(ipaddrs, routes)
    nets_info = _networks_report(vdsmnets, routes, ipaddrs, devices_info)

    add_qos_info_to_devices(nets_info, devices_info)

    flat_devs_info = _get_flat_devs_info(devices_info)
    devices = _get_dev_names(nets_info, flat_devs_info)
    extra_info = {}
    if nmstate.is_nmstate_backend():
        extra_info.update(_get_devices_info_from_nmstate(devices))
    else:
        extra_info.update(dhclient.dhcp_info(devices))

    _update_caps_info(nets_info, flat_devs_info, extra_info)

    networking_report = {'networks': nets_info}
    networking_report.update(devices_info)
    if nmstate.is_nmstate_backend():
        networking_report['nameservers'] = nmstate.show_nameservers()
    else:
        networking_report['nameservers'] = dns.get_host_nameservers()
    networking_report['supportsIPv6'] = ipv6_supported()

    return networking_report
Example #2
0
def _canonicalize_nameservers(data):
    if 'nameservers' not in data:
        # Nameservers are relevant only for the default route network (usually
        # the management network)
        if data['defaultRoute'] and data['bootproto'] != 'dhcp':
            data['nameservers'] = dns.get_host_nameservers()
        else:
            data['nameservers'] = []
Example #3
0
def _canonicalize_nameservers(data):
    if 'nameservers' not in data:
        # Nameservers are relevant only for the default route network (usually
        # the management network)
        if data['defaultRoute'] and data['bootproto'] != 'dhcp':
            data['nameservers'] = dns.get_host_nameservers()
        else:
            data['nameservers'] = []
Example #4
0
def _canonicalize_nameservers(data):
    if 'nameservers' not in data:
        # Nameservers are relevant only for the default route network (usually
        # the management network)
        if data['defaultRoute'] and data['bootproto'] != 'dhcp':
            data['nameservers'] = dns.get_host_nameservers()
            # FIXME https://bugzilla.redhat.com/1816043
            if nmstate.is_nmstate_backend():
                data['nameservers'] = data['nameservers'][:2]
        else:
            data['nameservers'] = []
Example #5
0
    def test_get_host_nameservers(self, mock_open):
        RESOLV_CONF = ('# Generated by NetworkManager\n'
                       'search example.com company.net\n'
                       'domain example.com\n'
                       'nameserver 192.168.0.100\n'
                       'nameserver 8.8.8.8\n'
                       'nameserver 8.8.4.4\n')
        expected_nameservers = ['192.168.0.100', '8.8.8.8', '8.8.4.4']
        resolv_conf_stream = six.StringIO(RESOLV_CONF)
        mock_open.return_value.__enter__.return_value = resolv_conf_stream

        resulted_nameservers = dns.get_host_nameservers()
        assert expected_nameservers == resulted_nameservers
Example #6
0
    def test_get_host_nameservers(self, mock_open):
        RESOLV_CONF = (
            '# Generated by NetworkManager\n'
            'search example.com company.net\n'
            'domain example.com\n'
            'nameserver 192.168.0.100\n'
            'nameserver 8.8.8.8\n'
            'nameserver 8.8.4.4\n'
        )
        expected_nameservers = ['192.168.0.100', '8.8.8.8', '8.8.4.4']
        resolv_conf_stream = six.StringIO(RESOLV_CONF)
        mock_open.return_value.__enter__.return_value = resolv_conf_stream

        resulted_nameservers = dns.get_host_nameservers()

        self.assertEqual(expected_nameservers, resulted_nameservers)
Example #7
0
def _get(vdsmnets=None):
    """
    Generate a networking report for all devices.
    In case vdsmnets is provided, it is used in the report instead of
    retrieving data from the running config.
    :return: Dict of networking devices with all their details.
    """
    ipaddrs = getIpAddrs()
    routes = get_routes()

    devices_info = _devices_report(ipaddrs, routes)
    nets_info = _networks_report(vdsmnets, routes, ipaddrs, devices_info)

    _update_dhcp_info(nets_info, devices_info)

    networking_report = {'networks': nets_info}
    networking_report.update(devices_info)

    networking_report['nameservers'] = dns.get_host_nameservers()
    networking_report['supportsIPv6'] = ipv6_supported()

    return networking_report
Example #8
0
 def test_read_dns_entries_from_resolv_conf(self):
     # Assuming at least one DNS entry exists on the host running the tests
     nameservers = dns.get_host_nameservers()
     self.assertTrue(nameservers, 'No DNS entries detected')
Example #9
0
    def test_get_host_nameservers_no_resolvconf(self, mock_open):
        mock_open.return_value.__enter__.side_effect = IOError()

        nameservers = dns.get_host_nameservers()

        self.assertEqual(nameservers, [])
Example #10
0
def _translate_nameservers(attributes):
    nservers = dns.get_host_nameservers() if attributes['defaultRoute'] else []
    attributes['nameservers'] = nservers
Example #11
0
 def test_read_dns_entries_from_resolv_conf(self):
     # Assuming at least one DNS entry exists on the host running the tests
     nameservers = dns.get_host_nameservers()
     self.assertTrue(nameservers, 'No DNS entries detected')
Example #12
0
    def test_get_host_nameservers_no_resolvconf(self, mock_open):
        mock_open.return_value.__enter__.side_effect = IOError()

        nameservers = dns.get_host_nameservers()

        self.assertEqual(nameservers, [])
Example #13
0
def _translate_nameservers(attributes):
    nservers = dns.get_host_nameservers() if attributes['defaultRoute'] else []
    attributes['nameservers'] = nservers