def _build_cloud(cli_ctx, cloud_name, cloud_config=None, cloud_args=None): from msrestazure.azure_cloud import _populate_from_metadata_endpoint, MetadataEndpointError if cloud_config: # Using JSON format so convert the keys to snake case for key in cloud_config: cloud_config[to_snake_case(key)] = cloud_config.pop(key) cloud_args = cloud_config c = Cloud(cloud_name) c.profile = cloud_args.get('profile', None) for arg in cloud_args: if arg.startswith('endpoint_') and cloud_args[arg] is not None: setattr(c.endpoints, arg.replace('endpoint_', ''), cloud_args[arg]) elif arg.startswith('suffix_') and cloud_args[arg] is not None: setattr(c.suffixes, arg.replace('suffix_', ''), cloud_args[arg]) arm_endpoint = cloud_args.get('endpoint_resource_manager', None) try: _populate_from_metadata_endpoint(c, arm_endpoint) except MetadataEndpointError as err: raise CLIError(err) required_endpoints = {'resource_manager': '--endpoint-resource-manager', 'active_directory': '--endpoint-active-directory', 'active_directory_resource_id': '--endpoint-active-directory-resource-id', 'active_directory_graph_resource_id': '--endpoint-active-directory-graph-resource-id'} missing_endpoints = [e_param for e_name, e_param in required_endpoints.items() if not c.endpoints.has_endpoint_set(e_name)] if missing_endpoints and not cloud_is_registered(cli_ctx, cloud_name): raise CLIError("The following endpoints are required for the CLI to function and were not specified on the " "command line, in the cloud config or could not be autodetected.\n" "Specify them on the command line or through the cloud config file:\n" "{}".format(', '.join(missing_endpoints))) return c
def _build_cloud(cli_ctx, cloud_name, cloud_config=None, cloud_args=None): from msrestazure.azure_cloud import _populate_from_metadata_endpoint, MetadataEndpointError if cloud_config: # Using JSON format so convert the keys to snake case for key in cloud_config: cloud_config[to_snake_case(key)] = cloud_config.pop(key) cloud_args = cloud_config c = Cloud(cloud_name) c.profile = cloud_args.get('profile', None) for arg in cloud_args: if arg.startswith('endpoint_') and cloud_args[arg] is not None: setattr(c.endpoints, arg.replace('endpoint_', ''), cloud_args[arg]) elif arg.startswith('suffix_') and cloud_args[arg] is not None: setattr(c.suffixes, arg.replace('suffix_', ''), cloud_args[arg]) arm_endpoint = cloud_args.get('endpoint_resource_manager', None) try: _populate_from_metadata_endpoint(c, arm_endpoint) except MetadataEndpointError as err: raise CLIError(err) required_endpoints = {'resource_manager': '--endpoint-resource-manager', 'active_directory': '--endpoint-active-directory', 'active_directory_resource_id': '--endpoint-active-directory-resource-id', 'active_directory_graph_resource_id': '--endpoint-active-directory-graph-resource-id'} missing_endpoints = [e_param for e_name, e_param in required_endpoints.items() if not c.endpoints.has_endpoint_set(e_name)] if missing_endpoints and not cloud_is_registered(cli_ctx, cloud_name): raise CLIError("The following endpoints are required for the CLI to function and were not specified on the " "command line, in the cloud config or could not be autodetected.\n" "Specify them on the command line or through the cloud config file:\n" "{}".format(', '.join(missing_endpoints))) return c
def test_cloud_is_registered(self): cli = DummyCli() self.assertTrue(cloud_is_registered(cli, AZURE_PUBLIC_CLOUD.name)) self.assertFalse(cloud_is_registered(cli, 'MyUnknownCloud'))
def test_cloud_is_registered(self): cli = TestCli() self.assertTrue(cloud_is_registered(cli, AZURE_PUBLIC_CLOUD.name)) self.assertFalse(cloud_is_registered(cli, 'MyUnknownCloud'))