From 0ebd5caa9950c4b819654d3eeaaac0921e88fd05 Mon Sep 17 00:00:00 2001 From: "Yihua Cao (AzureStack)" Date: Wed, 25 Jun 2025 15:47:36 +0800 Subject: [PATCH] Add param force to az vme uninstall --- src/vme/HISTORY.rst | 6 +++++- src/vme/azext_vme/_params.py | 4 ++++ src/vme/azext_vme/custom.py | 6 ++++-- src/vme/azext_vme/tests/latest/test_vme_scenario.py | 2 +- src/vme/setup.py | 2 +- 5 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/vme/HISTORY.rst b/src/vme/HISTORY.rst index a9290891dee..279726ddb00 100644 --- a/src/vme/HISTORY.rst +++ b/src/vme/HISTORY.rst @@ -14,4 +14,8 @@ Release History 1.0.0b3 ++++++ * Update 'az vme list --output table' to show correct versions. -* Wait for the bundle feature flag to fully propagate after enabling it. \ No newline at end of file +* Wait for the bundle feature flag to fully propagate after enabling it. + +1.0.0b4 +++++++ +* Add '--force' to 'az vme uninstall' to force delete extension. diff --git a/src/vme/azext_vme/_params.py b/src/vme/azext_vme/_params.py index 1045ad87696..6f059dae26a 100644 --- a/src/vme/azext_vme/_params.py +++ b/src/vme/azext_vme/_params.py @@ -92,6 +92,10 @@ def load_arguments(self, _): help='Extension types to be uninstalled.', arg_type=get_enum_type(IncludedExtensionTypes), ) + c.argument( + 'force', + help='Specify whether to force delete the extension from the cluster.', + ) with self.argument_context('vme list') as c: c.argument( diff --git a/src/vme/azext_vme/custom.py b/src/vme/azext_vme/custom.py index e5aec37c78c..dfef6399c25 100644 --- a/src/vme/azext_vme/custom.py +++ b/src/vme/azext_vme/custom.py @@ -81,7 +81,8 @@ def uninstall_vme( cmd, resource_group_name: str, cluster_name: str, - include_extension_types: list[str]): + include_extension_types: list[str], + force=False): if 'all' in include_extension_types: include_extension_types = consts.BundleExtensionTypes subscription_id = get_subscription_id(cmd.cli_ctx) @@ -108,8 +109,9 @@ def uninstall_vme( "connectedClusters", "--name", consts.BundleExtensionTypeNames[extension_type], - "--force", "--yes"] + if force: + command.append("--force") utils.call_subprocess_raise_output(command) print(f"Uninstalled extension {extension_type} successfully.") if len(include_extension_types) > 1: diff --git a/src/vme/azext_vme/tests/latest/test_vme_scenario.py b/src/vme/azext_vme/tests/latest/test_vme_scenario.py index 16f8280c43b..898380a548b 100644 --- a/src/vme/azext_vme/tests/latest/test_vme_scenario.py +++ b/src/vme/azext_vme/tests/latest/test_vme_scenario.py @@ -72,5 +72,5 @@ def test_vme_live(self, resource_group, resource_group_location): captured_output = io.StringIO() with redirect_stdout(captured_output): - self.cmd("vme uninstall -g {rg} -c {cluster_name} --include all") + self.cmd("vme uninstall -g {rg} -c {cluster_name} --include all --force") self.assertIn("All extensions uninstalled successfully.", captured_output.getvalue()) \ No newline at end of file diff --git a/src/vme/setup.py b/src/vme/setup.py index aa86686bcf8..d6f254df1e1 100644 --- a/src/vme/setup.py +++ b/src/vme/setup.py @@ -10,7 +10,7 @@ from setuptools import setup, find_packages # HISTORY.rst entry. -VERSION = '1.0.0b3' +VERSION = '1.0.0b4' # The full list of classifiers is available at # https://pypi.python.org/pypi?%3Aaction=list_classifiers