コード例 #1
0
ファイル: test_subnet.py プロジェクト: tai271828/maas
 def test__create_as_admin_succeeds(self):
     user = factory.make_admin()
     handler = SubnetHandler(user, {}, None)
     vlan = factory.make_VLAN()
     result = handler.create({"vlan": vlan.id, "cidr": "192.168.0.0/24"})
     subnet = Subnet.objects.get(id=result["id"])
     self.assertThat(subnet.cidr, Equals("192.168.0.0/24"))
コード例 #2
0
ファイル: test_subnet.py プロジェクト: zeronewb/maas
 def test_get(self):
     user = factory.make_User()
     handler = SubnetHandler(user, {})
     subnet = factory.make_Subnet()
     expected_data = self.dehydrate_subnet(subnet)
     result = handler.get({"id": subnet.id})
     self.assertThat(result, Equals(expected_data))
コード例 #3
0
ファイル: test_subnet.py プロジェクト: tai271828/maas
 def test__delete_as_admin_success(self):
     user = factory.make_admin()
     handler = SubnetHandler(user, {}, None)
     subnet = factory.make_Subnet()
     handler.delete({"id": subnet.id})
     subnet = reload_object(subnet)
     self.assertThat(subnet, Equals(None))
コード例 #4
0
ファイル: test_subnet.py プロジェクト: zeronewb/maas
 def test__update_as_admin_succeeds(self):
     user = factory.make_admin()
     handler = SubnetHandler(user, {})
     subnet = factory.make_Subnet()
     new_description = "does anyone use this field?"
     handler.update({"id": subnet.id, "description": new_description})
     subnet = reload_object(subnet)
     self.assertThat(subnet.description, Equals(new_description))
コード例 #5
0
ファイル: test_subnet.py プロジェクト: tai271828/maas
 def test__reloads_user(self):
     user = factory.make_admin()
     handler = SubnetHandler(user, {}, None)
     subnet = factory.make_Subnet()
     user.is_superuser = False
     user.save()
     with ExpectedException(AssertionError, "Permission denied."):
         handler.scan({"id": subnet.id})
コード例 #6
0
ファイル: test_subnet.py プロジェクト: zeronewb/maas
 def test__scan_ipv6_fails(self):
     user = factory.make_admin()
     handler = SubnetHandler(user, {})
     subnet = factory.make_Subnet(version=6)
     with ExpectedException(ValueError, '.*only IPv4.*'):
         handler.scan({
             "id": subnet.id,
         })
コード例 #7
0
ファイル: test_subnet.py プロジェクト: tai271828/maas
 def test__create_reloads_user(self):
     user = factory.make_admin()
     handler = SubnetHandler(user, {}, None)
     vlan = factory.make_VLAN()
     user.is_superuser = False
     user.save()
     with ExpectedException(AssertionError, "Permission denied."):
         handler.create({"vlan": vlan.id, "cidr": "192.168.0.0/24"})
コード例 #8
0
ファイル: test_subnet.py プロジェクト: zeronewb/maas
 def test__scan_fails_if_no_rack_is_configured_with_subnet(self):
     user = factory.make_admin()
     handler = SubnetHandler(user, {})
     subnet = factory.make_Subnet(version=4)
     with ExpectedException(ValueError, '.*must be configured on a rack*'):
         handler.scan({
             "id": subnet.id,
         })
コード例 #9
0
ファイル: test_subnet.py プロジェクト: zeronewb/maas
 def test__scan_as_non_admin_asserts(self):
     user = factory.make_User()
     handler = SubnetHandler(user, {})
     subnet = factory.make_Subnet()
     with ExpectedException(AssertionError, "Permission denied."):
         handler.scan({
             "id": subnet.id,
         })
コード例 #10
0
ファイル: test_subnet.py プロジェクト: zeronewb/maas
 def test__create_as_non_admin_asserts(self):
     user = factory.make_User()
     handler = SubnetHandler(user, {})
     vlan = factory.make_VLAN()
     with ExpectedException(AssertionError, "Permission denied."):
         handler.create({
             "vlan": vlan.id,
             "cidr": "192.168.0.0/24",
         })
コード例 #11
0
ファイル: test_subnet.py プロジェクト: tai271828/maas
 def test_get_handles_null_dns_servers(self):
     user = factory.make_User()
     handler = SubnetHandler(user, {}, None)
     subnet = factory.make_Subnet()
     subnet.dns_servers = None
     subnet.save()
     expected_data = self.dehydrate_subnet(subnet)
     result = handler.get({"id": subnet.id})
     self.assertThat(result, Equals(expected_data))
コード例 #12
0
ファイル: test_subnet.py プロジェクト: zeronewb/maas
 def test_list(self):
     user = factory.make_User()
     handler = SubnetHandler(user, {})
     factory.make_Subnet()
     expected_subnets = [
         self.dehydrate_subnet(subnet, for_list=True)
         for subnet in Subnet.objects.all()
     ]
     self.assertItemsEqual(expected_subnets, handler.list({}))
