diff --git a/src/azure-cli-core/azure/cli/core/cloud.py b/src/azure-cli-core/azure/cli/core/cloud.py index ac0d909bd16..3d332b6b832 100644 --- a/src/azure-cli-core/azure/cli/core/cloud.py +++ b/src/azure-cli-core/azure/cli/core/cloud.py @@ -246,7 +246,7 @@ def _add_starting_dot(suffix): def _get_arm_endpoint(arm_dict, is_suffix=False): def _get_processed_arm_endpoint(name, add_dot=False, fallback_value=None): if is_suffix: - return (_add_starting_dot(arm_dict['suffixes'][name]) if add_dot else arm_dict['suffixes'][name]) if name in arm_dict['suffixes'] else fallback_value + return (_add_starting_dot(arm_dict['suffixes'][name]) if add_dot else arm_dict['suffixes'][name]) if name in arm_dict.get('suffixes', {}) else fallback_value return arm_dict[name] if name in arm_dict else fallback_value return _get_processed_arm_endpoint diff --git a/src/azure-cli/azure/cli/command_modules/cloud/custom.py b/src/azure-cli/azure/cli/command_modules/cloud/custom.py index 86f699a0bae..4a62b29e8bb 100644 --- a/src/azure-cli/azure/cli/command_modules/cloud/custom.py +++ b/src/azure-cli/azure/cli/command_modules/cloud/custom.py @@ -47,7 +47,12 @@ def _populate_from_metadata_endpoint(arm_endpoint, session=None): response = session.get(metadata_endpoint) if response.status_code == 200: metadata = response.json() - return _arm_to_cli_mapper(metadata) + if isinstance(metadata, dict) and metadata: + return _arm_to_cli_mapper(metadata) + if isinstance(metadata, list) and metadata: + return _arm_to_cli_mapper(metadata[0]) + msg = 'Response body does not contain valid json. Response content: {}'.format(str(metadata)) + raise CLIError(error_msg_fmt.format(msg)) msg = 'Server returned status code {} for {}'.format(response.status_code, metadata_endpoint) raise CLIError(error_msg_fmt.format(msg)) except (requests.exceptions.ConnectionError, requests.exceptions.HTTPError) as err: