Skip to content

Commit 044f84c

Browse files
authored
[vme] Update vme list table format (#8873)
* Update vme list table format * Wait for the bundle feature flag to fully propagate after enabling it
1 parent 89d2041 commit 044f84c

File tree

5 files changed

+37
-11
lines changed

5 files changed

+37
-11
lines changed

src/vme/HISTORY.rst

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,9 @@ Release History
99

1010
1.0.0b2
1111
++++++
12-
* Add new 'az vme list' command to list all version managed extensions.
12+
* Add new 'az vme list' command to list all version managed extensions.
13+
14+
1.0.0b3
15+
++++++
16+
* Update 'az vme list --output table' to show correct versions.
17+
* Wait for the bundle feature flag to fully propagate after enabling it.

src/vme/azext_vme/_format.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ def __get_table_row(result):
1414
return OrderedDict([
1515
('name', result['name']),
1616
('extensionType', result.get('properties', {}).get('extensionType', '')),
17-
('version', result.get('properties', {}).get('version', '')),
17+
('version', result.get('properties', {}).get('currentVersion', '')),
1818
('provisioningState', result.get('properties', {}).get('provisioningState', '')),
1919
('isSystemExtension', result.get('properties', {}).get('isSystemExtension', '')),
2020
('lastModifiedAt', result.get('systemData', {}).get('lastModifiedAt', '')),

src/vme/azext_vme/custom.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
from knack.log import get_logger
1010
import time
1111
from azure.cli.core.commands.client_factory import get_subscription_id
12-
from datetime import datetime
1312
from ._client_factory import cf_deployments, cf_resources
1413
from azure.core.exceptions import ResourceNotFoundError
1514

@@ -35,7 +34,8 @@ def install_vme(
3534

3635
utils.check_and_add_cli_extension("connectedk8s")
3736
utils.check_and_add_cli_extension("k8s-extension")
38-
utils.check_and_enable_bundle_feature_flag(cluster, resource_group_name, cluster_name, kube_config, kube_context)
37+
utils.check_and_enable_bundle_feature_flag(
38+
cmd, subscription_id, cluster, resource_group_name, cluster_name, kube_config, kube_context)
3939

4040
# Install the bundle extensions one by one
4141
for extension_type in include_extension_types:
@@ -73,7 +73,8 @@ def install_vme(
7373
print(f"Installed extension {extension_type} successfully.")
7474
print(result)
7575

76-
print("All extensions installed successfully.")
76+
if len(include_extension_types) > 1:
77+
print("All extensions installed successfully.")
7778

7879

7980
def uninstall_vme(
@@ -111,7 +112,8 @@ def uninstall_vme(
111112
"--yes"]
112113
utils.call_subprocess_raise_output(command)
113114
print(f"Uninstalled extension {extension_type} successfully.")
114-
print("All extensions uninstalled successfully.")
115+
if len(include_extension_types) > 1:
116+
print("All extensions uninstalled successfully.")
115117

116118

117119
def upgrade_vme(
@@ -136,7 +138,7 @@ def upgrade_vme(
136138

137139
utils.check_and_add_cli_extension("connectedk8s")
138140
utils.check_and_enable_bundle_feature_flag(
139-
cluster, resource_group_name, cluster_name, kube_config, kube_context)
141+
cmd, subscription_id, cluster, resource_group_name, cluster_name, kube_config, kube_context)
140142
deployment_name = (consts.ARC_UPDATE_PREFIX + cluster_name).lower()
141143
print(f"Checking arm template deployment '{deployment_name}' for '{cluster_resource_id}' "
142144
f"which has agent version '{agent_version}'")
@@ -149,7 +151,7 @@ def upgrade_vme(
149151
deployment = None
150152
while time.time() - start_time < wait_timeout:
151153
# Get current timestamp
152-
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
154+
timestamp = utils.get_utctimestring()
153155
try:
154156
deployment = client.get(resource_group_name, deployment_name)
155157
if (not deployment or not deployment.tags):

src/vme/azext_vme/utils.py

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
from knack.log import get_logger
1313
from azext_vme import consts
1414
import threading
15+
from ._client_factory import cf_deployments
1516

1617
logger = get_logger(__name__)
1718

@@ -136,7 +137,7 @@ def check_and_add_cli_extension(cli_extension_name):
136137

137138

138139
def check_and_enable_bundle_feature_flag(
139-
cluster, resource_group_name, cluster_name, kube_config=None, kube_context=None):
140+
cmd, subscription_id, cluster, resource_group_name, cluster_name, kube_config=None, kube_context=None):
140141
"""Enable the bundle feature flag for the given cluster if it's not already enabled."""
141142

142143
auto_upgrade = extract_auto_upgrade_value(cluster)
@@ -163,7 +164,21 @@ def check_and_enable_bundle_feature_flag(
163164
call_subprocess_raise_output(command)
164165

165166
# Wait for the feature flag to be enabled on the dp side.
166-
time.sleep(30)
167+
wait_timeout = 300
168+
start_time = time.time()
169+
deployment_name = (consts.ARC_UPDATE_PREFIX + cluster_name).lower()
170+
client = cf_deployments(cmd.cli_ctx, subscription_id)
171+
deployment = None
172+
while time.time() - start_time < wait_timeout:
173+
try:
174+
deployment = client.get(resource_group_name, deployment_name)
175+
break
176+
except ResourceNotFoundError:
177+
print(f"[{get_utctimestring()}] Waiting for the bundle feature flag to propagate...")
178+
time.sleep(5)
179+
180+
if (not deployment):
181+
raise CLIError("The bundle feature flag failed to propagate within the timeout period.")
167182
print("Enabled the bundle feature flag successfully.")
168183

169184

@@ -201,3 +216,7 @@ def handle_failure(resources, deployment, timestamp):
201216
)
202217

203218
raise CLIError(f"[{timestamp}] {consts.UPGRADE_FAILED_MSG + deployment.properties.error.message}")
219+
220+
221+
def get_utctimestring() -> str:
222+
return time.strftime("%Y-%m-%dT%H-%M-%SZ", time.gmtime())

src/vme/setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from setuptools import setup, find_packages
1111

1212
# HISTORY.rst entry.
13-
VERSION = '1.0.0b2'
13+
VERSION = '1.0.0b3'
1414

1515
# The full list of classifiers is available at
1616
# https://pypi.python.org/pypi?%3Aaction=list_classifiers

0 commit comments

Comments
 (0)