Skip to content

Commit 3d04d0b

Browse files
authored
PTFE-1959 support deletion of non-existent vsphere vm (#667)
1 parent 2d4bb12 commit 3d04d0b

File tree

3 files changed

+1872
-1
lines changed

3 files changed

+1872
-1
lines changed

runner_manager/backend/vsphere.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
from com.vmware.content.library_client import Item
66
from com.vmware.content_client import Library
7+
from com.vmware.vapi.std.errors_client import NotFound
78
from com.vmware.vcenter.ovf_client import (
89
DiskProvisioningType,
910
LibraryItem,
@@ -167,7 +168,12 @@ def create(self, runner: Runner) -> Runner:
167168
def delete(self, runner: Runner):
168169
client = self._create_client()
169170
if runner.instance_id is not None:
170-
state = client.vcenter.vm.Power.get(runner.instance_id)
171+
try:
172+
state = client.vcenter.vm.Power.get(runner.instance_id)
173+
log.debug(f"VM {runner.name} state: {state}")
174+
except NotFound:
175+
log.info(f"VM {runner.name} not found.")
176+
return super().delete(runner)
171177
if state == Power.Info(state=Power.State.POWERED_ON):
172178
client.vcenter.vm.Power.stop(runner.instance_id)
173179
elif state == Power.Info(state=Power.State.SUSPENDED):

tests/unit/backend/test_vsphere.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ def vsphere_group(settings) -> RunnerGroup:
4040

4141
@mark.skipif(not os.getenv("GOVC_URL"), reason="GOVC_URL environment variable not set")
4242
def test_vsphere_client(vsphere_group: RunnerGroup, runner: Runner):
43+
# deleting the runner should not raise an exception
44+
runner.instance_id = "i-1234"
45+
vsphere_group.backend.delete(runner)
4346
runner = vsphere_group.backend.create(runner)
4447
assert runner.instance_id is not None
4548
vsphere_group.backend.delete(runner)

0 commit comments

Comments
 (0)