Esempio n. 1
0
 def test_full_dehydrate_for_list_no_details(self):
     admin = factory.make_admin()
     handler = PodHandler(admin, {}, None)
     vlan = factory.make_VLAN(dhcp_on=True)
     subnet = factory.make_Subnet(vlan=vlan)
     node = factory.make_Node_with_Interface_on_Subnet(subnet=subnet)
     ip = factory.make_StaticIPAddress(interface=node.boot_interface,
                                       subnet=subnet)
     numa_node0 = node.default_numanode
     numa_node0.cores = [0, 3]
     numa_node0.memory = 4096
     numa_node0.save()
     factory.make_NUMANode(node=node, cores=[1, 4], memory=1024)
     factory.make_NUMANode(node=node, cores=[2, 5], memory=2048)
     project = factory.make_string()
     pod = self.make_pod_with_hints(
         pod_type="lxd",
         parameters={"project": project},
         host=node,
         ip_address=ip,
     )
     factory.make_VirtualMachine(bmc=pod, project=project)
     result = handler.full_dehydrate(pod, for_list=True)
     self.assertEqual(result["resources"]["numa"], [])
     self.assertEqual(result["resources"]["vms"], [])
Esempio n. 2
0
 def test_get_permissions(self):
     admin = factory.make_admin()
     handler = PodHandler(admin, {}, None)
     pod = self.make_pod_with_hints()
     result = handler.full_dehydrate(pod)
     self.assertItemsEqual(["edit", "delete", "compose"],
                           result["permissions"])
Esempio n. 3
0
 def test_list(self):
     admin = factory.make_admin()
     handler = PodHandler(admin, {}, None)
     pod = self.make_pod_with_hints()
     expected_data = [handler.full_dehydrate(pod, for_list=True)]
     result = handler.list({"id": pod.id})
     self.assertThat(result, Equals(expected_data))
Esempio n. 4
0
 def test_get_permissions(self):
     admin = factory.make_admin()
     handler = PodHandler(admin, {}, None)
     pod = self.make_pod_with_hints()
     result = handler.full_dehydrate(pod)
     self.assertItemsEqual(['edit', 'delete', 'compose'],
                           result['permissions'])
Esempio n. 5
0
 def test_get_as_standard_user(self):
     user = factory.make_User()
     handler = PodHandler(user, {}, None)
     pod = self.make_pod_with_hints()
     expected_data = handler.full_dehydrate(pod)
     result = handler.get({"id": pod.id})
     self.assertThat(result, Equals(expected_data))
Esempio n. 6
0
 def test_get(self):
     admin = factory.make_admin()
     handler = PodHandler(admin, {})
     pod = self.make_pod_with_hints()
     expected_data = handler.full_dehydrate(pod)
     result = handler.get({"id": pod.id})
     self.assertItemsEqual(expected_data.keys(), result.keys())
     for key in expected_data:
         self.assertEqual(expected_data[key], result[key], key)
     self.assertThat(result, Equals(expected_data))
Esempio n. 7
0
 def test_get(self):
     admin = factory.make_admin()
     handler = PodHandler(admin, {}, None)
     pod = self.make_pod_with_hints()
     expected_data = handler.full_dehydrate(pod)
     result = handler.get({"id": pod.id})
     self.assertItemsEqual(expected_data.keys(), result.keys())
     for key in expected_data:
         self.assertEqual(expected_data[key], result[key], key)
     self.assertThat(result, Equals(expected_data))
     self.assertThat(result["host"], Equals(None))
     self.assertThat(result["attached_vlans"], Equals([]))
     self.assertThat(result["boot_vlans"], Equals([]))
     self.assertThat(result["storage_pools"],
                     Equals(expected_data["storage_pools"]))
Esempio n. 8
0
 def test_get_with_pod_host_determines_vlan_boot_status(self):
     admin = factory.make_admin()
     handler = PodHandler(admin, {}, None)
     vlan = factory.make_VLAN(dhcp_on=False)
     subnet = factory.make_Subnet(vlan=vlan)
     node = factory.make_Node_with_Interface_on_Subnet(subnet=subnet)
     ip = factory.make_StaticIPAddress(interface=node.boot_interface,
                                       subnet=subnet)
     pod = self.make_pod_with_hints(ip_address=ip)
     expected_data = handler.full_dehydrate(pod)
     result = handler.get({"id": pod.id})
     self.assertItemsEqual(expected_data.keys(), result.keys())
     for key in expected_data:
         self.assertEqual(expected_data[key], result[key], key)
     self.assertThat(result, Equals(expected_data))
     self.assertThat(result["attached_vlans"], Equals([subnet.vlan_id]))
     self.assertThat(result["boot_vlans"], Equals([]))
