Skip to content

Commit 688cf06

Browse files
author
indusridhar
committed
make updates to rollback cli
1 parent 8108541 commit 688cf06

2 files changed

Lines changed: 28 additions & 33 deletions

File tree

src/aks-preview/azext_aks_preview/custom.py

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2200,24 +2200,18 @@ def aks_agentpool_rollback(cmd, # pylint: disable=unused-argument
22002200
if_match=None,
22012201
if_none_match=None,
22022202
no_wait=False):
2203-
"""Rollback a nodepool to N-1 (previously used configuration)."""
2203+
"""Rollback a nodepool to a previously used configuration."""
2204+
2205+
# Require at least one version to be specified
2206+
if not kubernetes_version and not node_image_version:
2207+
raise RequiredArgumentMissingError(
2208+
"Please specify at least one of --kubernetes-version or --node-image-version. "
2209+
"Use 'az aks nodepool get-rollback-versions' to see available rollback versions."
2210+
)
22042211

22052212
# Get the current agent pool
22062213
current_agentpool = client.get(resource_group_name, cluster_name, nodepool_name)
22072214

2208-
# Get upgrade profile to get recently used versions
2209-
upgrade_profile = client.get_upgrade_profile(resource_group_name, cluster_name, nodepool_name)
2210-
2211-
# Check if rollback versions are available
2212-
if not upgrade_profile.recently_used_versions:
2213-
raise CLIError("No rollback versions are available for this nodepool.")
2214-
2215-
# If no specific versions are provided, use the most recent (N-1) version
2216-
if not kubernetes_version and not node_image_version:
2217-
most_recent = upgrade_profile.recently_used_versions[0]
2218-
kubernetes_version = most_recent.orchestrator_version
2219-
node_image_version = most_recent.node_image_version
2220-
22212215
# Update the agent pool configuration with rollback versions
22222216
if kubernetes_version:
22232217
current_agentpool.orchestrator_version = kubernetes_version

src/aks-preview/azext_aks_preview/tests/latest/test_aks_commands.py

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -20734,7 +20734,7 @@ def test_aks_nodepool_rollback(self, resource_group, resource_group_location):
2073420734

2073520735
self.kwargs.update({"upgrade_version": upgrade_version})
2073620736

20737-
# Upgrade the nodepool to populate rollback versions
20737+
# Upgrade the nodepool to create rollback history
2073820738
upgrade_cmd = (
2073920739
"aks nodepool upgrade "
2074020740
"--resource-group={resource_group} "
@@ -20750,25 +20750,26 @@ def test_aks_nodepool_rollback(self, resource_group, resource_group_location):
2075020750
],
2075120751
)
2075220752

20753-
# Test case 1: Rollback to N-1 (without specifying versions)
20754-
rollback_n1_cmd = (
20753+
# Test case 1: Rollback with only kubernetes-version specified
20754+
self.kwargs.update({"k8s_version": original_k8s_version})
20755+
rollback_k8s_only_cmd = (
2075520756
"aks nodepool rollback "
2075620757
"--resource-group={resource_group} "
2075720758
"--cluster-name={name} "
20758-
"--name={node_pool_name}"
20759+
"--name={node_pool_name} "
20760+
"--kubernetes-version={k8s_version}"
2075920761
)
20760-
rollback_result = self.cmd(
20761-
rollback_n1_cmd,
20762+
rollback_k8s_result = self.cmd(
20763+
rollback_k8s_only_cmd,
2076220764
checks=[
2076320765
self.check("provisioningState", "Succeeded"),
2076420766
],
2076520767
).get_output_in_json()
2076620768

20767-
# Verify that the nodepool rolled back to the original versions
20768-
assert rollback_result["currentOrchestratorVersion"] == original_k8s_version
20769-
assert rollback_result["nodeImageVersion"] == original_node_image_version
20769+
# Verify that kubernetes version was rolled back
20770+
assert rollback_k8s_result["currentOrchestratorVersion"] == original_k8s_version
2077020771

20771-
# Upgrade again for testing specific version rollback scenarios
20772+
# Upgrade again for testing node image only rollback
2077220773
upgrade_cmd_2 = (
2077320774
"aks nodepool upgrade "
2077420775
"--resource-group={resource_group} "
@@ -20784,26 +20785,26 @@ def test_aks_nodepool_rollback(self, resource_group, resource_group_location):
2078420785
],
2078520786
)
2078620787

20787-
# Test case 2: Rollback with only kubernetes-version specified
20788-
self.kwargs.update({"k8s_version": original_k8s_version})
20789-
rollback_k8s_only_cmd = (
20788+
# Test case 2: Rollback with only node-image-version specified
20789+
self.kwargs.update({"original_node_image_version": original_node_image_version})
20790+
rollback_node_image_only_cmd = (
2079020791
"aks nodepool rollback "
2079120792
"--resource-group={resource_group} "
2079220793
"--cluster-name={name} "
2079320794
"--name={node_pool_name} "
20794-
"--kubernetes-version={k8s_version}"
20795+
"--node-image-version={original_node_image_version}"
2079520796
)
20796-
rollback_k8s_result = self.cmd(
20797-
rollback_k8s_only_cmd,
20797+
rollback_node_image_result = self.cmd(
20798+
rollback_node_image_only_cmd,
2079820799
checks=[
2079920800
self.check("provisioningState", "Succeeded"),
2080020801
],
2080120802
).get_output_in_json()
2080220803

20803-
# Verify that only kubernetes version was rolled back
20804-
assert rollback_k8s_result["currentOrchestratorVersion"] == original_k8s_version
20804+
# Verify that node image version was rolled back
20805+
assert rollback_node_image_result["nodeImageVersion"] == original_node_image_version
2080520806

20806-
# Upgrade once more for testing both versions specified
20807+
# Upgrade again for testing both versions specified
2080720808
upgrade_cmd_3 = (
2080820809
"aks nodepool upgrade "
2080920810
"--resource-group={resource_group} "

0 commit comments

Comments
 (0)