From ed808cf8dcc8fc1728f9f8704f072afa934caeeb Mon Sep 17 00:00:00 2001 From: Jiashuo Li Date: Fri, 16 Oct 2020 10:27:36 +0800 Subject: [PATCH 1/6] wrap managed_by_tenants error --- src/azure-cli-core/azure/cli/core/_profile.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/azure-cli-core/azure/cli/core/_profile.py b/src/azure-cli-core/azure/cli/core/_profile.py index ca1281fbd72..6d9eee5e823 100644 --- a/src/azure-cli-core/azure/cli/core/_profile.py +++ b/src/azure-cli-core/azure/cli/core/_profile.py @@ -273,6 +273,16 @@ def _normalize_properties(self, user, subscriptions, is_service_principal, cert_ if hasattr(s, 'home_tenant_id'): subscription_dict[_HOME_TENANT_ID] = s.home_tenant_id if hasattr(s, 'managed_by_tenants'): + if s.managed_by_tenants is None: + # managedByTenants is missing from the response. This is a known service issue: + # https://github.com/Azure/azure-rest-api-specs/issues/9567 + # pylint: disable=line-too-long + from azure.cli.core.azclierror import UserFault + raise UserFault("Invalid profile is used for cloud '{cloud_name}'. " + "To configure the cloud profile, run `az cloud set --name {cloud_name} --profile `. " + "For more information about using Azure CLI with Azure Stack, see " + "https://docs.microsoft.com/en-us/azure/azure-stack/user/azure-stack-version-profiles-azurecli2#connect-to-azure-stack" + .format(cloud_name=self.cli_ctx.cloud.name)) subscription_dict[_MANAGED_BY_TENANTS] = [{_TENANT_ID: t.tenant_id} for t in s.managed_by_tenants] consolidated.append(subscription_dict) From e1a414597b3e6d592e53b4b144061bc869dc4c22 Mon Sep 17 00:00:00 2001 From: Jiashuo Li Date: Fri, 16 Oct 2020 11:14:05 +0800 Subject: [PATCH 2/6] add example --- src/azure-cli-core/azure/cli/core/_profile.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/azure-cli-core/azure/cli/core/_profile.py b/src/azure-cli-core/azure/cli/core/_profile.py index 6d9eee5e823..992a4efe2aa 100644 --- a/src/azure-cli-core/azure/cli/core/_profile.py +++ b/src/azure-cli-core/azure/cli/core/_profile.py @@ -279,7 +279,7 @@ def _normalize_properties(self, user, subscriptions, is_service_principal, cert_ # pylint: disable=line-too-long from azure.cli.core.azclierror import UserFault raise UserFault("Invalid profile is used for cloud '{cloud_name}'. " - "To configure the cloud profile, run `az cloud set --name {cloud_name} --profile `. " + "To configure the cloud profile, run `az cloud set --name {cloud_name} --profile (e.g. 2019-03-01-hybrid)`. " "For more information about using Azure CLI with Azure Stack, see " "https://docs.microsoft.com/en-us/azure/azure-stack/user/azure-stack-version-profiles-azurecli2#connect-to-azure-stack" .format(cloud_name=self.cli_ctx.cloud.name)) From 4952a9ae71a26412cd4f2b59437b3c3278e6168e Mon Sep 17 00:00:00 2001 From: Jiashuo Li Date: Fri, 23 Oct 2020 13:29:17 +0800 Subject: [PATCH 3/6] Update src/azure-cli-core/azure/cli/core/_profile.py --- src/azure-cli-core/azure/cli/core/_profile.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/azure-cli-core/azure/cli/core/_profile.py b/src/azure-cli-core/azure/cli/core/_profile.py index 992a4efe2aa..d4ce291d550 100644 --- a/src/azure-cli-core/azure/cli/core/_profile.py +++ b/src/azure-cli-core/azure/cli/core/_profile.py @@ -277,8 +277,8 @@ def _normalize_properties(self, user, subscriptions, is_service_principal, cert_ # managedByTenants is missing from the response. This is a known service issue: # https://github.com/Azure/azure-rest-api-specs/issues/9567 # pylint: disable=line-too-long - from azure.cli.core.azclierror import UserFault - raise UserFault("Invalid profile is used for cloud '{cloud_name}'. " + from azure.cli.core.azclierror import UnknownError + raise UnknownError("Invalid profile is used for cloud '{cloud_name}'. " "To configure the cloud profile, run `az cloud set --name {cloud_name} --profile (e.g. 2019-03-01-hybrid)`. " "For more information about using Azure CLI with Azure Stack, see " "https://docs.microsoft.com/en-us/azure/azure-stack/user/azure-stack-version-profiles-azurecli2#connect-to-azure-stack" From b729ef54786bcdbf3909a6e10d1f3d1b594bfec0 Mon Sep 17 00:00:00 2001 From: Jiashuo Li Date: Fri, 23 Oct 2020 13:29:40 +0800 Subject: [PATCH 4/6] Update src/azure-cli-core/azure/cli/core/_profile.py Co-authored-by: Feng Zhou <55177366+fengzhou-msft@users.noreply.github.com> --- src/azure-cli-core/azure/cli/core/_profile.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/azure-cli-core/azure/cli/core/_profile.py b/src/azure-cli-core/azure/cli/core/_profile.py index d4ce291d550..343638837ce 100644 --- a/src/azure-cli-core/azure/cli/core/_profile.py +++ b/src/azure-cli-core/azure/cli/core/_profile.py @@ -281,7 +281,7 @@ def _normalize_properties(self, user, subscriptions, is_service_principal, cert_ raise UnknownError("Invalid profile is used for cloud '{cloud_name}'. " "To configure the cloud profile, run `az cloud set --name {cloud_name} --profile (e.g. 2019-03-01-hybrid)`. " "For more information about using Azure CLI with Azure Stack, see " - "https://docs.microsoft.com/en-us/azure/azure-stack/user/azure-stack-version-profiles-azurecli2#connect-to-azure-stack" + "https://docs.microsoft.com/azure/azure-stack/user/azure-stack-version-profiles-azurecli2#connect-to-azure-stack" .format(cloud_name=self.cli_ctx.cloud.name)) subscription_dict[_MANAGED_BY_TENANTS] = [{_TENANT_ID: t.tenant_id} for t in s.managed_by_tenants] From 3145198d552a098b3f6e739582f58acf981e7b12 Mon Sep 17 00:00:00 2001 From: Jiashuo Li Date: Fri, 23 Oct 2020 14:29:39 +0800 Subject: [PATCH 5/6] Use CLIError --- src/azure-cli-core/azure/cli/core/_profile.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/azure-cli-core/azure/cli/core/_profile.py b/src/azure-cli-core/azure/cli/core/_profile.py index 343638837ce..906166f9b28 100644 --- a/src/azure-cli-core/azure/cli/core/_profile.py +++ b/src/azure-cli-core/azure/cli/core/_profile.py @@ -277,12 +277,11 @@ def _normalize_properties(self, user, subscriptions, is_service_principal, cert_ # managedByTenants is missing from the response. This is a known service issue: # https://github.com/Azure/azure-rest-api-specs/issues/9567 # pylint: disable=line-too-long - from azure.cli.core.azclierror import UnknownError - raise UnknownError("Invalid profile is used for cloud '{cloud_name}'. " - "To configure the cloud profile, run `az cloud set --name {cloud_name} --profile (e.g. 2019-03-01-hybrid)`. " - "For more information about using Azure CLI with Azure Stack, see " - "https://docs.microsoft.com/azure/azure-stack/user/azure-stack-version-profiles-azurecli2#connect-to-azure-stack" - .format(cloud_name=self.cli_ctx.cloud.name)) + raise CLIError("Invalid profile is used for cloud '{cloud_name}'. " + "To configure the cloud profile, run `az cloud set --name {cloud_name} --profile (e.g. 2019-03-01-hybrid)`. " + "For more information about using Azure CLI with Azure Stack, see " + "https://docs.microsoft.com/azure/azure-stack/user/azure-stack-version-profiles-azurecli2#connect-to-azure-stack" + .format(cloud_name=self.cli_ctx.cloud.name)) subscription_dict[_MANAGED_BY_TENANTS] = [{_TENANT_ID: t.tenant_id} for t in s.managed_by_tenants] consolidated.append(subscription_dict) From a15831f9df72591d13c48ffa595ead4128de7006 Mon Sep 17 00:00:00 2001 From: Jiashuo Li Date: Wed, 4 Nov 2020 10:52:55 +0800 Subject: [PATCH 6/6] Update link --- src/azure-cli-core/azure/cli/core/_profile.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/azure-cli-core/azure/cli/core/_profile.py b/src/azure-cli-core/azure/cli/core/_profile.py index c2499fe2c36..f543a432cf7 100644 --- a/src/azure-cli-core/azure/cli/core/_profile.py +++ b/src/azure-cli-core/azure/cli/core/_profile.py @@ -280,7 +280,7 @@ def _normalize_properties(self, user, subscriptions, is_service_principal, cert_ raise CLIError("Invalid profile is used for cloud '{cloud_name}'. " "To configure the cloud profile, run `az cloud set --name {cloud_name} --profile (e.g. 2019-03-01-hybrid)`. " "For more information about using Azure CLI with Azure Stack, see " - "https://docs.microsoft.com/azure/azure-stack/user/azure-stack-version-profiles-azurecli2#connect-to-azure-stack" + "https://docs.microsoft.com/azure-stack/user/azure-stack-version-profiles-azurecli2" .format(cloud_name=self.cli_ctx.cloud.name)) subscription_dict[_MANAGED_BY_TENANTS] = [{_TENANT_ID: t.tenant_id} for t in s.managed_by_tenants]