Esempio n. 9
0
 def test_get(self):
     admin = factory.make_admin()
     handler = PodHandler(admin, {}, None)
     pod = self.make_pod_with_hints()
     # Create machines to test owners_count
     factory.make_Node()
     factory.make_Node(bmc=pod)
     factory.make_Node(bmc=pod, owner=admin)
     factory.make_Node(bmc=pod, owner=factory.make_User())
     expected_data = handler.full_dehydrate(pod)
     result = handler.get({"id": pod.id})
     self.assertItemsEqual(expected_data.keys(), result.keys())
     for key in expected_data:
         self.assertEqual(expected_data[key], result[key], key)
     self.assertThat(result, Equals(expected_data))
     self.assertThat(result["host"], Equals(None))
     self.assertThat(result["attached_vlans"], Equals([]))
     self.assertThat(result["boot_vlans"], Equals([]))
     self.assertThat(result["storage_pools"],
                     Equals(expected_data["storage_pools"]))
     self.assertThat(result["owners_count"], Equals(2))
     self.assertEqual(result["numa_pinning"], [])
Esempio n. 10
0
    def test_get_with_pod_host(self):
        admin = factory.make_admin()
        handler = PodHandler(admin, {}, None)
        vlan = factory.make_VLAN(dhcp_on=True)
        subnet = factory.make_Subnet(vlan=vlan)
        node = factory.make_Node_with_Interface_on_Subnet(subnet=subnet)
        ip = factory.make_StaticIPAddress(interface=node.boot_interface,
                                          subnet=subnet)
        numa_node0 = node.default_numanode
        numa_node0.cores = [0, 3]
        numa_node0.memory = 4096
        numa_node0.save()
        factory.make_NUMANode(node=node, cores=[1, 4], memory=1024)
        factory.make_NUMANode(node=node, cores=[2, 5], memory=2048)
        pod = self.make_pod_with_hints(pod_type="lxd",
                                       host=node,
                                       ip_address=ip)
        factory.make_VirtualMachine(
            memory=1024,
            pinned_cores=[0],
            hugepages_backed=False,
            bmc=pod,
            machine=factory.make_Node(system_id="vm0"),
        )
        factory.make_VirtualMachine(
            memory=1024,
            pinned_cores=[2, 5],
            hugepages_backed=False,
            bmc=pod,
            machine=factory.make_Node(system_id="vm1"),
        )

        expected_data = handler.full_dehydrate(pod)
        result = handler.get({"id": pod.id})
        self.assertItemsEqual(expected_data.keys(), result.keys())
        for key in expected_data:
            self.assertEqual(expected_data[key], result[key], key)
        self.assertThat(result, Equals(expected_data))
        self.assertThat(result["host"], Equals(node.system_id))
        self.assertThat(result["attached_vlans"], Equals([subnet.vlan_id]))
        self.assertThat(result["boot_vlans"], Equals([subnet.vlan_id]))
        self.assertEqual(
            result["numa_pinning"],
            [
                {
                    "cores": {
                        "allocated": [0],
                        "free": [3]
                    },
                    "interfaces": [
                        {
                            "id": 100,
                            "name": "eth4",
                            "virtual_functions": {
                                "allocated": 4,
                                "free": 12
                            },
                        },
                        {
                            "id": 200,
                            "name": "eth5",
                            "virtual_functions": {
                                "allocated": 14,
                                "free": 2
                            },
                        },
                    ],
                    "memory": {
                        "general": {
                            "allocated": 1024 * MB,
                            "free": 3072 * MB
                        },
                        "hugepages": [],
                    },
                    "node_id":
                    0,
                    "vms": [
                        {
                            "pinned_cores": [0],
                            "system_id":
                            "vm0",
                            "networks": [
                                {
                                    "guest_nic_id": 101,
                                    "host_nic_id": 100
                                },
                                {
                                    "guest_nic_id": 102,
                                    "host_nic_id": 100
                                },
                            ],
                        },
                    ],
                },
                {
                    "cores": {
                        "allocated": [],
                        "free": [1, 4]
                    },
                    "interfaces": [
                        {
                            "id": 100,
                            "name": "eth4",
                            "virtual_functions": {
                                "allocated": 4,
                                "free": 12
                            },
                        },
                        {
                            "id": 200,
                            "name": "eth5",
                            "virtual_functions": {
                                "allocated": 14,
                                "free": 2
                            },
                        },
                    ],
                    "memory": {
                        "general": {
                            "allocated": 0,
                            "free": 1024 * MB
                        },
                        "hugepages": [],
                    },
                    "node_id":
                    1,
                    "vms": [],
                },
                {
                    "cores": {
                        "allocated": [2, 5],
                        "free": []
                    },
                    "interfaces": [
                        {
                            "id": 100,
                            "name": "eth4",
                            "virtual_functions": {
                                "allocated": 4,
                                "free": 12
                            },
                        },
                        {
                            "id": 200,
                            "name": "eth5",
                            "virtual_functions": {
                                "allocated": 14,
                                "free": 2
                            },
                        },
                    ],
                    "memory": {
                        "general": {
                            "allocated": 1024 * MB,
                            "free": 1024 * MB
                        },
                        "hugepages": [],
                    },
                    "node_id":
                    2,
                    "vms": [
                        {
                            "pinned_cores": [2, 5],
                            "system_id":
                            "vm1",
                            "networks": [
                                {
                                    "guest_nic_id": 101,
                                    "host_nic_id": 100
                                },
                                {
                                    "guest_nic_id": 102,
                                    "host_nic_id": 100
                                },
                            ],
                        },
                    ],
                },
            ],
        )