From 62991e6f3e66e354e1bf90c0f2971c2ef04153ed Mon Sep 17 00:00:00 2001 From: Kieran Brantner-Magee Date: Tue, 22 Oct 2019 08:31:37 -0700 Subject: [PATCH 1/4] Attempt to bolster chained and defaultazurecredential error messages with slightly more detail, and spacing. --- .../azure-identity/azure/identity/_credentials/chained.py | 2 +- .../azure-identity/azure/identity/_credentials/default.py | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/sdk/identity/azure-identity/azure/identity/_credentials/chained.py b/sdk/identity/azure-identity/azure/identity/_credentials/chained.py index 8f3a3acd0efa..2f08b0182285 100644 --- a/sdk/identity/azure-identity/azure/identity/_credentials/chained.py +++ b/sdk/identity/azure-identity/azure/identity/_credentials/chained.py @@ -60,4 +60,4 @@ def _get_error_message(history): attempts.append("{}: {}".format(credential.__class__.__name__, error)) else: attempts.append(credential.__class__.__name__) - return "No valid token received. {}".format(". ".join(attempts)) + return "Chained credential request has failed, no valid token received.Attempts:\n{}".format("\n".join(attempts)) diff --git a/sdk/identity/azure-identity/azure/identity/_credentials/default.py b/sdk/identity/azure-identity/azure/identity/_credentials/default.py index c45ad78c0e3c..302c0a15736a 100644 --- a/sdk/identity/azure-identity/azure/identity/_credentials/default.py +++ b/sdk/identity/azure-identity/azure/identity/_credentials/default.py @@ -2,6 +2,8 @@ # Copyright (c) Microsoft Corporation. # Licensed under the MIT License. # ------------------------------------ +from azure.core.exceptions import ClientAuthenticationError + import os from .._constants import EnvironmentVariables @@ -42,3 +44,9 @@ def __init__(self, **kwargs): ) super(DefaultAzureCredential, self).__init__(*credentials) + + def get_token(self, *scopes, **kwargs): # pylint:disable=unused-argument + try: + return super(DefaultAzureCredential, self).get_token(*scopes, **kwargs) + except ClientAuthenticationError as e: + raise ClientAuthenticationError(message="{}\nPlease visit the python azure identity sdk docs on github to learn what options defaultAzureCredential supports".format(e.message)) \ No newline at end of file From 524b9c0a940ecbf49306f58c0677b9c6920fd8aa Mon Sep 17 00:00:00 2001 From: Kieran Brantner-Magee Date: Tue, 22 Oct 2019 15:16:29 -0700 Subject: [PATCH 2/4] Add aka link to identity docs for defaultazurecredential exceptions --- .../azure-identity/azure/identity/_credentials/default.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/identity/azure-identity/azure/identity/_credentials/default.py b/sdk/identity/azure-identity/azure/identity/_credentials/default.py index 302c0a15736a..7eba160abb9d 100644 --- a/sdk/identity/azure-identity/azure/identity/_credentials/default.py +++ b/sdk/identity/azure-identity/azure/identity/_credentials/default.py @@ -49,4 +49,4 @@ def get_token(self, *scopes, **kwargs): # pylint:disable=unused-argument try: return super(DefaultAzureCredential, self).get_token(*scopes, **kwargs) except ClientAuthenticationError as e: - raise ClientAuthenticationError(message="{}\nPlease visit the python azure identity sdk docs on github to learn what options defaultAzureCredential supports".format(e.message)) \ No newline at end of file + raise ClientAuthenticationError(message="{}\nPlease visit the Azure identity Python SDK docs at https://aka.ms/python-sdk-identity#defaultazurecredential to learn what options defaultAzureCredential supports".format(e.message)) \ No newline at end of file From 7911d34fc7e39d99d6908140c09a9054b83c62b1 Mon Sep 17 00:00:00 2001 From: Kieran Brantner-Magee Date: Tue, 22 Oct 2019 17:23:24 -0700 Subject: [PATCH 3/4] Fix lint failures, further nitpicks to capitalization, spacing, and verbage. --- .../azure/identity/_credentials/chained.py | 3 ++- .../azure/identity/_credentials/default.py | 10 +++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/sdk/identity/azure-identity/azure/identity/_credentials/chained.py b/sdk/identity/azure-identity/azure/identity/_credentials/chained.py index 2f08b0182285..679721435550 100644 --- a/sdk/identity/azure-identity/azure/identity/_credentials/chained.py +++ b/sdk/identity/azure-identity/azure/identity/_credentials/chained.py @@ -60,4 +60,5 @@ def _get_error_message(history): attempts.append("{}: {}".format(credential.__class__.__name__, error)) else: attempts.append(credential.__class__.__name__) - return "Chained credential request has failed, no valid token received.Attempts:\n{}".format("\n".join(attempts)) + return """Chained credential request has failed, no valid token received. +Attempted credentials:\n\t{}""".format("\n\t".join(attempts)) diff --git a/sdk/identity/azure-identity/azure/identity/_credentials/default.py b/sdk/identity/azure-identity/azure/identity/_credentials/default.py index 7eba160abb9d..2b26b5340f79 100644 --- a/sdk/identity/azure-identity/azure/identity/_credentials/default.py +++ b/sdk/identity/azure-identity/azure/identity/_credentials/default.py @@ -2,10 +2,10 @@ # Copyright (c) Microsoft Corporation. # Licensed under the MIT License. # ------------------------------------ -from azure.core.exceptions import ClientAuthenticationError - import os +from azure.core.exceptions import ClientAuthenticationError + from .._constants import EnvironmentVariables from .chained import ChainedTokenCredential from .environment import EnvironmentCredential @@ -49,4 +49,8 @@ def get_token(self, *scopes, **kwargs): # pylint:disable=unused-argument try: return super(DefaultAzureCredential, self).get_token(*scopes, **kwargs) except ClientAuthenticationError as e: - raise ClientAuthenticationError(message="{}\nPlease visit the Azure identity Python SDK docs at https://aka.ms/python-sdk-identity#defaultazurecredential to learn what options defaultAzureCredential supports".format(e.message)) \ No newline at end of file + raise ClientAuthenticationError(message=""" +{}\n\nPlease visit the Azure identity Python SDK docs at +https://aka.ms/python-sdk-identity#defaultazurecredential +to learn what options DefaultAzureCredential supports""" + .format(e.message)) From 7da2bd4d961ec6ced1aafe299858f8f71a96f04b Mon Sep 17 00:00:00 2001 From: Kieran Brantner-Magee Date: Wed, 23 Oct 2019 10:01:50 -0700 Subject: [PATCH 4/4] PR comments, tweaking error verbage and pylint modifiers. --- .../azure-identity/azure/identity/_credentials/chained.py | 2 +- .../azure-identity/azure/identity/_credentials/default.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/identity/azure-identity/azure/identity/_credentials/chained.py b/sdk/identity/azure-identity/azure/identity/_credentials/chained.py index 679721435550..63b1f8268f27 100644 --- a/sdk/identity/azure-identity/azure/identity/_credentials/chained.py +++ b/sdk/identity/azure-identity/azure/identity/_credentials/chained.py @@ -60,5 +60,5 @@ def _get_error_message(history): attempts.append("{}: {}".format(credential.__class__.__name__, error)) else: attempts.append(credential.__class__.__name__) - return """Chained credential request has failed, no valid token received. + return """No credential in this chain provided a token. Attempted credentials:\n\t{}""".format("\n\t".join(attempts)) diff --git a/sdk/identity/azure-identity/azure/identity/_credentials/default.py b/sdk/identity/azure-identity/azure/identity/_credentials/default.py index 2b26b5340f79..b34c1cbd2fed 100644 --- a/sdk/identity/azure-identity/azure/identity/_credentials/default.py +++ b/sdk/identity/azure-identity/azure/identity/_credentials/default.py @@ -45,7 +45,7 @@ def __init__(self, **kwargs): super(DefaultAzureCredential, self).__init__(*credentials) - def get_token(self, *scopes, **kwargs): # pylint:disable=unused-argument + def get_token(self, *scopes, **kwargs): try: return super(DefaultAzureCredential, self).get_token(*scopes, **kwargs) except ClientAuthenticationError as e: