Example #1
0
 def test_basic_entry(self):
     DHCPEntry.objects.create(ip='127.0.0.1', mac='deadbeefcafe')
     Record.objects.create(
         name='1.0.0.127.in-addr.arpa',
         type='PTR',
         content='sample1.dc1',
         domain=self.domain1,
     )
     DHCPEntry.objects.create(ip='10.10.0.1', mac='deadbeefcaff')
     Record.objects.create(
         name='1.0.10.10.in-addr.arpa',
         type='PTR',
         content='sample2.dc1',
         domain=self.domain1,
     )
     config = _sanitize_dhcp_config(generate_dhcp_config_entries(), )
     # sample2.dc don't have defined network
     self.assertEqual(
         config,
         'host sample1.dc1 { fixed-address 127.0.0.1; '
         'hardware ethernet DE:AD:BE:EF:CA:FE; }',
     )
     # dhcp broadcast is disabled
     self.network1.dhcp_broadcast = False
     self.network1.save()
     config = _sanitize_dhcp_config(generate_dhcp_config_entries(), )
     self.assertEqual(config, '')
Example #2
0
 def test_basic_entry(self):
     DHCPEntry.objects.create(ip='127.0.0.1', mac='deadbeefcafe')
     Record.objects.create(
         name='1.0.0.127.in-addr.arpa',
         type='PTR',
         content='sample1.dc1',
         domain=self.domain1,
     )
     DHCPEntry.objects.create(ip='10.10.0.1', mac='deadbeefcaff')
     Record.objects.create(
         name='1.0.10.10.in-addr.arpa',
         type='PTR',
         content='sample2.dc1',
         domain=self.domain1,
     )
     config = _sanitize_dhcp_config(
         generate_dhcp_config_entries(),
     )
     # sample2.dc don't have defined network
     self.assertEqual(
         config,
         'host sample1.dc1 { fixed-address 127.0.0.1; '
         'hardware ethernet DE:AD:BE:EF:CA:FE; }',
     )
     # dhcp broadcast is disabled
     self.network1.dhcp_broadcast = False
     self.network1.save()
     config = _sanitize_dhcp_config(
         generate_dhcp_config_entries(),
     )
     self.assertEqual(config, '')
Example #3
0
 def test_dc_entry(self):
     DHCPEntry.objects.create(ip='127.0.0.1', mac='deadbeefcafe')
     Record.objects.create(
         name='1.0.0.127.in-addr.arpa',
         type='PTR',
         content='sample1.dc1',
         domain=self.domain1,
     )
     DHCPEntry.objects.create(ip='10.20.1.1', mac='deadbeefcaf1')
     Record.objects.create(
         name='1.1.20.10.in-addr.arpa',
         type='PTR',
         content='sample1.dc2',
         domain=self.domain2,
     )
     config = _sanitize_dhcp_config(
         generate_dhcp_config_entries(data_centers=[self.dc1]),
     )
     self.assertEqual(
         config,
         'host sample1.dc1 { fixed-address 127.0.0.1; '
         'hardware ethernet DE:AD:BE:EF:CA:FE; }'
     )
     config = _sanitize_dhcp_config(
         generate_dhcp_config_entries(data_centers=[self.dc2]),
     )
     self.assertEqual(
         config,
         'host sample1.dc2 { fixed-address 10.20.1.1; '
         'hardware ethernet DE:AD:BE:EF:CA:F1; }',
     )
     config = _sanitize_dhcp_config(
         generate_dhcp_config_entries(data_centers=[self.dc1, self.dc2]),
     )
     self.assertEqual(
         config,
         'host sample1.dc1 { fixed-address 127.0.0.1; '
         'hardware ethernet DE:AD:BE:EF:CA:FE; }\n'
         'host sample1.dc2 { fixed-address 10.20.1.1; '
         'hardware ethernet DE:AD:BE:EF:CA:F1; }',
     )
     # other order
     config = _sanitize_dhcp_config(
         generate_dhcp_config_entries(data_centers=[self.dc2, self.dc1]),
     )
     self.assertEqual(
         config,
         'host sample1.dc1 { fixed-address 127.0.0.1; '
         'hardware ethernet DE:AD:BE:EF:CA:FE; }\n'
         'host sample1.dc2 { fixed-address 10.20.1.1; '
         'hardware ethernet DE:AD:BE:EF:CA:F1; }',
     )
Example #4
0
def dhcp_config_entries(request):
    if not api.is_authenticated(request):
        return HttpResponseForbidden('API key required.')
    dc_names, env_names = _get_params(request)
    if dc_names and env_names:
        return HttpResponseForbidden('Only DC or ENV mode available.')
    data_centers = []
    for dc_name in dc_names:
        try:
            dc = DataCenter.objects.get(name__iexact=dc_name)
        except DataCenter.DoesNotExist:
            return HttpResponseNotFound(
                "Data Center `%s` does not exist." % dc_name
            )
        else:
            data_centers.append(dc)
    environments = []
    for env_name in env_names:
        try:
            env = Environment.objects.get(name__iexact=env_name)
        except Environment.DoesNotExist:
            return HttpResponseNotFound(
                "Environment `%s` does not exist." % env_name
            )
        else:
            environments.append(env)
    return HttpResponse(
        generate_dhcp_config_entries(
            data_centers=data_centers,
            environments=environments,
            disable_networks_validation=DHCP_DISABLE_NETWORKS_VALIDATION,
        ),
        content_type="text/plain",
    )
Example #5
0
def dhcp_config_entries(request):
    if not api.is_authenticated(request):
        return HttpResponseForbidden('API key required.')
    dc_names, env_names = _get_params(request)
    if dc_names and env_names:
        return HttpResponseForbidden('Only DC or ENV mode available.')
    data_centers = []
    for dc_name in dc_names:
        try:
            dc = DataCenter.objects.get(name__iexact=dc_name)
        except DataCenter.DoesNotExist:
            return HttpResponseNotFound("Data Center `%s` does not exist." %
                                        dc_name)
        else:
            data_centers.append(dc)
    environments = []
    for env_name in env_names:
        try:
            env = Environment.objects.get(name__iexact=env_name)
        except Environment.DoesNotExist:
            return HttpResponseNotFound("Environment `%s` does not exist." %
                                        env_name)
        else:
            environments.append(env)
    return HttpResponse(
        generate_dhcp_config_entries(
            data_centers=data_centers,
            environments=environments,
            disable_networks_validation=DHCP_DISABLE_NETWORKS_VALIDATION,
        ),
        content_type="text/plain",
    )
Example #6
0
 def test_dc_entry(self):
     DHCPEntry.objects.create(ip='127.0.0.1', mac='deadbeefcafe')
     Record.objects.create(
         name='1.0.0.127.in-addr.arpa',
         type='PTR',
         content='sample1.dc1',
         domain=self.domain1,
     )
     DHCPEntry.objects.create(ip='10.20.1.1', mac='deadbeefcaf1')
     Record.objects.create(
         name='1.1.20.10.in-addr.arpa',
         type='PTR',
         content='sample1.dc2',
         domain=self.domain2,
     )
     config = _sanitize_dhcp_config(
         generate_dhcp_config_entries(data_centers=[self.dc1]), )
     self.assertEqual(
         config, 'host sample1.dc1 { fixed-address 127.0.0.1; '
         'hardware ethernet DE:AD:BE:EF:CA:FE; }')
     config = _sanitize_dhcp_config(
         generate_dhcp_config_entries(data_centers=[self.dc2]), )
     self.assertEqual(
         config,
         'host sample1.dc2 { fixed-address 10.20.1.1; '
         'hardware ethernet DE:AD:BE:EF:CA:F1; }',
     )
     config = _sanitize_dhcp_config(
         generate_dhcp_config_entries(data_centers=[self.dc1, self.dc2]), )
     self.assertEqual(
         config,
         'host sample1.dc1 { fixed-address 127.0.0.1; '
         'hardware ethernet DE:AD:BE:EF:CA:FE; }\n'
         'host sample1.dc2 { fixed-address 10.20.1.1; '
         'hardware ethernet DE:AD:BE:EF:CA:F1; }',
     )
     # other order
     config = _sanitize_dhcp_config(
         generate_dhcp_config_entries(data_centers=[self.dc2, self.dc1]), )
     self.assertEqual(
         config,
         'host sample1.dc1 { fixed-address 127.0.0.1; '
         'hardware ethernet DE:AD:BE:EF:CA:FE; }\n'
         'host sample1.dc2 { fixed-address 10.20.1.1; '
         'hardware ethernet DE:AD:BE:EF:CA:F1; }',
     )
Example #7
0
 def test_multiple_domain_occurrence_entry(self):
     DHCPEntry.objects.create(ip='127.0.0.1', mac='deadbeefcafe')
     DHCPEntry.objects.create(ip='127.0.0.2', mac='deadbeefcaff')
     device = Device.objects.create(sn='sn123')
     Ethernet.objects.create(
         mac='deadbeefcafe', label="eth0", device=device,
     )
     Ethernet.objects.create(
         mac='deadbeefcaff', label="eth1", device=device,
     )
     IPAddress.objects.create(
         address='127.0.0.1',
         hostname='sample-hostname-1.dc1',
         device=device,
     )
     ip2 = IPAddress.objects.create(
         address='127.0.0.2',
         hostname='sample-hostname-1.dc1',
         device=device,
     )
     config = _sanitize_dhcp_config(
         generate_dhcp_config_entries(),
     )
     self.assertEqual(
         config,
         'host sample-hostname-1.dc1 '
         '{ fixed-address 127.0.0.1; hardware ethernet DE:AD:BE:EF:CA:FE; }'
     )
     ip2.hostname = 'sample-hostname-2.dc1'
     ip2.save()
     config = _sanitize_dhcp_config(
         generate_dhcp_config_entries(),
     )
     self.assertEqual(
         config,
         'host sample-hostname-1.dc1 '
         '{ fixed-address 127.0.0.1; '
         'hardware ethernet DE:AD:BE:EF:CA:FE; }\n'
         'host sample-hostname-2.dc1 '
         '{ fixed-address 127.0.0.2; hardware ethernet DE:AD:BE:EF:CA:FF; }'
     )
Example #8
0
 def test_multiple_domain_occurrence_entry(self):
     DHCPEntry.objects.create(ip='127.0.0.1', mac='deadbeefcafe')
     DHCPEntry.objects.create(ip='127.0.0.2', mac='deadbeefcaff')
     device = Device.objects.create(sn='sn123')
     Ethernet.objects.create(
         mac='deadbeefcafe',
         label="eth0",
         device=device,
     )
     Ethernet.objects.create(
         mac='deadbeefcaff',
         label="eth1",
         device=device,
     )
     IPAddress.objects.create(
         address='127.0.0.1',
         hostname='sample-hostname-1.dc1',
         device=device,
     )
     ip2 = IPAddress.objects.create(
         address='127.0.0.2',
         hostname='sample-hostname-1.dc1',
         device=device,
     )
     config = _sanitize_dhcp_config(generate_dhcp_config_entries(), )
     self.assertEqual(
         config, 'host sample-hostname-1.dc1 '
         '{ fixed-address 127.0.0.1; hardware ethernet DE:AD:BE:EF:CA:FE; }'
     )
     ip2.hostname = 'sample-hostname-2.dc1'
     ip2.save()
     config = _sanitize_dhcp_config(generate_dhcp_config_entries(), )
     self.assertEqual(
         config, 'host sample-hostname-1.dc1 '
         '{ fixed-address 127.0.0.1; '
         'hardware ethernet DE:AD:BE:EF:CA:FE; }\n'
         'host sample-hostname-2.dc1 '
         '{ fixed-address 127.0.0.2; hardware ethernet DE:AD:BE:EF:CA:FF; }'
     )
Example #9
0
 def test_no_ptr_entry(self):
     DHCPEntry.objects.create(ip='127.0.0.1', mac='deadbeefcafe')
     DHCPEntry.objects.create(ip='10.10.0.1', mac='deadbeefcaff')
     device = Device.objects.create(sn='sn123')
     Ethernet.objects.create(
         mac='deadbeefcafe', label="eth0", device=device,
     )
     IPAddress.objects.create(
         address='127.0.0.1',
         hostname='name-from-ip.dc1',
         device=device,
     )
     config = _sanitize_dhcp_config(
         generate_dhcp_config_entries(),
     )
     self.assertEqual(
         config,
         'host name-from-ip.dc1 { fixed-address 127.0.0.1; '
         'hardware ethernet DE:AD:BE:EF:CA:FE; }',
     )
Example #10
0
 def test_no_ptr_entry(self):
     DHCPEntry.objects.create(ip='127.0.0.1', mac='deadbeefcafe')
     DHCPEntry.objects.create(ip='10.10.0.1', mac='deadbeefcaff')
     device = Device.objects.create(sn='sn123')
     Ethernet.objects.create(
         mac='deadbeefcafe',
         label="eth0",
         device=device,
     )
     IPAddress.objects.create(
         address='127.0.0.1',
         hostname='name-from-ip.dc1',
         device=device,
     )
     config = _sanitize_dhcp_config(generate_dhcp_config_entries(), )
     self.assertEqual(
         config,
         'host name-from-ip.dc1 { fixed-address 127.0.0.1; '
         'hardware ethernet DE:AD:BE:EF:CA:FE; }',
     )
Example #11
0
 def test_deployment_entry(self):
     DHCPEntry.objects.create(ip='127.0.0.1', mac='deadbeefcafe')
     Record.objects.create(
         name='1.0.0.127.in-addr.arpa',
         type='PTR',
         content='sample1.dc1',
         domain=self.domain1,
     )
     device = Device.objects.create(sn='sn123')
     Deployment.objects.create(
         ip='127.0.0.1',
         mac='deadbeefcafe',
         device=device,
     )
     config = _sanitize_dhcp_config(generate_dhcp_config_entries(), )
     self.assertEqual(
         config,
         'host sample1.dc1 { fixed-address 127.0.0.1; '
         'hardware ethernet DE:AD:BE:EF:CA:FE; next-server 10.20.30.40; }',
     )
Example #12
0
 def test_deployment_entry(self):
     DHCPEntry.objects.create(ip='127.0.0.1', mac='deadbeefcafe')
     Record.objects.create(
         name='1.0.0.127.in-addr.arpa',
         type='PTR',
         content='sample1.dc1',
         domain=self.domain1,
     )
     device = Device.objects.create(sn='sn123')
     Deployment.objects.create(
         ip='127.0.0.1',
         mac='deadbeefcafe',
         device=device,
     )
     config = _sanitize_dhcp_config(
         generate_dhcp_config_entries(),
     )
     self.assertEqual(
         config,
         'host sample1.dc1 { fixed-address 127.0.0.1; '
         'hardware ethernet DE:AD:BE:EF:CA:FE; next-server 10.20.30.40; }',
     )
Example #13
0
 def test_env_entry(self):
     DHCPEntry.objects.create(ip='127.0.0.1', mac='deadbeefcafe')
     Record.objects.create(
         name='1.0.0.127.in-addr.arpa',
         type='PTR',
         content='sample1.dc1',
         domain=self.domain1,
     )
     DHCPEntry.objects.create(ip='10.20.1.1', mac='deadbeefcaf1')
     Record.objects.create(
         name='1.1.20.10.in-addr.arpa',
         type='PTR',
         content='sample1.dc2',
         domain=self.domain2,
     )
     config = _sanitize_dhcp_config(
         generate_dhcp_config_entries(),
     )
     self.assertEqual(
         config,
         'host sample1.dc1 { fixed-address 127.0.0.1; '
         'hardware ethernet DE:AD:BE:EF:CA:FE; }\n'
         'host sample1.dc2 { fixed-address 10.20.1.1; '
         'hardware ethernet DE:AD:BE:EF:CA:F1; }',
     )
     config = _sanitize_dhcp_config(
         generate_dhcp_config_entries(environments=[self.env2]),
     )
     self.assertEqual(
         config,
         'host sample1.dc2 { fixed-address 10.20.1.1; '
         'hardware ethernet DE:AD:BE:EF:CA:F1; }',
     )
     config = _sanitize_dhcp_config(
         generate_dhcp_config_entries(environments=[self.env1, self.env2]),
     )
     self.assertEqual(
         config,
         'host sample1.dc1 { fixed-address 127.0.0.1; '
         'hardware ethernet DE:AD:BE:EF:CA:FE; }\n'
         'host sample1.dc2 { fixed-address 10.20.1.1; '
         'hardware ethernet DE:AD:BE:EF:CA:F1; }',
     )
     self._setup_additional_networks()
     # env3 and env4 networks are empty
     config = _sanitize_dhcp_config(
         generate_dhcp_config_entries(
             environments=[self.env1, self.env3, self.env4]
         ),
     )
     self.assertEqual(
         config,
         'host sample1.dc1 { fixed-address 127.0.0.1; '
         'hardware ethernet DE:AD:BE:EF:CA:FE; }'
     )
     # add some entries
     DHCPEntry.objects.create(ip='10.30.1.1', mac='deadbeefcaf2')
     Record.objects.create(
         name='1.1.30.10.in-addr.arpa',
         type='PTR',
         content='sample1.dc3',
         domain=self.domain3,
     )
     DHCPEntry.objects.create(ip='10.40.1.1', mac='deadbeefcaf3')
     Record.objects.create(
         name='1.1.40.10.in-addr.arpa',
         type='PTR',
         content='sample2.dc3',
         domain=self.domain3,
     )
     config = _sanitize_dhcp_config(
         generate_dhcp_config_entries(
             environments=[self.env1, self.env3, self.env4]
         )
     )
     self.assertEqual(
         config,
         'host sample1.dc1 { fixed-address 127.0.0.1; '
         'hardware ethernet DE:AD:BE:EF:CA:FE; }\n'
         'host sample1.dc3 { fixed-address 10.30.1.1; '
         'hardware ethernet DE:AD:BE:EF:CA:F2; }\n'
         'host sample2.dc3 { fixed-address 10.40.1.1; '
         'hardware ethernet DE:AD:BE:EF:CA:F3; }'
     )
