From be9e57e1427550bad74bc3655c10d0283c634f67 Mon Sep 17 00:00:00 2001 From: evelyn-ys Date: Thu, 20 May 2021 17:57:05 +0800 Subject: [PATCH 1/6] keyvault data plane cross tenant --- src/azure-cli-core/azure/cli/core/commands/__init__.py | 1 + .../azure/cli/command_modules/keyvault/_client_factory.py | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/azure-cli-core/azure/cli/core/commands/__init__.py b/src/azure-cli-core/azure/cli/core/commands/__init__.py index 196a1fe05cf..b98462131ff 100644 --- a/src/azure-cli-core/azure/cli/core/commands/__init__.py +++ b/src/azure-cli-core/azure/cli/core/commands/__init__.py @@ -641,6 +641,7 @@ def execute(self, args): if hasattr(expanded_arg, '_subscription'): cmd_copy.cli_ctx.data['subscription_id'] = expanded_arg._subscription # pylint: disable=protected-access + self.cli_ctx.data['subscription_id'] = expanded_arg._subscription # pylint: disable=protected-access self._validation(expanded_arg) jobs.append((expanded_arg, cmd_copy)) diff --git a/src/azure-cli/azure/cli/command_modules/keyvault/_client_factory.py b/src/azure-cli/azure/cli/command_modules/keyvault/_client_factory.py index fc6ef903709..e80f4e7230a 100644 --- a/src/azure-cli/azure/cli/command_modules/keyvault/_client_factory.py +++ b/src/azure-cli/azure/cli/command_modules/keyvault/_client_factory.py @@ -134,7 +134,8 @@ def keyvault_data_plane_factory(cli_ctx, _): def get_token(server, resource, scope): # pylint: disable=unused-argument import adal try: - return Profile(cli_ctx=cli_ctx).get_raw_token(resource)[0] + return Profile(cli_ctx=cli_ctx).get_raw_token(resource=resource, + subscription=cli_ctx.data.get('subscription_id'))[0] except adal.AdalError as err: # pylint: disable=no-member if (hasattr(err, 'error_response') and From 686d7403eb0a6e205c7ca95bb9a7e57454188e17 Mon Sep 17 00:00:00 2001 From: evelyn-ys Date: Fri, 21 May 2021 10:52:50 +0800 Subject: [PATCH 2/6] all data plane --- .../azure/cli/command_modules/keyvault/_client_factory.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/azure-cli/azure/cli/command_modules/keyvault/_client_factory.py b/src/azure-cli/azure/cli/command_modules/keyvault/_client_factory.py index e80f4e7230a..5961947e20a 100644 --- a/src/azure-cli/azure/cli/command_modules/keyvault/_client_factory.py +++ b/src/azure-cli/azure/cli/command_modules/keyvault/_client_factory.py @@ -171,7 +171,8 @@ def keyvault_private_data_plane_factory_v7_2_preview(cli_ctx, _): def get_token(server, resource, scope): # pylint: disable=unused-argument import adal try: - return Profile(cli_ctx=cli_ctx).get_raw_token(resource)[0] + return Profile(cli_ctx=cli_ctx).get_raw_token(resource=resource, + subscription=cli_ctx.data.get('subscription_id'))[0] except adal.AdalError as err: # pylint: disable=no-member if (hasattr(err, 'error_response') and From 558b9e7b6b2bfb0b8547a9a0292c2c3df6de2095 Mon Sep 17 00:00:00 2001 From: evelyn-ys Date: Mon, 24 May 2021 14:22:42 +0800 Subject: [PATCH 3/6] cli_ctx for client factory --- src/azure-cli-core/azure/cli/core/commands/__init__.py | 1 - .../azure/cli/command_modules/keyvault/_command_type.py | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/azure-cli-core/azure/cli/core/commands/__init__.py b/src/azure-cli-core/azure/cli/core/commands/__init__.py index b98462131ff..196a1fe05cf 100644 --- a/src/azure-cli-core/azure/cli/core/commands/__init__.py +++ b/src/azure-cli-core/azure/cli/core/commands/__init__.py @@ -641,7 +641,6 @@ def execute(self, args): if hasattr(expanded_arg, '_subscription'): cmd_copy.cli_ctx.data['subscription_id'] = expanded_arg._subscription # pylint: disable=protected-access - self.cli_ctx.data['subscription_id'] = expanded_arg._subscription # pylint: disable=protected-access self._validation(expanded_arg) jobs.append((expanded_arg, cmd_copy)) diff --git a/src/azure-cli/azure/cli/command_modules/keyvault/_command_type.py b/src/azure-cli/azure/cli/command_modules/keyvault/_command_type.py index ea7c766cc46..6cca849b733 100644 --- a/src/azure-cli/azure/cli/command_modules/keyvault/_command_type.py +++ b/src/azure-cli/azure/cli/command_modules/keyvault/_command_type.py @@ -97,7 +97,7 @@ def keyvault_command_handler(command_args): client_arg_name = resolve_client_arg_name(operations_tmpl.format(method_name), kwargs) if client_arg_name in op_args: - client = client_factory(self.command_loader.cli_ctx, command_args) + client = client_factory(command_args['cmd'].cli_ctx, command_args) command_args[client_arg_name] = client if 'cmd' not in op_args: command_args.pop('cmd') From 6fc07814cbbccf906a1185b2bbedc0c02d1841ef Mon Sep 17 00:00:00 2001 From: evelyn-ys Date: Tue, 25 May 2021 14:37:09 +0800 Subject: [PATCH 4/6] other modules --- .../azure/cli/command_modules/role/custom.py | 10 ++-------- .../azure/cli/command_modules/servicefabric/custom.py | 10 ++-------- .../azure/cli/command_modules/vm/_vm_utils.py | 11 ++--------- 3 files changed, 6 insertions(+), 25 deletions(-) diff --git a/src/azure-cli/azure/cli/command_modules/role/custom.py b/src/azure-cli/azure/cli/command_modules/role/custom.py index 4ed64c3f58c..be13c602671 100644 --- a/src/azure-cli/azure/cli/command_modules/role/custom.py +++ b/src/azure-cli/azure/cli/command_modules/role/custom.py @@ -1538,14 +1538,8 @@ def _get_signed_in_user_object_id(graph_client): def _get_keyvault_client(cli_ctx): - from azure.cli.core._profile import Profile - from azure.keyvault import KeyVaultAuthentication, KeyVaultClient - version = str(get_api_version(cli_ctx, ResourceType.DATA_KEYVAULT)) - - def _get_token(server, resource, scope): # pylint: disable=unused-argument - return Profile(cli_ctx=cli_ctx).get_raw_token(resource)[0] - - return KeyVaultClient(KeyVaultAuthentication(_get_token), api_version=version) + from azure.cli.command_modules.keyvault._client_factory import keyvault_data_plane_factory + return keyvault_data_plane_factory(cli_ctx, None) def _create_self_signed_cert(start_date, end_date): # pylint: disable=too-many-locals diff --git a/src/azure-cli/azure/cli/command_modules/servicefabric/custom.py b/src/azure-cli/azure/cli/command_modules/servicefabric/custom.py index 32549f68ad5..f9445c368cb 100644 --- a/src/azure-cli/azure/cli/command_modules/servicefabric/custom.py +++ b/src/azure-cli/azure/cli/command_modules/servicefabric/custom.py @@ -1598,14 +1598,8 @@ def _create_self_signed_key_vault_certificate(cli_ctx, vault_base_url, certifica def _get_keyVault_not_arm_client(cli_ctx): - from azure.cli.core._profile import Profile - version = str(get_api_version(cli_ctx, ResourceType.DATA_KEYVAULT)) - - def get_token(server, resource, scope): # pylint: disable=unused-argument - return Profile(cli_ctx=cli_ctx).get_raw_token(resource)[0] - - client = KeyVaultClient(KeyVaultAuthentication(get_token), api_version=version) - return client + from azure.cli.command_modules.keyvault._client_factory import keyvault_data_plane_factory + return keyvault_data_plane_factory(cli_ctx, None) def _create_keyvault(cmd, diff --git a/src/azure-cli/azure/cli/command_modules/vm/_vm_utils.py b/src/azure-cli/azure/cli/command_modules/vm/_vm_utils.py index 28085ae0a05..967a1175834 100644 --- a/src/azure-cli/azure/cli/command_modules/vm/_vm_utils.py +++ b/src/azure-cli/azure/cli/command_modules/vm/_vm_utils.py @@ -101,15 +101,8 @@ def check_existence(cli_ctx, value, resource_group, provider_namespace, resource def create_keyvault_data_plane_client(cli_ctx): - from azure.cli.core._profile import Profile - from azure.cli.core.profiles import get_api_version, ResourceType - version = str(get_api_version(cli_ctx, ResourceType.DATA_KEYVAULT)) - - def get_token(server, resource, scope): # pylint: disable=unused-argument - return Profile(cli_ctx=cli_ctx).get_raw_token(resource)[0] - - from azure.keyvault import KeyVaultAuthentication, KeyVaultClient - return KeyVaultClient(KeyVaultAuthentication(get_token), api_version=version) + from azure.cli.command_modules.keyvault._client_factory import keyvault_data_plane_factory + return keyvault_data_plane_factory(cli_ctx, None) def get_key_vault_base_url(cli_ctx, vault_name): From 4d554c4b61e09f97e00876bf450b213d268c8556 Mon Sep 17 00:00:00 2001 From: evelyn-ys Date: Tue, 25 May 2021 14:52:57 +0800 Subject: [PATCH 5/6] remove unused import --- src/azure-cli/azure/cli/command_modules/role/custom.py | 2 +- .../azure/cli/command_modules/servicefabric/custom.py | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/azure-cli/azure/cli/command_modules/role/custom.py b/src/azure-cli/azure/cli/command_modules/role/custom.py index be13c602671..aaa807405e8 100644 --- a/src/azure-cli/azure/cli/command_modules/role/custom.py +++ b/src/azure-cli/azure/cli/command_modules/role/custom.py @@ -19,7 +19,7 @@ from knack.log import get_logger from knack.util import CLIError, todict -from azure.cli.core.profiles import ResourceType, get_api_version +from azure.cli.core.profiles import ResourceType from azure.graphrbac.models import GraphErrorException from azure.cli.core.util import get_file_json, shell_safe_json_parse, is_guid diff --git a/src/azure-cli/azure/cli/command_modules/servicefabric/custom.py b/src/azure-cli/azure/cli/command_modules/servicefabric/custom.py index f9445c368cb..8a6bdf2be7b 100644 --- a/src/azure-cli/azure/cli/command_modules/servicefabric/custom.py +++ b/src/azure-cli/azure/cli/command_modules/servicefabric/custom.py @@ -20,8 +20,7 @@ from azure.cli.core.util import CLIError, get_file_json, b64_to_hex, sdk_no_wait from azure.cli.core.commands import LongRunningOperation from azure.graphrbac import GraphRbacManagementClient -from azure.cli.core.profiles import ResourceType, get_sdk, get_api_version -from azure.keyvault import KeyVaultAuthentication, KeyVaultClient +from azure.cli.core.profiles import ResourceType, get_sdk from azure.cli.command_modules.servicefabric._arm_deployment_utils import validate_and_deploy_arm_template from azure.cli.command_modules.servicefabric._sf_utils import _get_resource_group_by_name, _create_resource_group_name From f862d046ff807fae8ffbe901c7dbd25ba918eaca Mon Sep 17 00:00:00 2001 From: evelyn-ys Date: Tue, 25 May 2021 16:36:36 +0800 Subject: [PATCH 6/6] omit extra `None` --- .../azure/cli/command_modules/appconfig/_kv_helpers.py | 2 +- .../azure/cli/command_modules/keyvault/_client_factory.py | 2 +- src/azure-cli/azure/cli/command_modules/role/custom.py | 2 +- src/azure-cli/azure/cli/command_modules/servicefabric/custom.py | 2 +- src/azure-cli/azure/cli/command_modules/vm/_vm_utils.py | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/azure-cli/azure/cli/command_modules/appconfig/_kv_helpers.py b/src/azure-cli/azure/cli/command_modules/appconfig/_kv_helpers.py index cecc6294596..a119e3bd2ef 100644 --- a/src/azure-cli/azure/cli/command_modules/appconfig/_kv_helpers.py +++ b/src/azure-cli/azure/cli/command_modules/appconfig/_kv_helpers.py @@ -317,7 +317,7 @@ def __read_kv_from_config_store(azconfig_client, if cli_ctx: from azure.cli.command_modules.keyvault._client_factory import keyvault_data_plane_factory - keyvault_client = keyvault_data_plane_factory(cli_ctx, None) + keyvault_client = keyvault_data_plane_factory(cli_ctx) else: keyvault_client = None diff --git a/src/azure-cli/azure/cli/command_modules/keyvault/_client_factory.py b/src/azure-cli/azure/cli/command_modules/keyvault/_client_factory.py index 5961947e20a..db9e435430e 100644 --- a/src/azure-cli/azure/cli/command_modules/keyvault/_client_factory.py +++ b/src/azure-cli/azure/cli/command_modules/keyvault/_client_factory.py @@ -125,7 +125,7 @@ def _keyvault_mgmt_client_factory(cli_ctx, _): return _keyvault_mgmt_client_factory -def keyvault_data_plane_factory(cli_ctx, _): +def keyvault_data_plane_factory(cli_ctx, *_): from azure.keyvault import KeyVaultAuthentication, KeyVaultClient from azure.cli.core.util import should_disable_connection_verify diff --git a/src/azure-cli/azure/cli/command_modules/role/custom.py b/src/azure-cli/azure/cli/command_modules/role/custom.py index aaa807405e8..637ee4998c4 100644 --- a/src/azure-cli/azure/cli/command_modules/role/custom.py +++ b/src/azure-cli/azure/cli/command_modules/role/custom.py @@ -1539,7 +1539,7 @@ def _get_signed_in_user_object_id(graph_client): def _get_keyvault_client(cli_ctx): from azure.cli.command_modules.keyvault._client_factory import keyvault_data_plane_factory - return keyvault_data_plane_factory(cli_ctx, None) + return keyvault_data_plane_factory(cli_ctx) def _create_self_signed_cert(start_date, end_date): # pylint: disable=too-many-locals diff --git a/src/azure-cli/azure/cli/command_modules/servicefabric/custom.py b/src/azure-cli/azure/cli/command_modules/servicefabric/custom.py index 8a6bdf2be7b..189655eac20 100644 --- a/src/azure-cli/azure/cli/command_modules/servicefabric/custom.py +++ b/src/azure-cli/azure/cli/command_modules/servicefabric/custom.py @@ -1598,7 +1598,7 @@ def _create_self_signed_key_vault_certificate(cli_ctx, vault_base_url, certifica def _get_keyVault_not_arm_client(cli_ctx): from azure.cli.command_modules.keyvault._client_factory import keyvault_data_plane_factory - return keyvault_data_plane_factory(cli_ctx, None) + return keyvault_data_plane_factory(cli_ctx) def _create_keyvault(cmd, diff --git a/src/azure-cli/azure/cli/command_modules/vm/_vm_utils.py b/src/azure-cli/azure/cli/command_modules/vm/_vm_utils.py index 967a1175834..14a85542397 100644 --- a/src/azure-cli/azure/cli/command_modules/vm/_vm_utils.py +++ b/src/azure-cli/azure/cli/command_modules/vm/_vm_utils.py @@ -102,7 +102,7 @@ def check_existence(cli_ctx, value, resource_group, provider_namespace, resource def create_keyvault_data_plane_client(cli_ctx): from azure.cli.command_modules.keyvault._client_factory import keyvault_data_plane_factory - return keyvault_data_plane_factory(cli_ctx, None) + return keyvault_data_plane_factory(cli_ctx) def get_key_vault_base_url(cli_ctx, vault_name):