def do_add_intr(self, mac, label, domain, ip_str, ip_type='4'): r = StaticInterface(mac=mac, label=label, domain=domain, ip_str=ip_str, ip_type=ip_type, system=self.n) r.clean() r.save() repr(r) return r
def test_intr_cname_exists(self): # Duplicate test? label = "tesafstyfoo" data = "wadfakt" dom, _ = Domain.objects.get_or_create(name="cd") dom, _ = Domain.objects.get_or_create(name="what.cd") cn, _ = CNAME.objects.get_or_create(label=label, domain=dom, target=data) cn.full_clean() cn.save() intr = StaticInterface(label=label, domain=dom, ip_str="10.0.0.2", ip_type='4', system=self.s, mac="00:11:22:33:44:55") self.assertRaises(ValidationError, intr.clean) cn.label = "differentlabel" cn.save() intr.clean() intr.save()
def do_add_intr(self, mac, label, domain, ip_str, ip_type='4'): r = StaticInterface(mac=mac, label=label, domain=domain, ip_str=ip_str, ip_type=ip_type, system=self.n) r.clean() r.save() repr(r) return r
def _create_ipv4_intr_from_range(label, domain_name, system, mac, range_start, range_end): if range_start >= range_end - 1: errors['ip'] = ErrorList(["The start ip must be less than end ip."]) return None, errors ip = find_free_ip(range_start, range_end, ip_type='4') errors = ErrorDict() if not ip: errors['ip'] = ErrorList([ "Could not find free ip in range {0} - " "{1}".format(range_start, range_end) ]) return None, errors domain = ensure_domain(domain_name, inherit_soa=True) try: intr = StaticInterface(label=label, domain=domain, ip_str=str(ip), ip_type='4', system=system, mac=mac) intr.clean() except ValidationError, e: errors['interface'] = ErrorList(e.messages)
def test_manual_assign_of_glue(self): # Test that assigning a different glue record doesn't get overriden by # the auto assinging during the Nameserver's clean function. glue = StaticInterface( label="ns25", domain=self.f_r, ip_str="128.193.99.10", ip_type="4", system=self.s, mac="11:22:33:44:55:66" ) glue.clean() glue.save() data = {"domain": self.f_r, "server": "ns25.foo.ru"} ns = self.do_add(**data) self.assertTrue(ns.glue) self.assertEqual(ns.glue, glue) glue2 = AddressRecord(label="ns25", domain=self.f_r, ip_str="128.193.1.78", ip_type="4") glue2.clean() glue2.save() ns.clean() # Make sure things didn't get overriden. self.assertEqual(ns.glue, glue) ns.glue = glue2 ns.save() # Refresh the object ns = Nameserver.objects.get(pk=ns.pk) # Again, Make sure things didn't get overriden. self.assertEqual(ns.glue, glue2) # Make sure we still can't delete. self.assertRaises(ValidationError, glue2.delete) self.assertRaises(ValidationError, ns.glue.delete) # We shuold be able to delelte the other one. glue.delete()
def testtest_add_ns_in_domain_intr(self): # Use an Interface as a glue record. glue = StaticInterface(label='ns232', domain=self.r, ip_str='128.193.99.10', ip_type='4', system=self.s, mac="12:23:45:45:45:45") glue.clean() glue.save() data = {'domain': self.r, 'server': 'ns232.ru'} ns = self.do_add(**data) self.assertTrue(ns.glue) self.assertEqual(ns.server, ns.glue.fqdn) self.assertRaises(ValidationError, glue.delete) glue = StaticInterface(label='ns332', domain=self.f_r, ip_str='128.193.1.10', ip_type='4', system=self.s, mac="11:22:33:44:55:66") glue.clean() glue.save() data = {'domain': self.f_r, 'server': 'ns332.foo.ru'} ns = self.do_add(**data) self.assertTrue(ns.glue) self.assertEqual(ns.server, ns.glue.fqdn)
def add_intr_ipv4(self, ip): intr = StaticInterface( label=random_label(), domain=self.domain, ip_str=ip, ip_type='4', system=self.s, mac='11:22:33:44:55:66' ) intr.clean() intr.save() return intr
def test_private_view_case_1_intr(self): intr = StaticInterface(label="asf", domain=self.f_o, ip_str="10.0.0.1", ip_type="4", mac="00:11:22:33:44:55", system=self.s) intr.clean() intr.save() # Object has to exist before views can be assigned. intr.views.add(self.private) intr.save()
def do_add(self, mac, label, domain, ip_str, ip_type='4'): r = StaticInterface(mac=mac, label=label, domain=domain, ip_str=ip_str, ip_type=ip_type, system=self.n) r.clean() r.save() r.details() r.get_update_url() r.get_delete_url() r.get_detail_url() repr(r) return r
def test_intr_exists(self): label = "tdfestyfoo" data = "waasdft" dom, _ = Domain.objects.get_or_create(name="cd") dom, _ = Domain.objects.get_or_create(name="what.cd") intr = StaticInterface(label=label, domain=dom, ip_str="10.0.0.1", ip_type='4', system=self.s, mac="11:22:33:44:55:66") intr.clean() intr.save() cn = CNAME(label=label, domain=dom, target=data) self.assertRaises(ValidationError, cn.full_clean)
def test_disallow_delete_of_glue_intr(self): # Interface glue records should not be allowed to be deleted. glue = StaticInterface( label="ns24", domain=self.f_r, ip_str="128.193.99.10", ip_type="4", system=self.s, mac="11:22:33:44:55:66" ) glue.clean() glue.save() data = {"domain": self.f_r, "server": "ns24.foo.ru"} ns = self.do_add(**data) self.assertTrue(ns.glue) self.assertEqual(ns.glue, glue) self.assertRaises(ValidationError, glue.delete)
def test_disallow_name_update_of_glue_Intr(self): # Glue records should not be allowed to change their name. glue = StaticInterface(label='ns24', domain=self.f_r, ip_str='128.193.99.10', ip_type='4', system=self.s, mac="11:22:33:44:55:66") glue.clean() glue.save() data = {'domain': self.f_r, 'server': 'ns24.foo.ru'} ns = self.do_add(**data) self.assertTrue(ns.glue) self.assertEqual(ns.glue, glue) glue.label = "ns22" self.assertRaises(ValidationError, glue.clean)
def do_add(self, mac, label, domain, ip_str, ip_type='4'): r = StaticInterface(mac=mac, label=label, domain=domain, ip_str=ip_str, ip_type=ip_type, system=self.n) r.clean() r.save() r.details() r.get_update_url() r.get_delete_url() r.get_detail_url() repr(r) return r
def test_disallow_delete_of_glue_intr(self): # Interface glue records should not be allowed to be deleted. glue = StaticInterface(label='ns24', domain=self.f_r, ip_str='128.193.99.10', ip_type='4', system=self.s, mac="11:22:33:44:55:66") glue.clean() glue.save() data = {'domain': self.f_r, 'server': 'ns24.foo.ru'} ns = self.do_add(**data) self.assertTrue(ns.glue) self.assertEqual(ns.glue, glue) self.assertRaises(ValidationError, glue.delete)
def test_intr_exists(self): label = "tdfestyfoo" data = "waasdft" dom, _ = Domain.objects.get_or_create(name="cd") dom, _ = Domain.objects.get_or_create(name="what.cd") intr = StaticInterface(label=label, domain=dom, ip_str="10.0.0.1", ip_type='4', system=self.s, mac="11:22:33:44:55:66") intr.clean() intr.save() cn = CNAME(label=label, domain=dom, target=data) self.assertRaises(ValidationError, cn.full_clean)
def _create_ipv4_intr_from_range(label, domain_name, system, mac, range_start, range_end): if range_start >= range_end - 1: errors['ip'] = ErrorList(["The start ip must be less than end ip."]) return None, errors ip = find_free_ip(range_start, range_end, ip_type='4') errors = ErrorDict() if not ip: errors['ip'] = ErrorList(["Could not find free ip in range {0} - " "{1}".format(range_start, range_end)]) return None, errors domain = ensure_domain(domain_name, inherit_soa=True) try: intr = StaticInterface(label=label, domain=domain, ip_str=str(ip), ip_type='4', system=system, mac=mac) intr.clean() except ValidationError, e: errors['interface'] = ErrorList(e.messages)
def test_intr_cname_exists(self): # Duplicate test? label = "tesafstyfoo" data = "wadfakt" dom, _ = Domain.objects.get_or_create(name="cd") dom, _ = Domain.objects.get_or_create(name="what.cd") cn, _ = CNAME.objects.get_or_create( label=label, domain=dom, target=data) cn.full_clean() cn.save() intr = StaticInterface(label=label, domain=dom, ip_str="10.0.0.2", ip_type='4', system=self.s, mac="00:11:22:33:44:55") self.assertRaises(ValidationError, intr.clean) cn.label = "differentlabel" cn.save() intr.clean() intr.save()
def test1_freeip(self): start_str = "10.0.33.1" end_str = "10.0.33.3" default_domain = self.d network = self.s rtype = 's' ip_type = '4' system = System() kwargs = {'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} r = self.do_add(**kwargs) self.assertEqual(str(r.get_next_ip()), "10.0.33.1") self.assertEqual(str(r.get_next_ip()), "10.0.33.1") s = StaticInterface(label="foo", domain=self.d, ip_type='4', ip_str=str(r.get_next_ip()), system=system, mac="00:00:00:00:00:00") s.clean() s.save() self.assertEqual(str(r.get_next_ip()), "10.0.33.2") s = StaticInterface(label="foo", domain=self.d, ip_type='4', ip_str=str(r.get_next_ip()), system=system, mac="00:00:00:00:00:00") s.clean() s.save() self.assertEqual(str(r.get_next_ip()), "10.0.33.3") s = StaticInterface(label="foo", domain=self.d, ip_type='4', ip_str=str(r.get_next_ip()), system=system, mac="00:00:00:00:00:00") s.clean() s.save() self.assertEqual(r.get_next_ip(), None)
def test_private_view_case_3_intr(self): intr = StaticInterface( label="asf3", domain=self.f_o, ip_str="10.0.0.1", ip_type="4", mac="01:11:22:33:44:55", system=self.s) intr.clean() intr.save() intr.views.add(self.private) intr.save() # Object has to exist before views can be assigned. intr.views.add(self.public) self.assertFalse(intr.views.filter(name="public")) intr = StaticInterface( label="asf3", domain=self.f_o, ip_str="172.31.255.254", ip_type="4", mac="01:11:22:33:44:55", system=self.s) intr.clean() intr.save() intr.views.add(self.private) intr.save() # Object has to exist before views can be assigned. intr.views.add(self.public) self.assertFalse(intr.views.filter(name="public")) intr = StaticInterface(label="asf3", domain=self.f_o, ip_str="192.168.255.254", ip_type="4", mac="01:11:22:33:44:55", system=self.s) intr.clean() intr.save() intr.views.add(self.private) intr.save() # Object has to exist before views can be assigned. intr.views.add(self.public) self.assertFalse(intr.views.filter(name="public"))
def test_manual_assign_of_glue(self): # Test that assigning a different glue record doesn't get overriden by # the auto assinging during the Nameserver's clean function. glue = StaticInterface(label='ns25', domain=self.f_r, ip_str='128.193.99.10', ip_type='4', system=self.s, mac="11:22:33:44:55:66") glue.clean() glue.save() data = {'domain': self.f_r, 'server': 'ns25.foo.ru'} ns = self.do_add(**data) self.assertTrue(ns.glue) self.assertEqual(ns.glue, glue) glue2 = AddressRecord(label='ns25', domain=self.f_r, ip_str='128.193.1.78', ip_type='4') glue2.clean() glue2.save() ns.clean() # Make sure things didn't get overriden. self.assertEqual(ns.glue, glue) ns.glue = glue2 ns.save() # Refresh the object ns = Nameserver.objects.get(pk=ns.pk) # Again, Make sure things didn't get overriden. self.assertEqual(ns.glue, glue2) # Make sure we still can't delete. self.assertRaises(ValidationError, glue2.delete) self.assertRaises(ValidationError, ns.glue.delete) # We shuold be able to delelte the other one. glue.delete()
def testtest_add_ns_in_domain_intr(self): # Use an Interface as a glue record. glue = StaticInterface( label="ns232", domain=self.r, ip_str="128.193.99.10", ip_type="4", system=self.s, mac="12:23:45:45:45:45" ) glue.clean() glue.save() data = {"domain": self.r, "server": "ns232.ru"} ns = self.do_add(**data) self.assertTrue(ns.glue) self.assertEqual(ns.server, ns.glue.fqdn) self.assertRaises(ValidationError, glue.delete) glue = StaticInterface( label="ns332", domain=self.f_r, ip_str="128.193.1.10", ip_type="4", system=self.s, mac="11:22:33:44:55:66" ) glue.clean() glue.save() data = {"domain": self.f_r, "server": "ns332.foo.ru"} ns = self.do_add(**data) self.assertTrue(ns.glue) self.assertEqual(ns.server, ns.glue.fqdn)
def test6_create_ipv4_interface(self): v, _ = Vlan.objects.get_or_create(name="6db", number=3) s, _ = Site.objects.get_or_create(name="6scl3") d, _ = Domain.objects.get_or_create(name="6scl3.mozilla.com") d, _ = Domain.objects.get_or_create(name="6db.6scl3.mozilla.com") d, _ = Domain.objects.get_or_create(name="arpa") d, _ = Domain.objects.get_or_create(name="in-addr.arpa") d, _ = Domain.objects.get_or_create(name="11.in-addr.arpa") n = Network(network_str="11.0.0.0/8", ip_type="4") n.clean() n.site = s n.vlan = v n.save() r = Range(start_str="11.0.0.0", end_str="11.0.0.2", network=n, ip_type='4') r.clean() r.save() s = StaticInterface(label="fab", domain=d, ip_type="4", ip_str="11.0.0.0", system=self.system, mac="00:00:00:00:00:00") s.clean() s.save() s = StaticInterface(label="fab", domain=d, ip_type="4", ip_str="11.0.0.1", system=self.system, mac="00:00:00:00:00:00") s.clean() s.save() s = StaticInterface(label="fab", domain=d, ip_type="4", ip_str="11.0.0.2", system=self.system, mac="00:00:00:00:00:00") s.clean() s.save() intr, errors = create_ipv4_interface("foo", "6db", "6scl3", self.system, "11:22:33:44:55:66", "mozilla.com") self.assertEqual(intr, None) self.assertTrue("vlan" not in errors) self.assertTrue("site" not in errors) self.assertTrue("domain" not in errors) self.assertTrue("network" not in errors) self.assertTrue("range" not in errors) self.assertTrue("ip" in errors)
def test1_freeip(self): start_str = "10.0.33.1" end_str = "10.0.33.3" default_domain = self.d network = self.s rtype = 's' ip_type = '4' system = System() kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } r = self.do_add(**kwargs) self.assertEqual(str(r.get_next_ip()), "10.0.33.1") self.assertEqual(str(r.get_next_ip()), "10.0.33.1") s = StaticInterface(label="foo", domain=self.d, ip_type='4', ip_str=str(r.get_next_ip()), system=system, mac="00:00:00:00:00:00") s.clean() s.save() self.assertEqual(str(r.get_next_ip()), "10.0.33.2") s = StaticInterface(label="foo", domain=self.d, ip_type='4', ip_str=str(r.get_next_ip()), system=system, mac="00:00:00:00:00:00") s.clean() s.save() self.assertEqual(str(r.get_next_ip()), "10.0.33.3") s = StaticInterface(label="foo", domain=self.d, ip_type='4', ip_str=str(r.get_next_ip()), system=system, mac="00:00:00:00:00:00") s.clean() s.save() self.assertEqual(r.get_next_ip(), None)
def test6_create_ipv4_interface(self): v, _ = Vlan.objects.get_or_create(name="6db", number=3) s, _ = Site.objects.get_or_create(name="6scl3") d, _ = Domain.objects.get_or_create(name="6scl3.mozilla.com") d, _ = Domain.objects.get_or_create(name="6db.6scl3.mozilla.com") d, _ = Domain.objects.get_or_create(name="arpa") d, _ = Domain.objects.get_or_create(name="in-addr.arpa") d, _ = Domain.objects.get_or_create(name="11.in-addr.arpa") n = Network(network_str="11.0.0.0/8", ip_type="4") n.clean() n.site = s n.vlan = v n.save() r = Range(start_str="11.0.0.0", end_str="11.0.0.2", network=n, ip_type='4') r.clean() r.save() s = StaticInterface(label="fab", domain=d, ip_type="4", ip_str="11.0.0.0", system=self.system, mac="00:00:00:00:00:00") s.clean() s.save() s = StaticInterface(label="fab", domain=d, ip_type="4", ip_str="11.0.0.1", system=self.system, mac="00:00:00:00:00:00") s.clean() s.save() s = StaticInterface(label="fab", domain=d, ip_type="4", ip_str="11.0.0.2", system=self.system, mac="00:00:00:00:00:00") s.clean() s.save() intr, errors = create_ipv4_interface( "foo", "6db", "6scl3", self.system, "11:22:33:44:55:66", "mozilla.com") self.assertEqual(intr, None) self.assertTrue("vlan" not in errors) self.assertTrue("site" not in errors) self.assertTrue("domain" not in errors) self.assertTrue("network" not in errors) self.assertTrue("range" not in errors) self.assertTrue("ip" in errors)
def do_add(self, mac, label, domain, ip_str, system, ip_type="4"): r = StaticInterface(mac=mac, label=label, domain=domain, ip_str=ip_str, ip_type=ip_type, system=system) r.clean() r.save() return r