コード例 #1
0
    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()
コード例 #2
0
 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
コード例 #3
0
 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()
コード例 #4
0
 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_edit_url()
     r.get_delete_url()
     r.get_absolute_url()
     repr(r)
     return r
コード例 #5
0
    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)
コード例 #6
0
    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)
コード例 #7
0
def _create_ipv4_intr_from_range(label, domain_name, system, mac, range_start,
                                 range_end):
    errors = {}
    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)
コード例 #8
0
    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()
コード例 #9
0
    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"))
コード例 #10
0
    def test_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)
コード例 #11
0
    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)
        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)
コード例 #12
0
    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)
コード例 #13
0
    # Determine the keys to store later when nameing the interface.
    try:
        x = SystemResource.extract_nic_attrs(intr_name)
        interface_type, primary, alias = x
    except ValidationError, e:
        prune_tree(domain)
        return HttpResponse(json.dumps({'success': False, 'error_message':
            " ".join(e.messages)}))

    # Create the Interface
    s = StaticInterface(label=label, mac=mac_address, domain=domain,
        ip_str=ip_address, ip_type='4', system=system,
        dhcp_enabled=enable_dhcp, dns_enabled=enable_dns)
    try:
        s.clean()
        s.save()
    except ValidationError, e:
        prune_tree(domain)
        return HttpResponse(json.dumps({'success': False, 'error_message':
            "Failed to create an interface: {0}".format(" ".join(e.messages))}))

    # Configure views
    if enable_dns:
        if enable_public:
            public = View.objects.get(name='public')
            s.views.add(public)
        if enable_private:
            private = View.objects.get(name='private')
            s.views.add(private)
        s.save()