Example #14
0
 def test_env_entry(self):
     DHCPEntry.objects.create(ip='127.0.0.1', mac='deadbeefcafe')
     Record.objects.create(
         name='1.0.0.127.in-addr.arpa',
         type='PTR',
         content='sample1.dc1',
         domain=self.domain1,
     )
     DHCPEntry.objects.create(ip='10.20.1.1', mac='deadbeefcaf1')
     Record.objects.create(
         name='1.1.20.10.in-addr.arpa',
         type='PTR',
         content='sample1.dc2',
         domain=self.domain2,
     )
     config = _sanitize_dhcp_config(generate_dhcp_config_entries(), )
     self.assertEqual(
         config,
         'host sample1.dc1 { fixed-address 127.0.0.1; '
         'hardware ethernet DE:AD:BE:EF:CA:FE; }\n'
         'host sample1.dc2 { fixed-address 10.20.1.1; '
         'hardware ethernet DE:AD:BE:EF:CA:F1; }',
     )
     config = _sanitize_dhcp_config(
         generate_dhcp_config_entries(environments=[self.env2]), )
     self.assertEqual(
         config,
         'host sample1.dc2 { fixed-address 10.20.1.1; '
         'hardware ethernet DE:AD:BE:EF:CA:F1; }',
     )
     config = _sanitize_dhcp_config(
         generate_dhcp_config_entries(
             environments=[self.env1, self.env2]), )
     self.assertEqual(
         config,
         'host sample1.dc1 { fixed-address 127.0.0.1; '
         'hardware ethernet DE:AD:BE:EF:CA:FE; }\n'
         'host sample1.dc2 { fixed-address 10.20.1.1; '
         'hardware ethernet DE:AD:BE:EF:CA:F1; }',
     )
     self._setup_additional_networks()
     # env3 and env4 networks are empty
     config = _sanitize_dhcp_config(
         generate_dhcp_config_entries(
             environments=[self.env1, self.env3, self.env4]), )
     self.assertEqual(
         config, 'host sample1.dc1 { fixed-address 127.0.0.1; '
         'hardware ethernet DE:AD:BE:EF:CA:FE; }')
     # add some entries
     DHCPEntry.objects.create(ip='10.30.1.1', mac='deadbeefcaf2')
     Record.objects.create(
         name='1.1.30.10.in-addr.arpa',
         type='PTR',
         content='sample1.dc3',
         domain=self.domain3,
     )
     DHCPEntry.objects.create(ip='10.40.1.1', mac='deadbeefcaf3')
     Record.objects.create(
         name='1.1.40.10.in-addr.arpa',
         type='PTR',
         content='sample2.dc3',
         domain=self.domain3,
     )
     config = _sanitize_dhcp_config(
         generate_dhcp_config_entries(
             environments=[self.env1, self.env3, self.env4]))
     self.assertEqual(
         config, 'host sample1.dc1 { fixed-address 127.0.0.1; '
         'hardware ethernet DE:AD:BE:EF:CA:FE; }\n'
         'host sample1.dc3 { fixed-address 10.30.1.1; '
         'hardware ethernet DE:AD:BE:EF:CA:F2; }\n'
         'host sample2.dc3 { fixed-address 10.40.1.1; '
         'hardware ethernet DE:AD:BE:EF:CA:F3; }')