Skip to content

Commit 370e5c1

Browse files
committed
move prompt to update decorator
1 parent a0b9d7c commit 370e5c1

File tree

3 files changed

+69
-24
lines changed

3 files changed

+69
-24
lines changed

src/azure-cli/azure/cli/command_modules/acs/custom.py

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -832,16 +832,6 @@ def aks_update(
832832
# DO NOT MOVE: get all the original parameters and save them as a dictionary
833833
raw_parameters = locals()
834834

835-
# Check if auto_upgrade_channel is set to "none"
836-
if auto_upgrade_channel == "none":
837-
warning_message = (
838-
"Since auto-upgrade-channel is set to none, cluster kubernetesVersion will be set to the value of "
839-
"currentKubernetesVersion, all agent pools orchestratorVersion will be set to the value of "
840-
"currentOrchestratorVersion respectively. Continue?"
841-
)
842-
if not prompt_y_n(warning_message, default="n"):
843-
raise CLIError("Operation cancelled by user.")
844-
845835
# decorator pattern
846836
from azure.cli.command_modules.acs.managed_cluster_decorator import AKSManagedClusterUpdateDecorator
847837
aks_update_decorator = AKSManagedClusterUpdateDecorator(
@@ -854,8 +844,7 @@ def aks_update(
854844
# update mc profile
855845
mc = aks_update_decorator.update_mc_profile_default()
856846
# Update kubernetes_version and orchestrator_version based on auto_upgrade_channel
857-
if auto_upgrade_channel == "none":
858-
mc = aks_update_decorator.update_kubernetes_version_and_orchestrator_version(mc)
847+
mc = aks_update_decorator.update_kubernetes_version_and_orchestrator_version(mc)
859848
except DecoratorEarlyExitException:
860849
# exit gracefully
861850
return None

src/azure-cli/azure/cli/command_modules/acs/managed_cluster_decorator.py

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8492,14 +8492,25 @@ def update_kubernetes_version_and_orchestrator_version(self, mc: ManagedCluster)
84928492
"""
84938493
self._ensure_mc(mc)
84948494

8495-
# Set kubernetes version to match the current kubernetes version if it has a value
8496-
if mc.current_kubernetes_version:
8497-
mc.kubernetes_version = mc.current_kubernetes_version
8498-
8499-
# Set orchestrator version for each agent pool to match the current orchestrator version if it has a value
8500-
for agent_pool in mc.agent_pool_profiles:
8501-
if agent_pool.current_orchestrator_version:
8502-
agent_pool.orchestrator_version = agent_pool.current_orchestrator_version
8495+
# Check if auto_upgrade_channel is set to "none"
8496+
auto_upgrade_channel = self.context.get_auto_upgrade_channel()
8497+
if auto_upgrade_channel == "none":
8498+
warning_message = (
8499+
"Since auto-upgrade-channel is set to none, cluster kubernetesVersion will be set to the value of "
8500+
"currentKubernetesVersion, all agent pools orchestratorVersion will be set to the value of "
8501+
"currentOrchestratorVersion respectively. Continue?"
8502+
)
8503+
if not prompt_y_n(warning_message, default="n"):
8504+
raise CLIError("Operation cancelled by user.")
8505+
8506+
# Set kubernetes version to match the current kubernetes version if it has a value
8507+
if mc.current_kubernetes_version:
8508+
mc.kubernetes_version = mc.current_kubernetes_version
8509+
8510+
# Set orchestrator version for each agent pool to match the current orchestrator version if it has a value
8511+
for agent_pool in mc.agent_pool_profiles:
8512+
if agent_pool.current_orchestrator_version:
8513+
agent_pool.orchestrator_version = agent_pool.current_orchestrator_version
85038514

85048515
return mc
85058516

src/azure-cli/azure/cli/command_modules/acs/tests/latest/test_managed_cluster_decorator.py

Lines changed: 49 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11211,10 +11211,13 @@ def test_update_mc_profile_default(self):
1121111211

1121211212
def test_update_kubernetes_version_and_orchestrator_version(self):
1121311213
# First test case
11214+
raw_param_dict = {
11215+
"auto_upgrade_channel": "none",
11216+
}
1121411217
dec_1 = AKSManagedClusterUpdateDecorator(
1121511218
self.cmd,
1121611219
self.client,
11217-
{},
11220+
raw_param_dict,
1121811221
ResourceType.MGMT_CONTAINERSERVICE,
1121911222
)
1122011223
mc_1 = self.models.ManagedCluster(
@@ -11239,7 +11242,11 @@ def test_update_kubernetes_version_and_orchestrator_version(self):
1123911242
mc_1.agent_pool_profiles[1].current_orchestrator_version = "1.21.2"
1124011243

1124111244
dec_1.context.attach_mc(mc_1)
11242-
updated_mc_1 = dec_1.update_kubernetes_version_and_orchestrator_version(mc_1)
11245+
with patch(
11246+
"azure.cli.command_modules.acs.managed_cluster_decorator.prompt_y_n",
11247+
return_value=True,
11248+
):
11249+
updated_mc_1 = dec_1.update_kubernetes_version_and_orchestrator_version(mc_1)
1124311250

1124411251
# Check if kubernetes_version is updated
1124511252
self.assertEqual(updated_mc_1.kubernetes_version, "1.21.2")
@@ -11251,7 +11258,7 @@ def test_update_kubernetes_version_and_orchestrator_version(self):
1125111258
dec_2 = AKSManagedClusterUpdateDecorator(
1125211259
self.cmd,
1125311260
self.client,
11254-
{},
11261+
raw_param_dict,
1125511262
ResourceType.MGMT_CONTAINERSERVICE,
1125611263
)
1125711264
mc_2 = self.models.ManagedCluster(
@@ -11274,13 +11281,51 @@ def test_update_kubernetes_version_and_orchestrator_version(self):
1127411281
mc_2.agent_pool_profiles[1].current_orchestrator_version = None
1127511282

1127611283
dec_2.context.attach_mc(mc_2)
11277-
updated_mc_2 = dec_2.update_kubernetes_version_and_orchestrator_version(mc_2)
11284+
with patch(
11285+
"azure.cli.command_modules.acs.managed_cluster_decorator.prompt_y_n",
11286+
return_value=True,
11287+
):
11288+
updated_mc_2 = dec_2.update_kubernetes_version_and_orchestrator_version(mc_2)
1127811289

1127911290
# Check if kubernetes_version and orchestrator_version remain unchanged
1128011291
self.assertEqual(updated_mc_2.kubernetes_version, "1.18.14")
1128111292
self.assertEqual(updated_mc_2.agent_pool_profiles[0].orchestrator_version, "1.18.14")
1128211293
self.assertEqual(updated_mc_2.agent_pool_profiles[1].orchestrator_version, "1.19.7")
1128311294

11295+
# Third test case with both current_kubernetes_version and current_orchestrator_version as None
11296+
dec_3 = AKSManagedClusterUpdateDecorator(
11297+
self.cmd,
11298+
self.client,
11299+
{},
11300+
ResourceType.MGMT_CONTAINERSERVICE,
11301+
)
11302+
mc_3 = self.models.ManagedCluster(
11303+
location="test_location",
11304+
kubernetes_version="1.18.14",
11305+
agent_pool_profiles=[
11306+
self.models.ManagedClusterAgentPoolProfile(
11307+
name="agentpool1",
11308+
orchestrator_version="1.18.14"
11309+
),
11310+
self.models.ManagedClusterAgentPoolProfile(
11311+
name="agentpool2",
11312+
orchestrator_version="1.19.7"
11313+
)
11314+
]
11315+
)
11316+
# Set current kubernetes version and orchestrator version to 1.21.2
11317+
mc_3.current_kubernetes_version = "1.21.2"
11318+
mc_3.agent_pool_profiles[0].current_orchestrator_version = "1.21.2"
11319+
mc_3.agent_pool_profiles[1].current_orchestrator_version = "1.21.2"
11320+
11321+
dec_3.context.attach_mc(mc_3) # no prompt
11322+
updated_mc_3 = dec_3.update_kubernetes_version_and_orchestrator_version(mc_3)
11323+
11324+
# Check if kubernetes_version and orchestrator_version remain unchanged
11325+
self.assertEqual(updated_mc_3.kubernetes_version, "1.18.14")
11326+
self.assertEqual(updated_mc_3.agent_pool_profiles[0].orchestrator_version, "1.18.14")
11327+
self.assertEqual(updated_mc_3.agent_pool_profiles[1].orchestrator_version, "1.19.7")
11328+
1128411329
def test_check_is_postprocessing_required(self):
1128511330
dec_1 = AKSManagedClusterUpdateDecorator(
1128611331
self.cmd,

0 commit comments

Comments
 (0)