def _resolve_endpoint(self, request): if self._region_id: aliyunsdkcore.utils.validation.validate_pattern( self._region_id, 'region_id', '^[a-zA-Z0-9_-]+$' ) if request.product_suffix: aliyunsdkcore.utils.validation.validate_pattern( request.product_suffix, 'suffix', '^[a-zA-Z0-9_-]+$' ) if request.request_network: aliyunsdkcore.utils.validation.validate_pattern( request.request_network, 'network', '^[a-zA-Z0-9_-]+$' ) resolve_request = ResolveEndpointRequest( self._region_id, request.get_product(), request.get_location_service_code(), request.get_location_endpoint_type(), ) resolve_request.request_network = request.request_network resolve_request.product_suffix = request.product_suffix resolve_request.endpoint_map = request.endpoint_map resolve_request.endpoint_regional = request.endpoint_regional return self._endpoint_resolver.resolve(resolve_request)
def test_resolver_network_special_endpoint(self): resolver = EndpointResolverRules(None) endpoint_data = EndpointData() resolver.endpoint_map = endpoint_data.endpoint_map resolver.endpoint_regional = endpoint_data.endpoint_regional request = ResolveEndpointRequest("foo", "test", "", "") request.request_network = "vpc" endpoint = resolver.resolve(request) self.assertEqual("test-vpc.foo.aliyuncs.com", endpoint)
def resolve(self, region_id, product_code, location_service_code=None, endpoint_type=None, request=None): resolve_request = ResolveEndpointRequest(region_id, product_code, location_service_code, endpoint_type) if request: resolve_request.request_network = request.request_network resolve_request.product_suffix = request.product_suffix resolve_request.endpoint_map = request.endpoint_map resolve_request.endpoint_regional = request.endpoint_regional return self._endpoint_resolver.resolve(resolve_request)
def _resolve_endpoint(self, request): resolve_request = ResolveEndpointRequest( self._region_id, request.get_product(), request.get_location_service_code(), request.get_location_endpoint_type(), ) resolve_request.request_network = request.request_network resolve_request.product_suffix = request.product_suffix resolve_request.endpoint_map = request.endpoint_map resolve_request.endpoint_regional = request.endpoint_regional return self._endpoint_resolver.resolve(resolve_request)
def test_resolver(self): user = UserCustomizedEndpointResolver() chain = [ user ] resolver = ChainedEndpointResolver(chain) # can not be resolved request = ResolveEndpointRequest("cn-huhehaote", "ecs", "", "") with self.assertRaises(ClientException) as ex: resolver.resolve(request) self.assertEqual(ex.exception.error_code, "SDK.EndpointResolvingError") self.assertEqual(ex.exception.message, "No endpoint for product 'ecs'.\n" "Please check the product code, or set an endpoint for your request " "explicitly.\n" "See https://www.alibabacloud.com/help/doc-detail/92074.htm\n") user.put_endpoint_entry("cn-huhehaote", "ecs", "my-endpoint-for-cnhuhehaote-ecs") # can not be resolved with cn-hangzhou request = ResolveEndpointRequest("cn-hangzhou", "ecs", "", "") with self.assertRaises(ClientException) as ex: resolver.resolve(request) self.assertEqual(ex.exception.error_code, "SDK.EndpointResolvingError") self.assertEqual( ex.exception.message, "No endpoint in the region 'cn-hangzhou' for product 'ecs'.\n" "You can set an endpoint for your request explicitly.\n" "See https://www.alibabacloud.com/help/doc-detail/92074.htm\n" ) # cn-hangzhou and ecs is valid user.put_endpoint_entry("cn-hangzhou", "rds", "my-endpoint-for-cn-hangzhou-rds") with self.assertRaises(ClientException) as ex: resolver.resolve(request) self.assertEqual(ex.exception.error_code, "SDK.EndpointResolvingError") self.assertEqual( ex.exception.message, "No endpoint in the region 'cn-hangzhou' for product 'ecs'.\n" "You can set an endpoint for your request explicitly.\n" "See https://www.alibabacloud.com/help/doc-detail/92074.htm\n") # can be resolved request = ResolveEndpointRequest("cn-huhehaote", "ecs", "", "") self.assertEqual(resolver.resolve(request), "my-endpoint-for-cnhuhehaote-ecs") chain = [ LocalConfigRegionalEndpointResolver(), user ] resolver = ChainedEndpointResolver(chain) request.request_network = 'inner' endpoint = resolver.resolve(request) self.assertEqual('my-endpoint-for-cnhuhehaote-ecs', endpoint)