From 5e9506f713c4683d5fc58ff223498e46b656bff9 Mon Sep 17 00:00:00 2001 From: xiaofanzhou Date: Mon, 19 Jun 2023 12:48:06 +0800 Subject: [PATCH 1/3] add error code --- .../azext_serviceconnector_passwordless/_utils.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/serviceconnector-passwordless/azext_serviceconnector_passwordless/_utils.py b/src/serviceconnector-passwordless/azext_serviceconnector_passwordless/_utils.py index 137a783f7ad..1eba1a81085 100644 --- a/src/serviceconnector-passwordless/azext_serviceconnector_passwordless/_utils.py +++ b/src/serviceconnector-passwordless/azext_serviceconnector_passwordless/_utils.py @@ -3,6 +3,7 @@ # Licensed under the MIT License. See License.txt in the project root for license information. # -------------------------------------------------------------------------------------------- +import re from knack.prompting import prompt, prompt_y_n, NoTTYException from knack.log import get_logger from azure.cli.core import telemetry @@ -32,8 +33,13 @@ def run_cli_cmd(cmd, retry=0, interval=0, should_retry_func=None): try: return run_cli_cmd_base(cmd, retry, interval, should_retry_func) except CLIInternalError as e: + error_code = 'Unknown' + error_res = re.search( + '\(([a-zA-Z]+)\)', str(e)) + if error_res: + error_code = error_res.group(1) telemetry.set_exception( - e, "Cli-Command-Fail-" + cmd.split(" -")[0].strip()) + e, "Cli-Command-Fail-" + cmd.split(" -")[0].strip() + '-' + error_code) raise e From b01936fe8ff1dbaf92b696dba2cd8205c9db0c0b Mon Sep 17 00:00:00 2001 From: xiaofanzhou Date: Wed, 28 Jun 2023 11:11:44 +0800 Subject: [PATCH 2/3] remove az ad sp show for sql --- .../_credential_free.py | 34 +++++++++++++++---- 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/src/serviceconnector-passwordless/azext_serviceconnector_passwordless/_credential_free.py b/src/serviceconnector-passwordless/azext_serviceconnector_passwordless/_credential_free.py index b98bd100073..3df563c3f83 100644 --- a/src/serviceconnector-passwordless/azext_serviceconnector_passwordless/_credential_free.py +++ b/src/serviceconnector-passwordless/azext_serviceconnector_passwordless/_credential_free.py @@ -80,12 +80,15 @@ def enable_mi_for_db_linker(cmd, source_id, target_id, auth_info, client_type, c source_object_id = source_handler.get_identity_pid() target_handler.identity_object_id = source_object_id try: - identity_info = run_cli_cmd( - 'az ad sp show --id {}'.format(source_object_id), 15, 10) - target_handler.identity_client_id = identity_info.get( - 'appId') - target_handler.identity_name = identity_info.get( - 'displayName') + if target_type in [RESOURCE.Sql]: + target_handler.identity_name = source_handler.get_identity_name() + elif target_type in [RESOURCE.Postgres, RESOURCE.MysqlFlexible]: + identity_info = run_cli_cmd( + 'az ad sp show --id {}'.format(source_object_id), 15, 10) + target_handler.identity_client_id = identity_info.get( + 'appId') + target_handler.identity_name = identity_info.get( + 'displayName') except CLIInternalError as e: if 'AADSTS530003' in e.error_msg: logger.warning( @@ -867,6 +870,9 @@ def __init__(self, source_id, source_type: RESOURCE): def get_identity_pid(self): return + def get_identity_name(self): + return + def output_is_none(output): return not output.stdout @@ -878,6 +884,12 @@ def get_identity_pid(self): class SpringHandler(SourceHandler): + def get_identity_name(self): + segments = parse_resource_id(self.source_id) + spring = segments.get('name') + app = segments.get('child_name_1') + return '{}/apps/{}'.format(spring, app) + def get_identity_pid(self): segments = parse_resource_id(self.source_id) sub = segments.get('subscription') @@ -907,6 +919,11 @@ def get_identity_pid(self): class WebappHandler(SourceHandler): + def get_identity_name(self): + segments = parse_resource_id(self.source_id) + app_name = segments.get('name') + return app_name + def get_identity_pid(self): logger.warning('Checking if WebApp enables System Identity...') identity = run_cli_cmd( @@ -929,6 +946,11 @@ def get_identity_pid(self): class ContainerappHandler(SourceHandler): + def get_identity_name(self): + segments = parse_resource_id(self.source_id) + app_name = segments.get('name') + return app_name + def get_identity_pid(self): logger.warning('Checking if Container App enables System Identity...') identity = run_cli_cmd( From 87633c3661fdf955179bc7841ffef8fc7ae77942 Mon Sep 17 00:00:00 2001 From: xiaofanzhou Date: Wed, 28 Jun 2023 11:18:03 +0800 Subject: [PATCH 3/3] update version --- src/serviceconnector-passwordless/HISTORY.rst | 4 ++++ .../azext_serviceconnector_passwordless/config.py | 2 +- src/serviceconnector-passwordless/setup.py | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/serviceconnector-passwordless/HISTORY.rst b/src/serviceconnector-passwordless/HISTORY.rst index 57b670e6aa3..6b95046543a 100644 --- a/src/serviceconnector-passwordless/HISTORY.rst +++ b/src/serviceconnector-passwordless/HISTORY.rst @@ -2,6 +2,10 @@ Release History =============== +0.3.5 +++++++ +* Make some improvements. + 0.3.4 ++++++ * Make some improvements. diff --git a/src/serviceconnector-passwordless/azext_serviceconnector_passwordless/config.py b/src/serviceconnector-passwordless/azext_serviceconnector_passwordless/config.py index f7f860f087d..db46512aeb0 100644 --- a/src/serviceconnector-passwordless/azext_serviceconnector_passwordless/config.py +++ b/src/serviceconnector-passwordless/azext_serviceconnector_passwordless/config.py @@ -4,5 +4,5 @@ # -------------------------------------------------------------------------------------------- -VERSION = '0.3.4' +VERSION = '0.3.5' NAME = 'serviceconnector-passwordless' diff --git a/src/serviceconnector-passwordless/setup.py b/src/serviceconnector-passwordless/setup.py index 54073bafeac..7f61c0ff260 100644 --- a/src/serviceconnector-passwordless/setup.py +++ b/src/serviceconnector-passwordless/setup.py @@ -15,7 +15,7 @@ logger.warn("Wheel is not available, disabling bdist_wheel hook") -VERSION = '0.3.4' +VERSION = '0.3.5' try: from azext_serviceconnector_passwordless.config import VERSION except ImportError: