diff --git a/src/scvmm/HISTORY.rst b/src/scvmm/HISTORY.rst index 9a304cc43a2..6559c19808b 100644 --- a/src/scvmm/HISTORY.rst +++ b/src/scvmm/HISTORY.rst @@ -2,6 +2,10 @@ Release History =============== +1.2.2 +++++++ +* `az scvmm vm delete`: Clear the retained HybridCompute machine's SCVMM kind before VM instance deletion, including with `--no-wait`. + 1.2.1 ++++++ * [HotFix] Fixed `az scvmm vm create-from-machines` command for VM Instance creation. diff --git a/src/scvmm/azext_scvmm/custom.py b/src/scvmm/azext_scvmm/custom.py index 6a6fa2eb7e2..cfc52a19af3 100644 --- a/src/scvmm/azext_scvmm/custom.py +++ b/src/scvmm/azext_scvmm/custom.py @@ -999,13 +999,24 @@ def delete_vm( machine_client.delete(resource_group_name, resource_name) return + if not delete_machine: + try: + machine = machine_client.get(resource_group_name, resource_name) + except ResourceNotFoundError: + machine = None + + if machine is not None and machine.kind and machine.kind.lower() == MACHINE_KIND_SCVMM.lower(): + _ = machine_client.update( + resource_group_name, resource_name, MachineUpdate(kind=''), + ) + try: # TODO (snaskar): Add deleteFromHost to SDK op = sdk_no_wait( no_wait, client.begin_delete, machine_id, force, delete_from_host, ) except ResourceNotFoundError: - # Nothing to delete if the parent machine does not exist. + # Nothing to delete if the VM instance does not exist. return op.result() diff --git a/src/scvmm/azext_scvmm/tests/latest/test_scvmm_scenario.py b/src/scvmm/azext_scvmm/tests/latest/test_scvmm_scenario.py index 38466dd0a7c..ed4c05376fa 100644 --- a/src/scvmm/azext_scvmm/tests/latest/test_scvmm_scenario.py +++ b/src/scvmm/azext_scvmm/tests/latest/test_scvmm_scenario.py @@ -316,6 +316,11 @@ def test_scvmm(self): ) self.cmd('az scvmm vm delete -g {resource_group} --name {vm_name} -y') + machine = self.cmd( + 'az resource show -g {resource_group} -n {vm_name}' + ' --resource-type Microsoft.HybridCompute/machines --api-version 2023-04-25-preview' + ).get_output_in_json() + self.assertIn(machine.get('kind'), (None, '')) with self.assertRaisesRegex(SystemExit, "3"): self.cmd('az scvmm vm show -g {resource_group} --name {vm_name}') @@ -333,6 +338,11 @@ def test_scvmm(self): ]) self.cmd('az scvmm vm delete -g {resource_group} --name {vm_name} --delete-from-host -y') + machine = self.cmd( + 'az resource show -g {resource_group} -n {vm_name}' + ' --resource-type Microsoft.HybridCompute/machines --api-version 2023-04-25-preview' + ).get_output_in_json() + self.assertIn(machine.get('kind'), (None, '')) self.cmd('az scvmm avset delete -g {resource_group} --name {avset_name} -y') diff --git a/src/scvmm/setup.py b/src/scvmm/setup.py index 2100980072f..162b6be4b46 100644 --- a/src/scvmm/setup.py +++ b/src/scvmm/setup.py @@ -16,7 +16,7 @@ logger.warn("Wheel is not available, disabling bdist_wheel hook") -VERSION = '1.2.1' +VERSION = '1.2.2' # The full list of classifiers is available at # https://pypi.python.org/pypi?%3Aaction=list_classifiers