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, '')
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, '')
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; }', )
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", )
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", )
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; }', )
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; }' )
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; }' )
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; }', )
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; }', )
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; }', )
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; }', )
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; }' )
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; }')