浏览代码

Add GetName for Resovler

Jackson Tian 7 年之前
父节点
当前提交
5cccafa8ba

+ 5 - 0
sdk/endpoints/local_global_resolver.go

@@ -23,6 +23,11 @@ import (
 type LocalGlobalResolver struct {
 }
 
+func (resolver *LocalGlobalResolver) GetName() (name string) {
+  name = "local global resolver"
+  return
+}
+
 func (resolver *LocalGlobalResolver) TryResolve(param *ResolveParam) (endpoint string, support bool, err error) {
 	// get the global endpoints configs
 	endpointExpression := fmt.Sprintf("products[?code=='%s'].global_endpoint", strings.ToLower(param.Product))

+ 5 - 0
sdk/endpoints/local_regional_resolver.go

@@ -23,6 +23,11 @@ import (
 type LocalRegionalResolver struct {
 }
 
+func (resolver *LocalRegionalResolver) GetName() (name string) {
+  name = "local regional resolver"
+  return
+}
+
 func (resolver *LocalRegionalResolver) TryResolve(param *ResolveParam) (endpoint string, support bool, err error) {
 	// get the regional endpoints configs
 	regionalExpression := fmt.Sprintf("products[?code=='%s'].regional_endpoints", strings.ToLower(param.Product))

+ 5 - 0
sdk/endpoints/location_resolver.go

@@ -48,6 +48,11 @@ var endpointCache = Cache{cache: make(map[string]interface{})}
 type LocationResolver struct {
 }
 
+func (resolver *LocationResolver) GetName() (name string) {
+  name = "location resolver"
+  return
+}
+
 func (resolver *LocationResolver) TryResolve(param *ResolveParam) (endpoint string, support bool, err error) {
 	if len(param.LocationProduct) <= 0 {
 		support = false

+ 5 - 0
sdk/endpoints/mapping_resolver.go

@@ -32,6 +32,11 @@ func AddEndpointMapping(regionId, productId, endpoint string) (err error) {
 type MappingResolver struct {
 }
 
+func (resolver *MappingResolver) GetName() (name string) {
+  name = "mapping resolver"
+  return
+}
+
 func (resolver *MappingResolver) TryResolve(param *ResolveParam) (endpoint string, support bool, err error) {
 	key := fmt.Sprintf(keyFormatter, strings.ToLower(param.RegionId), strings.ToLower(param.Product))
 	endpoint, contains := endpointMapping[key]

+ 10 - 0
sdk/endpoints/resolver.go

@@ -17,12 +17,19 @@ package endpoints
 import (
 	"encoding/json"
 	"fmt"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/utils"
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/errors"
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
 	"sync"
 )
 
+var debug utils.Debug
+
+func init() {
+	debug = utils.Init("sdk")
+}
+
 const (
 	ResolveEndpointUserGuideLink = ""
 )
@@ -32,6 +39,7 @@ var resolvers []Resolver
 
 type Resolver interface {
 	TryResolve(param *ResolveParam) (endpoint string, support bool, err error)
+	GetName() (name string)
 }
 
 func Resolve(param *ResolveParam) (endpoint string, err error) {
@@ -39,6 +47,8 @@ func Resolve(param *ResolveParam) (endpoint string, err error) {
 	for _, resolver := range supportedResolvers {
 		endpoint, supported, err := resolver.TryResolve(param)
 		if supported {
+			debug("resolve endpoint with %s\n", param)
+			debug("\t%s by resolver(%s)\n", endpoint, resolver.GetName())
 			return endpoint, err
 		}
 	}

+ 5 - 0
sdk/endpoints/simple_host_resolver.go

@@ -17,6 +17,11 @@ package endpoints
 type SimpleHostResolver struct {
 }
 
+func (resolver *SimpleHostResolver) GetName() (name string) {
+  name = "simple resolver"
+  return
+}
+
 func (resolver *SimpleHostResolver) TryResolve(param *ResolveParam) (endpoint string, support bool, err error) {
 	if support = len(param.Domain) > 0; support {
 		endpoint = param.Domain