From 58f1c70001e13b53e96aaddcf7a0a11f94c18ef2 Mon Sep 17 00:00:00 2001 From: Jiashuo Li Date: Fri, 27 Dec 2019 10:52:31 +0800 Subject: [PATCH 1/5] az version show --- src/azure-cli-core/azure/cli/core/util.py | 13 +++++++++++++ src/azure-cli/HISTORY.rst | 4 ++++ .../azure/cli/command_modules/resource/_help.py | 5 +++++ .../azure/cli/command_modules/resource/commands.py | 3 +++ .../azure/cli/command_modules/resource/custom.py | 6 ++++++ 5 files changed, 31 insertions(+) diff --git a/src/azure-cli-core/azure/cli/core/util.py b/src/azure-cli-core/azure/cli/core/util.py index ae0c55d5ccf..9799fc59686 100644 --- a/src/azure-cli-core/azure/cli/core/util.py +++ b/src/azure-cli-core/azure/cli/core/util.py @@ -204,6 +204,19 @@ def _get_version_string(name, version_dict): return version_string, updates_available +def get_az_version_json(): + from azure.cli.core.extension import get_extensions + versions = {'extensions': {}} + + for dist in get_installed_cli_distributions(): + versions[dist.key] = dist.version + extensions = get_extensions() + if extensions: + for ext in extensions: + versions['extensions'][ext.name] = ext.version or 'Unknown' + return versions + + def get_json_object(json_string): """ Loads a JSON string as an object and converts all keys to snake case """ diff --git a/src/azure-cli/HISTORY.rst b/src/azure-cli/HISTORY.rst index 7406bbd93e9..577214f1bde 100644 --- a/src/azure-cli/HISTORY.rst +++ b/src/azure-cli/HISTORY.rst @@ -25,6 +25,10 @@ Release History * Fix `vm create` failure in Azure Stack profile. * vm monitor metrics tail/list-definitions: support query metric and list definitions for a vm. +**Misc.** + +* Add preview command `az version show` to show the versions of Azure CLI modules and extensions in JSON format + 2.0.78 ++++++ diff --git a/src/azure-cli/azure/cli/command_modules/resource/_help.py b/src/azure-cli/azure/cli/command_modules/resource/_help.py index 1f9be32d2b4..b3157f7b2a4 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/_help.py +++ b/src/azure-cli/azure/cli/command_modules/resource/_help.py @@ -1303,6 +1303,11 @@ az rest --method put --uri https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses/{publicIpAddressName}?api-version=2019-09-01 --body @body.json """ +helps['version show'] = """ +type: command +short-summary: Show the versions of Azure CLI modules and extensions in JSON format +""" + helps['tag'] = """ type: group short-summary: Manage resource tags. diff --git a/src/azure-cli/azure/cli/command_modules/resource/commands.py b/src/azure-cli/azure/cli/command_modules/resource/commands.py index 7df4df4693b..34d97cc90b8 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/commands.py +++ b/src/azure-cli/azure/cli/command_modules/resource/commands.py @@ -318,3 +318,6 @@ def load_command_table(self, _): with self.command_group('') as g: g.custom_command('rest', 'rest_call') + + with self.command_group('version') as g: + g.custom_command('show', 'show_version', is_preview=True) diff --git a/src/azure-cli/azure/cli/command_modules/resource/custom.py b/src/azure-cli/azure/cli/command_modules/resource/custom.py index d0d39ab2dbb..f458c3811b6 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/custom.py +++ b/src/azure-cli/azure/cli/command_modules/resource/custom.py @@ -2025,6 +2025,12 @@ def rest_call(cmd, method, uri, headers=None, uri_parameters=None, print(r.text) +def show_version(cmd): + from azure.cli.core.util import get_az_version_json + versions = get_az_version_json() + return versions + + class _ResourceUtils(object): # pylint: disable=too-many-instance-attributes def __init__(self, cli_ctx, resource_group_name=None, resource_provider_namespace=None, From 56acc3eb21a696a73367a078f8e5b273de027a27 Mon Sep 17 00:00:00 2001 From: Jiashuo Li Date: Fri, 27 Dec 2019 12:58:24 +0800 Subject: [PATCH 2/5] fix pylint --- .../azure/cli/command_modules/resource/_help.py | 11 ++++++----- .../azure/cli/command_modules/resource/commands.py | 4 ++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/azure-cli/azure/cli/command_modules/resource/_help.py b/src/azure-cli/azure/cli/command_modules/resource/_help.py index b3157f7b2a4..f1e645eac9a 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/_help.py +++ b/src/azure-cli/azure/cli/command_modules/resource/_help.py @@ -1303,12 +1303,13 @@ az rest --method put --uri https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses/{publicIpAddressName}?api-version=2019-09-01 --body @body.json """ -helps['version show'] = """ -type: command -short-summary: Show the versions of Azure CLI modules and extensions in JSON format -""" - helps['tag'] = """ type: group short-summary: Manage resource tags. """ + +helps['version'] = """ +type: command +short-summary: Show the versions of Azure CLI modules and extensions in JSON format +""" + diff --git a/src/azure-cli/azure/cli/command_modules/resource/commands.py b/src/azure-cli/azure/cli/command_modules/resource/commands.py index 34d97cc90b8..5d68342799a 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/commands.py +++ b/src/azure-cli/azure/cli/command_modules/resource/commands.py @@ -319,5 +319,5 @@ def load_command_table(self, _): with self.command_group('') as g: g.custom_command('rest', 'rest_call') - with self.command_group('version') as g: - g.custom_command('show', 'show_version', is_preview=True) + with self.command_group('') as g: + g.custom_command('version', 'show_version', is_preview=True) From 396481c0fb412af2a6fd2f224d9b58fbc9c5e162 Mon Sep 17 00:00:00 2001 From: Jiashuo Li Date: Fri, 27 Dec 2019 20:59:53 +0800 Subject: [PATCH 3/5] fix pylint --- src/azure-cli/azure/cli/command_modules/resource/_help.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/azure-cli/azure/cli/command_modules/resource/_help.py b/src/azure-cli/azure/cli/command_modules/resource/_help.py index f1e645eac9a..ba7f1d70e15 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/_help.py +++ b/src/azure-cli/azure/cli/command_modules/resource/_help.py @@ -1312,4 +1312,3 @@ type: command short-summary: Show the versions of Azure CLI modules and extensions in JSON format """ - From a013666ff0058311db13c74fba9a7737a0303a90 Mon Sep 17 00:00:00 2001 From: Jiashuo Li Date: Thu, 2 Jan 2020 11:38:42 +0800 Subject: [PATCH 4/5] update help --- src/azure-cli/HISTORY.rst | 2 +- src/azure-cli/azure/cli/command_modules/resource/_help.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/azure-cli/HISTORY.rst b/src/azure-cli/HISTORY.rst index 8596cfc2ac8..a474895e03b 100644 --- a/src/azure-cli/HISTORY.rst +++ b/src/azure-cli/HISTORY.rst @@ -33,7 +33,7 @@ Release History **Misc.** -* Add preview command `az version show` to show the versions of Azure CLI modules and extensions in JSON format +* Add preview command `az version show` to show the versions of Azure CLI modules and extensions in JSON format by default or format configured by --output **Storage** diff --git a/src/azure-cli/azure/cli/command_modules/resource/_help.py b/src/azure-cli/azure/cli/command_modules/resource/_help.py index ba7f1d70e15..a3aea38f6f6 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/_help.py +++ b/src/azure-cli/azure/cli/command_modules/resource/_help.py @@ -1310,5 +1310,5 @@ helps['version'] = """ type: command -short-summary: Show the versions of Azure CLI modules and extensions in JSON format +short-summary: Show the versions of Azure CLI modules and extensions in JSON format by default or format configured by --output """ From ec008c1babc12041eaf6a777be31b58a5266672b Mon Sep 17 00:00:00 2001 From: Jiashuo Li Date: Thu, 2 Jan 2020 17:50:15 +0800 Subject: [PATCH 5/5] add test --- .../resource/tests/latest/test_version.py | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/azure-cli/azure/cli/command_modules/resource/tests/latest/test_version.py diff --git a/src/azure-cli/azure/cli/command_modules/resource/tests/latest/test_version.py b/src/azure-cli/azure/cli/command_modules/resource/tests/latest/test_version.py new file mode 100644 index 00000000000..cade56c37f7 --- /dev/null +++ b/src/azure-cli/azure/cli/command_modules/resource/tests/latest/test_version.py @@ -0,0 +1,27 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- + +import unittest +from typing import Dict + +from azure.cli.testsdk import ScenarioTest + + +class VersionTest(ScenarioTest): + + def test_version(self): + output = self.cmd('az version').get_output_in_json() + self.assertIn('azure-cli', output) + self.assertIn('azure-cli-command-modules-nspkg', output) + self.assertIn('azure-cli-dev-tools', output) + self.assertIn('azure-cli-nspkg', output) + self.assertIn('azure-cli-telemetry', output) + self.assertIn('azure-cli-testsdk', output) + self.assertIn('extensions', output) + self.assertIsInstance(output['extensions'], Dict) + + +if __name__ == '__main__': + unittest.main()