Merge ~ack/maas:1988759-vmhost-deploy-3.1 into maas:3.1

Proposed by Alberto Donato
Status: Merged
Merge reported by: Alberto Donato
Merged at revision: f8b559effd63d85343cba11462310e8b3e705296
Proposed branch: ~ack/maas:1988759-vmhost-deploy-3.1
Merge into: maas:3.1
Diff against target: 119 lines (+43/-14)
2 files modified
src/provisioningserver/drivers/pod/lxd.py (+11/-10)
src/provisioningserver/drivers/pod/tests/test_lxd.py (+32/-4)
Reviewer Review Type Date Requested Status
Alberto Donato (community) Approve
Review via email: mp+431586@code.launchpad.net

Commit message

LP:1988759 allow null config from LXD storage pools

(backport of 95c09efaf and 9b23293a6)

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 :

LANDING
-b 1988759-vmhost-deploy-3.1 lp:~ack/maas/+git/maas into -b 3.1 lp:~maas-committers/maas

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

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

LANDING
-b 1988759-vmhost-deploy-3.1 lp:~ack/maas/+git/maas into -b 3.1 lp:~maas-committers/maas

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

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/src/provisioningserver/drivers/pod/lxd.py b/src/provisioningserver/drivers/pod/lxd.py
index 2ef7f8c..0706aee 100644
--- a/src/provisioningserver/drivers/pod/lxd.py
+++ b/src/provisioningserver/drivers/pod/lxd.py
@@ -391,7 +391,7 @@ class LXDPodDriver(PodDriver):
391 pools = []391 pools = []
392 local_storage = 0392 local_storage = 0
393 for storage_pool in storage_pools:393 for storage_pool in storage_pools:
394 discovered_storage_pool = self._get_discovered_pod_storage_pool(394 discovered_storage_pool = self._get_discovered_storage_pool(
395 storage_pool395 storage_pool
396 )396 )
397 local_storage += discovered_storage_pool.storage397 local_storage += discovered_storage_pool.storage
@@ -803,11 +803,12 @@ class LXDPodDriver(PodDriver):
803 location=machine.location,803 location=machine.location,
804 )804 )
805805
806 def _get_discovered_pod_storage_pool(self, storage_pool):806 def _get_discovered_storage_pool(self, storage_pool):
807 """Get the Pod storage pool."""807 """Get storage pool info by name."""
808 storage_pool_config = storage_pool.config808 # Storage configuration can either be empty or None (if credentials are
809 # Sometimes the config is empty, use get() method on the dictionary in case.809 # restricted to a project)
810 storage_pool_path = storage_pool_config.get("source")810 storage_pool_config = storage_pool.config or {}
811 storage_pool_path = storage_pool_config.get("source", "")
811 storage_pool_resources = storage_pool.resources.get()812 storage_pool_resources = storage_pool.resources.get()
812 total_storage = storage_pool_resources.space["total"]813 total_storage = storage_pool_resources.space["total"]
813814
@@ -875,7 +876,7 @@ class LXDPodDriver(PodDriver):
875 try:876 try:
876 client.authenticate(password)877 client.authenticate(password)
877 except LXDAPIException as e:878 except LXDAPIException as e:
878 raise Error(f"Password authentication failed: {e}")879 raise Error(f"Password authentication failed: {e}") from e
879 return client880 return client
880881
881 try:882 try:
@@ -898,10 +899,10 @@ class LXDPodDriver(PodDriver):
898 raise Error(899 raise Error(
899 "Certificate is not trusted and no password was given"900 "Certificate is not trusted and no password was given"
900 )901 )
901 except ClientConnectionFailed:902 except ClientConnectionFailed as e:
902 raise LXDPodError(903 raise LXDPodError(
903 f"Pod {pod_id}: Failed to connect to the LXD REST API."904 f"Pod {pod_id}: Failed to connect to the LXD REST API: {e}"
904 )905 ) from e
905 yield client906 yield client
906 if cert_paths:907 if cert_paths:
907 for path in cert_paths:908 for path in cert_paths:
diff --git a/src/provisioningserver/drivers/pod/tests/test_lxd.py b/src/provisioningserver/drivers/pod/tests/test_lxd.py
index c74af1f..d72ec1d 100644
--- a/src/provisioningserver/drivers/pod/tests/test_lxd.py
+++ b/src/provisioningserver/drivers/pod/tests/test_lxd.py
@@ -721,12 +721,11 @@ class TestLXDPodDriver(MAASTestCase):
721 ],721 ],
722 )722 )
723723
724 def test_get_discovered_pod_storage_pool(self):724 def test_get_discovered_storage_pool(self):
725 mock_storage_pool = Mock()725 mock_storage_pool = Mock()
726 mock_storage_pool.name = factory.make_name("pool")726 mock_storage_pool.name = factory.make_name("pool")
727 mock_storage_pool.driver = "dir"727 mock_storage_pool.driver = "dir"
728 mock_storage_pool.config = {728 mock_storage_pool.config = {
729 "size": "61203283968",
730 "source": "/home/chb/mnt/l2/disks/default.img",729 "source": "/home/chb/mnt/l2/disks/default.img",
731 "volume.size": "0",730 "volume.size": "0",
732 "zfs.pool_name": "default",731 "zfs.pool_name": "default",
@@ -734,8 +733,8 @@ class TestLXDPodDriver(MAASTestCase):
734 mock_resources = Mock()733 mock_resources = Mock()
735 mock_resources.space = {"used": 207111192576, "total": 306027577344}734 mock_resources.space = {"used": 207111192576, "total": 306027577344}
736 mock_storage_pool.resources.get.return_value = mock_resources735 mock_storage_pool.resources.get.return_value = mock_resources
737 discovered_pod_storage_pool = (736 discovered_pod_storage_pool = self.driver._get_discovered_storage_pool(
738 self.driver._get_discovered_pod_storage_pool(mock_storage_pool)737 mock_storage_pool
739 )738 )
740 self.assertEqual(739 self.assertEqual(
741 mock_storage_pool.name, discovered_pod_storage_pool.id740 mock_storage_pool.name, discovered_pod_storage_pool.id
@@ -754,6 +753,35 @@ class TestLXDPodDriver(MAASTestCase):
754 mock_resources.space["total"], discovered_pod_storage_pool.storage753 mock_resources.space["total"], discovered_pod_storage_pool.storage
755 )754 )
756755
756 def test_get_discovered_storage_pool_no_source(self):
757 mock_storage_pool = Mock()
758 mock_storage_pool.name = factory.make_name("pool")
759 mock_storage_pool.driver = "dir"
760 mock_storage_pool.config = {
761 "volume.size": "0",
762 "zfs.pool_name": "default",
763 }
764 mock_resources = Mock()
765 mock_resources.space = {"used": 207111192576, "total": 306027577344}
766 mock_storage_pool.resources.get.return_value = mock_resources
767 discovered_pod_storage_pool = self.driver._get_discovered_storage_pool(
768 mock_storage_pool
769 )
770 self.assertEqual(discovered_pod_storage_pool.path, "")
771
772 def test_get_discovered_storage_pool_no_config(self):
773 mock_storage_pool = Mock()
774 mock_storage_pool.name = factory.make_name("pool")
775 mock_storage_pool.driver = "dir"
776 mock_storage_pool.config = None
777 mock_resources = Mock()
778 mock_resources.space = {"used": 207111192576, "total": 306027577344}
779 mock_storage_pool.resources.get.return_value = mock_resources
780 discovered_pod_storage_pool = self.driver._get_discovered_storage_pool(
781 mock_storage_pool
782 )
783 self.assertEqual(discovered_pod_storage_pool.path, "")
784
757 def test_get_discovered_machine(self):785 def test_get_discovered_machine(self):
758 mock_machine = Mock()786 mock_machine = Mock()
759 mock_machine.name = factory.make_name("machine")787 mock_machine.name = factory.make_name("machine")

Subscribers

People subscribed via source and target branches