From 325755cbf5ead7854ef9923f431c1fe9b4eff046 Mon Sep 17 00:00:00 2001
From: "vito.he" <hxmhlt@163.com>
Date: Mon, 1 Jul 2019 11:49:22 +0800
Subject: [PATCH] Mod:change registries in reference & service to registry

---
 config/config_loader_test.go    |  4 ++--
 config/reference_config.go      |  4 ++--
 config/reference_config_test.go |  2 +-
 config/registry_config.go       | 10 +++++++---
 config/service_config.go        |  4 ++--
 config/service_config_test.go   |  2 +-
 6 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/config/config_loader_test.go b/config/config_loader_test.go
index 169f3e744..6e9689c76 100644
--- a/config/config_loader_test.go
+++ b/config/config_loader_test.go
@@ -86,8 +86,8 @@ func TestLoad(t *testing.T) {
 func TestWithNoRegLoad(t *testing.T) {
 	doInit()
 	doinit()
-	providerConfig.Services["MockService"].Registries = []string{}
-	consumerConfig.References["MockService"].Registries = []string{}
+	providerConfig.Services["MockService"].Registry = ""
+	consumerConfig.References["MockService"].Registry = ""
 	ms := &MockService{}
 	SetConsumerService(ms)
 	SetProviderService(ms)
diff --git a/config/reference_config.go b/config/reference_config.go
index d56226a31..2c38d8aa4 100644
--- a/config/reference_config.go
+++ b/config/reference_config.go
@@ -43,7 +43,7 @@ type ReferenceConfig struct {
 	Url           string          `yaml:"url"  json:"url,omitempty" property:"url"`
 	Filter        string          `yaml:"filter" json:"filter,omitempty" property:"filter"`
 	Protocol      string          `yaml:"protocol"  json:"protocol,omitempty" property:"protocol"`
-	Registries    []string        `yaml:"registries"  json:"registries,omitempty"  property:"registries"`
+	Registry      string          `yaml:"registry"  json:"registry,omitempty"  property:"registry"`
 	Cluster       string          `yaml:"cluster"  json:"cluster,omitempty" property:"cluster"`
 	Loadbalance   string          `yaml:"loadbalance"  json:"loadbalance,omitempty" property:"loadbalance"`
 	Retries       int64           `yaml:"retries"  json:"retries,omitempty" property:"retries"`
@@ -100,7 +100,7 @@ func (refconfig *ReferenceConfig) Refer() {
 		}
 	} else {
 		//2. assemble SubURL from register center's configuration妯″紡
-		refconfig.urls = loadRegistries(refconfig.Registries, consumerConfig.Registries, common.CONSUMER)
+		refconfig.urls = loadRegistries(refconfig.Registry, consumerConfig.Registries, common.CONSUMER)
 
 		//set url to regUrls
 		for _, regUrl := range refconfig.urls {
diff --git a/config/reference_config_test.go b/config/reference_config_test.go
index 766cfda6c..c41e2a16d 100644
--- a/config/reference_config_test.go
+++ b/config/reference_config_test.go
@@ -80,7 +80,7 @@ func doInit() {
 		},
 		References: map[string]*ReferenceConfig{
 			"MockService": {
-				Registries:    []string{"shanghai_reg1", "shanghai_reg2", "hangzhou_reg1", "hangzhou_reg2"},
+				Registry:      "shanghai_reg1,shanghai_reg2,hangzhou_reg1,hangzhou_reg2",
 				InterfaceName: "MockService",
 				Protocol:      "mock",
 				Cluster:       "failover",
diff --git a/config/registry_config.go b/config/registry_config.go
index a36e8c159..816d93cf9 100644
--- a/config/registry_config.go
+++ b/config/registry_config.go
@@ -21,6 +21,7 @@ import (
 	"context"
 	"net/url"
 	"strconv"
+	"strings"
 )
 
 import (
@@ -44,17 +45,20 @@ func (*RegistryConfig) Prefix() string {
 	return constant.RegistryConfigPrefix
 }
 
-func loadRegistries(targetRegistries []string, registries map[string]*RegistryConfig, roleType common.RoleType) []*common.URL {
+func loadRegistries(targetRegistries string, registries map[string]*RegistryConfig, roleType common.RoleType) []*common.URL {
 	var urls []*common.URL
+	trSlice := strings.Split(targetRegistries, ",")
+
 	for k, registryConf := range registries {
 		target := false
 
 		// if user not config targetRegistries,default load all
-		if len(targetRegistries) == 0 {
+		// Notice:If s does not contain sep and sep is not empty, SplitAfter returns a slice of length 1 whose only element is s.
+		if len(trSlice) == 0 || (len(trSlice) == 1 && trSlice[0] == "") {
 			target = true
 		} else {
 			// else if user config targetRegistries
-			for _, tr := range targetRegistries {
+			for _, tr := range trSlice {
 				if tr == k {
 					target = true
 					break
diff --git a/config/service_config.go b/config/service_config.go
index e5c077975..79a29aa33 100644
--- a/config/service_config.go
+++ b/config/service_config.go
@@ -46,7 +46,7 @@ type ServiceConfig struct {
 	Filter        string          `yaml:"filter" json:"filter,omitempty" property:"filter"`
 	Protocol      string          `required:"true"  yaml:"protocol"  json:"protocol,omitempty" property:"protocol"` //multi protocol support, split by ','
 	InterfaceName string          `required:"true"  yaml:"interface"  json:"interface,omitempty" property:"interface"`
-	Registries    []string        `yaml:"registries"  json:"registries,omitempty"  property:"registries"`
+	Registry      string          `yaml:"registry"  json:"registry,omitempty"  property:"registry"`
 	Cluster       string          `default:"failover" yaml:"cluster"  json:"cluster,omitempty" property:"cluster"`
 	Loadbalance   string          `default:"random" yaml:"loadbalance"  json:"loadbalance,omitempty"  property:"loadbalance"`
 	Group         string          `yaml:"group"  json:"group,omitempty" property:"group"`
@@ -88,7 +88,7 @@ func (srvconfig *ServiceConfig) Export() error {
 		return nil
 	}
 
-	regUrls := loadRegistries(srvconfig.Registries, providerConfig.Registries, common.PROVIDER)
+	regUrls := loadRegistries(srvconfig.Registry, providerConfig.Registries, common.PROVIDER)
 	urlMap := srvconfig.getUrlMap()
 
 	for _, proto := range loadProtocol(srvconfig.Protocol, providerConfig.Protocols) {
diff --git a/config/service_config_test.go b/config/service_config_test.go
index df1c4be90..4e0b7f95d 100644
--- a/config/service_config_test.go
+++ b/config/service_config_test.go
@@ -76,7 +76,7 @@ func doinit() {
 			"MockService": {
 				InterfaceName: "MockService",
 				Protocol:      "mock",
-				Registries:    []string{"shanghai_reg1", "shanghai_reg2", "hangzhou_reg1", "hangzhou_reg2"},
+				Registry:      "shanghai_reg1,shanghai_reg2,hangzhou_reg1,hangzhou_reg2",
 				Cluster:       "failover",
 				Loadbalance:   "random",
 				Retries:       3,
-- 
GitLab