You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2018/01/22 11:36:42 UTC

[incubator-servicecomb-service-center] branch master updated: SCB-259 Can not discovery default APP services in Shared service mode (#255)

This is an automated email from the ASF dual-hosted git repository.

littlecui pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-service-center.git


The following commit(s) were added to refs/heads/master by this push:
     new b8b80ae  SCB-259 Can not discovery default APP services in Shared service mode (#255)
b8b80ae is described below

commit b8b80ae0be596543d60c2b7e7abf6641cd6a4871
Author: little-cui <su...@qq.com>
AuthorDate: Mon Jan 22 19:36:41 2018 +0800

    SCB-259 Can not discovery default APP services in Shared service mode (#255)
    
    * SCB-259 Can not discovery default APP services in Shared service mode
    
    * SCB-259 Can not discovery default APP services in Shared service mode
---
 server/core/microservice.go      | 27 ++++++++++++++++-----------
 server/service/instances_test.go | 25 +++++++++++++++++++++----
 2 files changed, 37 insertions(+), 15 deletions(-)

diff --git a/server/core/microservice.go b/server/core/microservice.go
index c357f54..0ae21f7 100644
--- a/server/core/microservice.go
+++ b/server/core/microservice.go
@@ -20,15 +20,15 @@ import (
 	"github.com/apache/incubator-servicecomb-service-center/pkg/util"
 	pb "github.com/apache/incubator-servicecomb-service-center/server/core/proto"
 	"github.com/apache/incubator-servicecomb-service-center/version"
-	"github.com/astaxie/beego"
 	"golang.org/x/net/context"
+	"os"
 	"strings"
 )
 
 var (
-	Service  *pb.MicroService
-	Instance *pb.MicroServiceInstance
-	isShared bool
+	Service            *pb.MicroService
+	Instance           *pb.MicroServiceInstance
+	sharedServiceNames map[string]struct{}
 )
 
 const (
@@ -45,8 +45,12 @@ const (
 )
 
 func init() {
-	SetSharedMode(len(strings.TrimSpace(beego.AppConfig.String("auth_plugin"))) > 0)
+	prepareSelfRegistration()
 
+	SetSharedMode()
+}
+
+func prepareSelfRegistration() {
 	Service = &pb.MicroService{
 		Environment: pb.ENV_PROD,
 		AppId:       REGISTRY_APP_ID,
@@ -86,19 +90,20 @@ func IsDefaultDomainProject(domainProject string) bool {
 	return domainProject == util.StringJoin([]string{REGISTRY_DOMAIN, REGISTRY_PROJECT}, "/")
 }
 
-func SetSharedMode(b bool) {
-	isShared = b
+func SetSharedMode() {
+	sharedServiceNames = util.ListToMap(strings.Split(os.Getenv("CSE_SHARED_SERVICES"), ","))
+	sharedServiceNames[Service.ServiceName] = struct{}{}
 }
 
 func IsShared(key *pb.MicroServiceKey) bool {
-	if !isShared {
-		// shared micro-service only can be registered in auth mode.
+	if !IsDefaultDomainProject(key.Tenant) {
 		return false
 	}
-	if !IsDefaultDomainProject(key.Tenant) {
+	if key.AppId != REGISTRY_APP_ID {
 		return false
 	}
-	return key.AppId == Service.AppId
+	_, ok := sharedServiceNames[key.ServiceName]
+	return ok
 }
 
 func IsSCKey(key *pb.MicroServiceKey) bool {
diff --git a/server/service/instances_test.go b/server/service/instances_test.go
index 3e3750b..355a615 100644
--- a/server/service/instances_test.go
+++ b/server/service/instances_test.go
@@ -26,6 +26,7 @@ import (
 	. "github.com/onsi/gomega"
 	"golang.org/x/net/context"
 	"google.golang.org/grpc"
+	"os"
 )
 
 type grpcWatchServer struct {
@@ -598,6 +599,7 @@ var _ = Describe("'Instance' service", func() {
 			serviceId4  string
 			serviceId5  string
 			serviceId6  string
+			serviceId7  string
 			instanceId1 string
 			instanceId2 string
 			instanceId4 string
@@ -675,10 +677,23 @@ var _ = Describe("'Instance' service", func() {
 			Expect(respCreate.Response.Code).To(Equal(pb.Response_SUCCESS))
 			serviceId5 = respCreate.ServiceId
 
+			respCreate, err = serviceResource.Create(getContext(), &pb.CreateServiceRequest{
+				Service: &pb.MicroService{
+					AppId:       "default",
+					ServiceName: "query_instance_shared_consumer",
+					Version:     "1.0.0",
+					Level:       "FRONT",
+					Status:      pb.MS_UP,
+				},
+			})
+			Expect(err).To(BeNil())
+			Expect(respCreate.Response.Code).To(Equal(pb.Response_SUCCESS))
+			serviceId7 = respCreate.ServiceId
+
 			respCreate, err = serviceResource.Create(util.SetDomainProject(context.Background(), "user", "user"),
 				&pb.CreateServiceRequest{
 					Service: &pb.MicroService{
-						AppId:       "query_instance_diff_domain",
+						AppId:       "default",
 						ServiceName: "query_instance_diff_domain_consumer",
 						Version:     "1.0.0",
 						Level:       "FRONT",
@@ -888,8 +903,10 @@ var _ = Describe("'Instance' service", func() {
 				Expect(len(respFind.Instances)).To(Equal(0))
 
 				By("shared service discovery")
-				core.SetSharedMode(true)
+				os.Setenv("CSE_SHARED_SERVICES", "query_instance_shared_provider")
+				core.SetSharedMode()
 				core.Service.Environment = pb.ENV_PROD
+
 				respFind, err = instanceResource.Find(
 					util.SetTargetDomainProject(
 						util.SetDomainProject(context.Background(), "user", "user"),
@@ -906,7 +923,7 @@ var _ = Describe("'Instance' service", func() {
 				Expect(respFind.Instances[0].InstanceId).To(Equal(instanceId5))
 
 				respFind, err = instanceResource.Find(getContext(), &pb.FindInstancesRequest{
-					ConsumerServiceId: serviceId4,
+					ConsumerServiceId: serviceId7,
 					AppId:             "default",
 					ServiceName:       "query_instance_shared_provider",
 					VersionRule:       "1.0.0",
@@ -915,8 +932,8 @@ var _ = Describe("'Instance' service", func() {
 				Expect(respFind.Response.Code).To(Equal(pb.Response_SUCCESS))
 				Expect(len(respFind.Instances)).To(Equal(1))
 				Expect(respFind.Instances[0].InstanceId).To(Equal(instanceId5))
+
 				core.Service.Environment = pb.ENV_DEV
-				core.SetSharedMode(false)
 			})
 		})
 

-- 
To stop receiving notification emails like this one, please contact
littlecui@apache.org.