Merge ~ack/maas:1988759-3.2 into maas:3.2

Proposed by Alberto Donato
Status: Merged
Approved by: Alberto Donato
Approved revision: 81e3543ceb8b046c70557777b996b1b0940e0bc4
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~ack/maas:1988759-3.2
Merge into: maas:3.2
Diff against target: 122 lines (+41/-12)
4 files modified
src/metadataserver/tests/test_vendor_data.py (+1/-1)
src/metadataserver/vendor_data.py (+1/-1)
src/provisioningserver/drivers/pod/lxd.py (+7/-6)
src/provisioningserver/drivers/pod/tests/test_lxd.py (+32/-4)
Reviewer Review Type Date Requested Status
MAAS Lander Approve
Alberto Donato (community) Approve
Review via email: mp+431659@code.launchpad.net

Commit message

LP:1988759 allow null config from storage pools (backport 9b23293a6)

This also reverts change to make certificate unrestricted on deployed host

To post a comment you must log in.
Revision history for this message
Alberto Donato (ack) :
review: Approve
Revision history for this message
MAAS Lander (maas-lander) wrote :
Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b 1988759-3.2 lp:~ack/maas/+git/maas into -b 3.2 lp:~maas-committers/maas

STATUS: SUCCESS
COMMIT: 81e3543ceb8b046c70557777b996b1b0940e0bc4

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/src/metadataserver/tests/test_vendor_data.py b/src/metadataserver/tests/test_vendor_data.py
2index 54e3fd7..74aed9e 100644
3--- a/src/metadataserver/tests/test_vendor_data.py
4+++ b/src/metadataserver/tests/test_vendor_data.py
5@@ -450,7 +450,7 @@ class TestGenerateKVMPodConfiguration(MAASServerTestCase):
6 "lxd init --auto --network-address=[::]",
7 "lxc project create maas",
8 "sh -c 'lxc project edit maas </root/maas-project.yaml'",
9- "lxc config trust add /root/lxd.crt",
10+ "lxc config trust add /root/lxd.crt --restricted --projects maas",
11 "rm /root/lxd.crt /root/maas-project.yaml",
12 ],
13 ),
14diff --git a/src/metadataserver/vendor_data.py b/src/metadataserver/vendor_data.py
15index 60b27f5..1e69157 100644
16--- a/src/metadataserver/vendor_data.py
17+++ b/src/metadataserver/vendor_data.py
18@@ -232,7 +232,7 @@ def generate_kvm_pod_configuration(node):
19 "lxd init --auto --network-address=[::]",
20 f"lxc project create {maas_project}",
21 f"sh -c 'lxc project edit {maas_project} <{project_conf_file}'",
22- f"lxc config trust add {cert_file}",
23+ f"lxc config trust add {cert_file} --restricted --projects {maas_project}",
24 f"rm {cert_file} {project_conf_file}",
25 ]
26
27diff --git a/src/provisioningserver/drivers/pod/lxd.py b/src/provisioningserver/drivers/pod/lxd.py
28index 4131b8c..1e3f1f8 100644
29--- a/src/provisioningserver/drivers/pod/lxd.py
30+++ b/src/provisioningserver/drivers/pod/lxd.py
31@@ -388,7 +388,7 @@ class LXDPodDriver(PodDriver):
32 pools = []
33 local_storage = 0
34 for storage_pool in storage_pools:
35- discovered_storage_pool = self._get_discovered_pod_storage_pool(
36+ discovered_storage_pool = self._get_discovered_storage_pool(
37 storage_pool
38 )
39 local_storage += discovered_storage_pool.storage
40@@ -805,11 +805,12 @@ class LXDPodDriver(PodDriver):
41 location=machine.location,
42 )
43
44- def _get_discovered_pod_storage_pool(self, storage_pool):
45- """Get the Pod storage pool."""
46- storage_pool_config = storage_pool.config
47- # Sometimes the config is empty, use get() method on the dictionary in case.
48- storage_pool_path = storage_pool_config.get("source")
49+ def _get_discovered_storage_pool(self, storage_pool):
50+ """Get storage pool info by name."""
51+ # Storage configuration can either be empty or None (if credentials are
52+ # restricted to a project)
53+ storage_pool_config = storage_pool.config or {}
54+ storage_pool_path = storage_pool_config.get("source", "")
55 storage_pool_resources = storage_pool.resources.get()
56 total_storage = storage_pool_resources.space["total"]
57
58diff --git a/src/provisioningserver/drivers/pod/tests/test_lxd.py b/src/provisioningserver/drivers/pod/tests/test_lxd.py
59index 45f0951..4e1a4af 100644
60--- a/src/provisioningserver/drivers/pod/tests/test_lxd.py
61+++ b/src/provisioningserver/drivers/pod/tests/test_lxd.py
62@@ -737,12 +737,11 @@ class TestLXDPodDriver(MAASTestCase):
63 ],
64 )
65
66- def test_get_discovered_pod_storage_pool(self):
67+ def test_get_discovered_storage_pool(self):
68 mock_storage_pool = Mock()
69 mock_storage_pool.name = factory.make_name("pool")
70 mock_storage_pool.driver = "dir"
71 mock_storage_pool.config = {
72- "size": "61203283968",
73 "source": "/home/chb/mnt/l2/disks/default.img",
74 "volume.size": "0",
75 "zfs.pool_name": "default",
76@@ -750,8 +749,8 @@ class TestLXDPodDriver(MAASTestCase):
77 mock_resources = Mock()
78 mock_resources.space = {"used": 207111192576, "total": 306027577344}
79 mock_storage_pool.resources.get.return_value = mock_resources
80- discovered_pod_storage_pool = (
81- self.driver._get_discovered_pod_storage_pool(mock_storage_pool)
82+ discovered_pod_storage_pool = self.driver._get_discovered_storage_pool(
83+ mock_storage_pool
84 )
85 self.assertEqual(
86 mock_storage_pool.name, discovered_pod_storage_pool.id
87@@ -770,6 +769,35 @@ class TestLXDPodDriver(MAASTestCase):
88 mock_resources.space["total"], discovered_pod_storage_pool.storage
89 )
90
91+ def test_get_discovered_storage_pool_no_source(self):
92+ mock_storage_pool = Mock()
93+ mock_storage_pool.name = factory.make_name("pool")
94+ mock_storage_pool.driver = "dir"
95+ mock_storage_pool.config = {
96+ "volume.size": "0",
97+ "zfs.pool_name": "default",
98+ }
99+ mock_resources = Mock()
100+ mock_resources.space = {"used": 207111192576, "total": 306027577344}
101+ mock_storage_pool.resources.get.return_value = mock_resources
102+ discovered_pod_storage_pool = self.driver._get_discovered_storage_pool(
103+ mock_storage_pool
104+ )
105+ self.assertEqual(discovered_pod_storage_pool.path, "")
106+
107+ def test_get_discovered_storage_pool_no_config(self):
108+ mock_storage_pool = Mock()
109+ mock_storage_pool.name = factory.make_name("pool")
110+ mock_storage_pool.driver = "dir"
111+ mock_storage_pool.config = None
112+ mock_resources = Mock()
113+ mock_resources.space = {"used": 207111192576, "total": 306027577344}
114+ mock_storage_pool.resources.get.return_value = mock_resources
115+ discovered_pod_storage_pool = self.driver._get_discovered_storage_pool(
116+ mock_storage_pool
117+ )
118+ self.assertEqual(discovered_pod_storage_pool.path, "")
119+
120 def test_get_discovered_machine(self):
121 mock_machine = Mock()
122 mock_machine.name = factory.make_name("machine")

Subscribers

People subscribed via source and target branches