コード例 #1
0
ファイル: test_zonegenerator.py プロジェクト: zhangrb/maas
 def test_get_dns_server_address_logs_warning_if_ip_is_localhost(self):
     logger = self.patch(zonegenerator, 'logger')
     self.patch(zonegenerator, 'get_maas_facing_server_addresses',
                Mock(return_value=[IPAddress('127.0.0.1')]))
     get_dns_server_address()
     self.assertEqual(call(WARNING_MESSAGE % '127.0.0.1'),
                      logger.warning.call_args)
コード例 #2
0
ファイル: test_zonegenerator.py プロジェクト: kcns008/maas
    def test_get_dns_server_address_passes_on_IPv4_IPv6_selection(self):
        ipv4 = factory.pick_bool()
        ipv6 = factory.pick_bool()
        patch = self.patch(zonegenerator, 'get_maas_facing_server_addresses')
        patch.return_value = [IPAddress(factory.make_ipv4_address())]

        get_dns_server_address(ipv4=ipv4, ipv6=ipv6)

        self.assertThat(patch, MockCalledOnceWith(ANY, ipv4=ipv4, ipv6=ipv6))
コード例 #3
0
ファイル: test_zonegenerator.py プロジェクト: ocni-dtu/maas
    def test_get_dns_server_address_passes_on_IPv4_IPv6_selection(self):
        ipv4 = factory.pick_bool()
        ipv6 = factory.pick_bool()
        patch = self.patch(zonegenerator, "get_maas_facing_server_addresses")
        patch.return_value = [IPAddress(factory.make_ipv4_address())]

        get_dns_server_address(ipv4=ipv4, ipv6=ipv6)

        self.assertThat(
            patch,
            MockCalledOnceWith(
                ANY,
                include_alternates=False,
                ipv4=ipv4,
                ipv6=ipv6,
                default_region_ip=None,
            ),
        )
コード例 #4
0
 def test_get_dns_server_address_ignores_unallowed_dns(self):
     # Regression test for LP:1847537
     subnet = factory.make_Subnet(cidr="10.0.0.0/24", allow_dns=False)
     ip = factory.make_StaticIPAddress(subnet=subnet)
     resolver = self.patch(server_address, "resolve_hostname")
     resolver.return_value = {IPAddress(ip.ip)}
     rack_controller = factory.make_RackController(subnet=subnet,
                                                   url="http://%s" % ip.ip)
     self.assertIsNone(get_dns_server_address(rack_controller))
コード例 #5
0
ファイル: test_zonegenerator.py プロジェクト: ocni-dtu/maas
 def test_get_dns_server_address_uses_rack_controller_url(self):
     ip = factory.make_ipv4_address()
     resolver = self.patch(server_address, "resolve_hostname")
     resolver.return_value = {IPAddress(ip)}
     hostname = factory.make_hostname()
     maas_url = "http://%s" % hostname
     rack_controller = factory.make_RackController(url=maas_url)
     result = get_dns_server_address(rack_controller)
     self.expectThat(ip, Equals(result))
     self.expectThat(resolver, MockAnyCall(hostname, 0))
コード例 #6
0
ファイル: test_zonegenerator.py プロジェクト: ocni-dtu/maas
    def test_get_dns_server_address_resolves_hostname(self):
        url = maastesting_factory.make_simple_http_url()
        self.useFixture(RegionConfigurationFixture(maas_url=url))
        ip = factory.make_ipv4_address()
        resolver = self.patch(server_address, "resolve_hostname")
        resolver.return_value = {IPAddress(ip)}

        hostname = urlparse(url).hostname
        result = get_dns_server_address()
        self.assertEqual(ip, result)
        self.expectThat(resolver, MockAnyCall(hostname, 0))
コード例 #7
0
ファイル: dhcp.py プロジェクト: kcns008/maas
def get_dhcp_configure_for(ip_version: int,
                           rack_controller,
                           vlan,
                           subnets: list,
                           ntp_servers: Union[list, dict],
                           domain,
                           dhcp_snippets: Iterable = None):
    """Get the DHCP configuration for `ip_version`."""
    try:
        maas_dns_server = get_dns_server_address(rack_controller,
                                                 ipv4=(ip_version == 4),
                                                 ipv6=(ip_version == 6))
    except UnresolvableHost:
        maas_dns_server = None

    # Select the best interface for this VLAN. This is an interface that
    # at least has an IP address.
    interfaces = get_interfaces_with_ip_on_vlan(rack_controller, vlan,
                                                ip_version)
    interface = get_best_interface(interfaces)

    # Generate the failover peer for this VLAN.
    if vlan.secondary_rack_id is not None:
        peer_name, peer_config = make_failover_peer_config(
            vlan, rack_controller)
    else:
        peer_name, peer_config = None, None

    if dhcp_snippets is None:
        dhcp_snippets = []

    subnets_dhcp_snippets = [
        dhcp_snippet for dhcp_snippet in dhcp_snippets
        if dhcp_snippet.subnet is not None
    ]
    nodes_dhcp_snippets = [
        dhcp_snippet for dhcp_snippet in dhcp_snippets
        if dhcp_snippet.node is not None
    ]

    # Generate the shared network configurations.
    subnet_configs = []
    hosts = []
    for subnet in subnets:
        subnet_configs.append(
            make_subnet_config(rack_controller, subnet, maas_dns_server,
                               ntp_servers, domain, peer_name,
                               subnets_dhcp_snippets))

    # Generate the hosts for all subnets.
    hosts = make_hosts_for_subnets(subnets, nodes_dhcp_snippets)
    return (peer_config, sorted(subnet_configs, key=itemgetter("subnet")),
            hosts, None if interface is None else interface.name)