Merge ~adam-collard/maas:lxd-power-debug into maas:master

Proposed by Adam Collard
Status: Merged
Approved by: Adam Collard
Approved revision: 445dd044fb7e490e775a7f7f2293725563f167fe
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~adam-collard/maas:lxd-power-debug
Merge into: maas:master
Diff against target: 76 lines (+34/-4)
2 files modified
src/provisioningserver/drivers/pod/lxd.py (+6/-2)
src/provisioningserver/drivers/pod/tests/test_lxd.py (+28/-2)
Reviewer Review Type Date Requested Status
MAAS Lander Approve
Anton Troyanov Approve
Review via email: mp+425140@code.launchpad.net

Commit message

Add debug logging for LXD power state changes

To post a comment you must log in.
Revision history for this message
Anton Troyanov (troyanov) :
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 lxd-power-debug lp:~adam-collard/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: SUCCESS
COMMIT: 445dd044fb7e490e775a7f7f2293725563f167fe

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/src/provisioningserver/drivers/pod/lxd.py b/src/provisioningserver/drivers/pod/lxd.py
2index 210afbd..a89329b 100644
3--- a/src/provisioningserver/drivers/pod/lxd.py
4+++ b/src/provisioningserver/drivers/pod/lxd.py
5@@ -264,7 +264,9 @@ class LXDPodDriver(PodDriver):
6 def power_on(self, pod_id: int, context: dict):
7 """Power on LXD VM."""
8 with self._get_machine(pod_id, context) as machine:
9- if LXD_VM_POWER_STATE[machine.status_code] == "off":
10+ power_state = LXD_VM_POWER_STATE[machine.status_code]
11+ maaslog.debug(f"power_on: {pod_id} is {power_state}")
12+ if power_state == "off":
13 machine.start()
14
15 @asynchronous
16@@ -272,7 +274,9 @@ class LXDPodDriver(PodDriver):
17 def power_off(self, pod_id: int, context: dict):
18 """Power off LXD VM."""
19 with self._get_machine(pod_id, context) as machine:
20- if LXD_VM_POWER_STATE[machine.status_code] == "on":
21+ power_state = LXD_VM_POWER_STATE[machine.status_code]
22+ maaslog.debug(f"power_off: {pod_id} is {power_state}")
23+ if power_state == "on":
24 machine.stop()
25
26 @asynchronous
27diff --git a/src/provisioningserver/drivers/pod/tests/test_lxd.py b/src/provisioningserver/drivers/pod/tests/test_lxd.py
28index 45f0951..ea98268 100644
29--- a/src/provisioningserver/drivers/pod/tests/test_lxd.py
30+++ b/src/provisioningserver/drivers/pod/tests/test_lxd.py
31@@ -581,17 +581,43 @@ class TestLXDPodDriver(MAASTestCase):
32
33 @inlineCallbacks
34 def test_power_on(self):
35+ pod_id = factory.make_name("pod_id")
36 machine = self.fake_lxd.virtual_machines.get.return_value
37 machine.status_code = 110
38- yield self.driver.power_on(None, self.make_context())
39+ mock_log = self.patch(lxd_module, "maaslog")
40+ yield self.driver.power_on(pod_id, self.make_context())
41 machine.start.assert_called_once_with()
42+ mock_log.debug.assert_called_once_with(f"power_on: {pod_id} is off")
43+
44+ @inlineCallbacks
45+ def test_power_on_noop_if_on(self):
46+ pod_id = factory.make_name("pod_id")
47+ machine = self.fake_lxd.virtual_machines.get.return_value
48+ machine.status_code = 103
49+ mock_log = self.patch(lxd_module, "maaslog")
50+ yield self.driver.power_on(pod_id, self.make_context())
51+ machine.start.assert_not_called()
52+ mock_log.debug.assert_called_once_with(f"power_on: {pod_id} is on")
53
54 @inlineCallbacks
55 def test_power_off(self):
56+ pod_id = factory.make_name("pod_id")
57 machine = self.fake_lxd.virtual_machines.get.return_value
58 machine.status_code = 103
59- yield self.driver.power_off(None, self.make_context())
60+ mock_log = self.patch(lxd_module, "maaslog")
61+ yield self.driver.power_off(pod_id, self.make_context())
62 machine.stop.assert_called_once_with()
63+ mock_log.debug.assert_called_once_with(f"power_off: {pod_id} is on")
64+
65+ @inlineCallbacks
66+ def test_power_off_noop_if_off(self):
67+ pod_id = factory.make_name("pod_id")
68+ machine = self.fake_lxd.virtual_machines.get.return_value
69+ machine.status_code = 110
70+ mock_log = self.patch(lxd_module, "maaslog")
71+ yield self.driver.power_off(pod_id, self.make_context())
72+ machine.stop.assert_not_called()
73+ mock_log.debug.assert_called_once_with(f"power_off: {pod_id} is off")
74
75 @inlineCallbacks
76 def test_power_query(self):

Subscribers

People subscribed via source and target branches