コード例 #13
0
ファイル: test_subnet.py プロジェクト: casual-lemon/maas
 def test_create_as_admin_succeeds_even_with_a_specified_space(self):
     user = factory.make_admin()
     handler = SubnetHandler(user, {}, None)
     vlan = factory.make_VLAN()
     space = factory.make_Space()
     result = handler.create(
         {"vlan": vlan.id, "cidr": "192.168.0.0/24", "space": space.id}
     )
     subnet = Subnet.objects.get(id=result["id"])
     self.assertThat(subnet.cidr, Equals("192.168.0.0/24"))
コード例 #14
0
ファイル: test_subnet.py プロジェクト: zeronewb/maas
 def test__update_as_admin_succeeds_even_with_a_specified_space(self):
     user = factory.make_admin()
     handler = SubnetHandler(user, {})
     subnet = factory.make_Subnet(description="sad subnet")
     space = factory.make_Space()
     new_description = "happy subnet"
     handler.update({
         "id": subnet.id,
         "space": space.id,
         "description": new_description
     })
     subnet = reload_object(subnet)
     self.assertThat(subnet.description, Equals(new_description))
コード例 #15
0
ファイル: test_subnet.py プロジェクト: zeronewb/maas
 def test__scan_as_admin_succeeds_and_returns_user_friendly_result(self):
     user = factory.make_admin()
     handler = SubnetHandler(user, {})
     subnet = factory.make_Subnet(version=4)
     rack = factory.make_RackController()
     factory.make_Interface(node=rack, subnet=subnet)
     cidr = subnet.get_ipnetwork()
     result = handler.scan({
         "id": subnet.id,
     })
     self.assertThat(result, Equals(sentinel.result))
     self.assertThat(self.scan_all_rack_networks,
                     MockCalledOnceWith(cidrs=[cidr]))
     self.assertThat(self.user_friendly_scan_results,
                     MockCalledOnceWith(sentinel.rpc_result))
コード例 #16
0
ファイル: test_subnet.py プロジェクト: tai271828/maas
    def test_list_uses_consistent_queries(self):
        user = factory.make_User()
        handler = SubnetHandler(user, {}, None)
        subnet = factory.make_Subnet()
        factory.make_Interface(iftype=INTERFACE_TYPE.UNKNOWN, subnet=subnet)
        self.assertIsNone(handler.cache.get("staticroutes"))
        queries_one, _ = count_queries(handler.list, {})

        for _ in range(10):
            subnet = factory.make_Subnet()
            for x in range(5):
                node = factory.make_Node_with_Interface_on_Subnet(
                    subnet=subnet, status=NODE_STATUS.READY)
                iface = node.interface_set.first()
                factory.make_StaticIPAddress(
                    alloc_type=IPADDRESS_TYPE.STICKY,
                    subnet=subnet,
                    interface=iface,
                )

        self.assertIsNotNone(handler.cache["staticroutes"])
        del handler.cache["staticroutes"]
        queries_all, _ = count_queries(handler.list, {})
        self.assertEquals(queries_one, queries_all)
        self.assertIsNotNone(handler.cache["staticroutes"])
        self.assertEquals(4, queries_one)
コード例 #17
0
ファイル: test_subnet.py プロジェクト: tai271828/maas
 def test__scan_as_admin_logs_the_fact_that_a_scan_happened(self):
     user = factory.make_admin()
     handler = SubnetHandler(user, {}, None)
     subnet = factory.make_Subnet(version=4)
     rack = factory.make_RackController()
     factory.make_Interface(node=rack, subnet=subnet)
     logger = self.useFixture(FakeLogger())
     cidr = subnet.get_ipnetwork()
     handler.scan({"id": subnet.id})
     # Use MatchesRegex here rather than DocTestMatches because usernames
     # can contain characters that confuse DocTestMatches (e.g. periods).
     self.assertThat(
         logger.output,
         MatchesRegex(
             "User '%s' initiated a neighbour discovery scan against subnet: %s"
             % (re.escape(user.username), re.escape(str(cidr)))),
     )
コード例 #18
0
ファイル: test_subnet.py プロジェクト: tai271828/maas
 def test_get_uses_consistent_queries(self):
     user = factory.make_User()
     handler = SubnetHandler(user, {}, None)
     subnet = factory.make_Subnet()
     self.assertIsNone(handler.cache.get("staticroutes"))
     queries, _ = count_queries(handler.get, {"id": subnet.id})
     self.assertEquals(5, queries)
     self.assertIsNotNone(handler.cache["staticroutes"])
コード例 #19
0
 def test_list_uses_consistent_queries(self):
     user = factory.make_User()
     handler = SubnetHandler(user, {}, None)
     for _ in range(20):
         factory.make_Subnet()
     self.assertIsNone(handler.cache.get("staticroutes"))
     queries_one, _ = count_queries(handler.list, {"limit": 1})
     self.assertIsNotNone(handler.cache["staticroutes"])
     del handler.cache["staticroutes"]
     queries_all, _ = count_queries(handler.list, {})
     self.assertEquals(queries_one, queries_all)
     self.assertIsNotNone(handler.cache["staticroutes"])
     self.assertEquals(5, queries_one)