Merge ~ack/maas:1988759-lxd-storage-pool-null-config into maas:master

Proposed by Alberto Donato
Status: Merged
Approved by: Alberto Donato
Approved revision: bb340cc5ed660b53540ea364ad8c46f1ef0d266e
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~ack/maas:1988759-lxd-storage-pool-null-config
Merge into: maas:master
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
Björn Tillenius Approve
Review via email: mp+431629@code.launchpad.net

Commit message

LP:1988759 allow null config from storage pools

This also reverts change to make certificate unrestricted on deployed host

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

UNIT TESTS
-b 1988759-lxd-storage-pool-null-config lp:~ack/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: FAILED
LOG: http://maas-ci.internal:8080/job/maas-tester/1052/consoleText
COMMIT: 6ccab106d99151ba9eff28cc7b6305b94d20da12

review: Needs Fixing
Revision history for this message
Björn Tillenius (bjornt) wrote :

+1

review: Approve
Revision history for this message
MAAS Lander (maas-lander) wrote :

LANDING
-b 1988759-lxd-storage-pool-null-config lp:~ack/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: FAILED BUILD
LOG: http://maas-ci.internal:8080/job/maas-tester/1054/consoleText

Revision history for this message
MAAS Lander (maas-lander) wrote :

LANDING
-b 1988759-lxd-storage-pool-null-config lp:~ack/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: FAILED BUILD
LOG: http://maas-ci.internal:8080/job/maas-tester/1060/consoleText

Revision history for this message
MAAS Lander (maas-lander) wrote :

LANDING
-b 1988759-lxd-storage-pool-null-config lp:~ack/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: FAILED BUILD
LOG: http://maas-ci.internal:8080/job/maas-tester/1062/consoleText

Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b 1988759-lxd-storage-pool-null-config lp:~ack/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: SUCCESS
COMMIT: bb340cc5ed660b53540ea364ad8c46f1ef0d266e

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 c682bcb..ba3519e 100644
3--- a/src/metadataserver/tests/test_vendor_data.py
4+++ b/src/metadataserver/tests/test_vendor_data.py
5@@ -441,7 +441,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 f32b54c..edbde39 100644
16--- a/src/metadataserver/vendor_data.py
17+++ b/src/metadataserver/vendor_data.py
18@@ -229,7 +229,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 05b6575..a2d79b6 100644
29--- a/src/provisioningserver/drivers/pod/lxd.py
30+++ b/src/provisioningserver/drivers/pod/lxd.py
31@@ -386,7 +386,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@@ -804,11 +804,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 1205407..8f790fa 100644
60--- a/src/provisioningserver/drivers/pod/tests/test_lxd.py
61+++ b/src/provisioningserver/drivers/pod/tests/test_lxd.py
62@@ -763,12 +763,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@@ -776,8 +775,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@@ -796,6 +795,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