Merge ~ack/maas:1905263-lxd-delete-force-2.9 into maas:2.9

Proposed by Alberto Donato
Status: Merged
Approved by: Alberto Donato
Approved revision: fb2e0dace93bfc53b7485cd40d57fc75d9ab2342
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~ack/maas:1905263-lxd-delete-force-2.9
Merge into: maas:2.9
Diff against target: 39 lines (+10/-7)
2 files modified
src/provisioningserver/drivers/pod/lxd.py (+7/-6)
src/provisioningserver/drivers/pod/tests/test_lxd.py (+3/-1)
Reviewer Review Type Date Requested Status
Alberto Donato (community) Approve
Review via email: mp+394315@code.launchpad.net

Commit message

LP: #1905263 - force-stop LXD VMs when decomposing, and wait for them to be stopped before removing

To post a comment you must log in.
Revision history for this message
Alberto Donato (ack) :
review: Approve

There was an error fetching revisions from git servers. Please try again in a few minutes. If the problem persists, contact Launchpad support.

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 ad9c129..bcb3e68 100644
3--- a/src/provisioningserver/drivers/pod/lxd.py
4+++ b/src/provisioningserver/drivers/pod/lxd.py
5@@ -704,12 +704,13 @@ class LXDPodDriver(PodDriver):
6 def decompose(self, pod_id, context):
7 """Decompose a virtual machine."""
8 client = yield self.get_client(pod_id, context)
9- machine = yield deferToThread(
10- client.virtual_machines.get, context["instance_name"]
11- )
12- # Stop the machine.
13- yield deferToThread(machine.stop)
14- yield deferToThread(machine.delete, wait=True)
15+
16+ def sync_decompose(instance_name):
17+ machine = client.virtual_machines.get(instance_name)
18+ machine.stop(force=True, wait=True)
19+ machine.delete(wait=True)
20+
21+ yield deferToThread(sync_decompose, context["instance_name"])
22 # Hints are updated on the region for LXDPodDriver.
23 return DiscoveredPodHints()
24
25diff --git a/src/provisioningserver/drivers/pod/tests/test_lxd.py b/src/provisioningserver/drivers/pod/tests/test_lxd.py
26index c406763..99f53d9 100644
27--- a/src/provisioningserver/drivers/pod/tests/test_lxd.py
28+++ b/src/provisioningserver/drivers/pod/tests/test_lxd.py
29@@ -1046,7 +1046,9 @@ class TestLXDPodDriver(MAASTestCase):
30 client.virtual_machines.get.return_value = mock_machine
31 empty_hints = yield driver.decompose(pod_id, context)
32
33- self.assertThat(mock_machine.stop, MockCalledOnceWith())
34+ self.assertThat(
35+ mock_machine.stop, MockCalledOnceWith(force=True, wait=True)
36+ )
37 self.assertThat(mock_machine.delete, MockCalledOnceWith(wait=True))
38 self.assertThat(
39 empty_hints,

Subscribers

People subscribed via source and target branches