Create & Init Project...
This commit is contained in:
41
app/infra/config/rpc/client/BUILD
Normal file
41
app/infra/config/rpc/client/BUILD
Normal file
@ -0,0 +1,41 @@
|
||||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
load(
|
||||
"@io_bazel_rules_go//go:def.bzl",
|
||||
"go_test",
|
||||
"go_library",
|
||||
)
|
||||
|
||||
go_test(
|
||||
name = "go_default_test",
|
||||
srcs = ["config_test.go"],
|
||||
embed = [":go_default_library"],
|
||||
tags = ["automanaged"],
|
||||
deps = ["//app/infra/config/model:go_default_library"],
|
||||
)
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = ["config.go"],
|
||||
importpath = "go-common/app/infra/config/rpc/client",
|
||||
tags = ["automanaged"],
|
||||
visibility = ["//visibility:public"],
|
||||
deps = [
|
||||
"//app/infra/config/model:go_default_library",
|
||||
"//library/net/rpc:go_default_library",
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "package-srcs",
|
||||
srcs = glob(["**"]),
|
||||
tags = ["automanaged"],
|
||||
visibility = ["//visibility:private"],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "all-srcs",
|
||||
srcs = [":package-srcs"],
|
||||
tags = ["automanaged"],
|
||||
visibility = ["//visibility:public"],
|
||||
)
|
78
app/infra/config/rpc/client/config.go
Normal file
78
app/infra/config/rpc/client/config.go
Normal file
@ -0,0 +1,78 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"go-common/app/infra/config/model"
|
||||
"go-common/library/net/rpc"
|
||||
)
|
||||
|
||||
const (
|
||||
_appid = "config.service"
|
||||
|
||||
_push = "RPC.Push"
|
||||
_setToken = "RPC.SetToken"
|
||||
_pushV4 = "RPC.PushV4"
|
||||
_force = "RPC.Force"
|
||||
_setTokenV4 = "RPC.SetTokenV4"
|
||||
_hosts = "RPC.Hosts"
|
||||
_clearHost = "RPC.ClearHost"
|
||||
)
|
||||
|
||||
var (
|
||||
_noArg = &struct{}{}
|
||||
)
|
||||
|
||||
//Service2 service.
|
||||
type Service2 struct {
|
||||
client *rpc.Client2
|
||||
}
|
||||
|
||||
// New2 new a config service.
|
||||
func New2(c *rpc.ClientConfig) (s *Service2) {
|
||||
s = &Service2{}
|
||||
s.client = rpc.NewDiscoveryCli(_appid, c)
|
||||
return
|
||||
}
|
||||
|
||||
// Push push new ver to config-service
|
||||
func (s *Service2) Push(c context.Context, arg *model.ArgConf) (err error) {
|
||||
err = s.client.Boardcast(c, _push, arg, _noArg)
|
||||
return
|
||||
}
|
||||
|
||||
// SetToken update token in config-service
|
||||
func (s *Service2) SetToken(c context.Context, arg *model.ArgToken) (err error) {
|
||||
err = s.client.Boardcast(c, _setToken, arg, _noArg)
|
||||
return
|
||||
}
|
||||
|
||||
// PushV4 push new ver to config-service
|
||||
func (s *Service2) PushV4(c context.Context, arg *model.ArgConf) (err error) {
|
||||
err = s.client.Boardcast(c, _pushV4, arg, _noArg)
|
||||
return
|
||||
}
|
||||
|
||||
// SetTokenV4 update token in config-service
|
||||
func (s *Service2) SetTokenV4(c context.Context, arg *model.ArgToken) (err error) {
|
||||
err = s.client.Boardcast(c, _setTokenV4, arg, _noArg)
|
||||
return
|
||||
}
|
||||
|
||||
//Hosts get host list.
|
||||
func (s *Service2) Hosts(c context.Context, svr string) (hosts []*model.Host, err error) {
|
||||
err = s.client.Call(c, _hosts, svr, &hosts)
|
||||
return
|
||||
}
|
||||
|
||||
// ClearHost update token in config-service
|
||||
func (s *Service2) ClearHost(c context.Context, svr string) (err error) {
|
||||
err = s.client.Call(c, _clearHost, svr, _noArg)
|
||||
return
|
||||
}
|
||||
|
||||
// Force push new host ver to config-service
|
||||
func (s *Service2) Force(c context.Context, arg *model.ArgConf) (err error) {
|
||||
err = s.client.Boardcast(c, _force, arg, _noArg)
|
||||
return
|
||||
}
|
61
app/infra/config/rpc/client/config_test.go
Normal file
61
app/infra/config/rpc/client/config_test.go
Normal file
@ -0,0 +1,61 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"go-common/app/infra/config/model"
|
||||
)
|
||||
|
||||
func TestConf(t *testing.T) {
|
||||
s := New2(nil)
|
||||
time.Sleep(1 * time.Second)
|
||||
|
||||
// coin
|
||||
testPush(t, s)
|
||||
testSetToken(t, s)
|
||||
testHosts(t, s)
|
||||
testClearHost(t, s)
|
||||
}
|
||||
|
||||
func testPush(t *testing.T, s *Service2) {
|
||||
arg := &model.ArgConf{
|
||||
App: "zjx_test",
|
||||
BuildVer: "1_0_0_0",
|
||||
Ver: 113,
|
||||
Env: "2",
|
||||
}
|
||||
if err := s.Push(context.TODO(), arg); err != nil {
|
||||
fmt.Println(err)
|
||||
t.FailNow()
|
||||
}
|
||||
}
|
||||
func testSetToken(t *testing.T, s *Service2) {
|
||||
arg := &model.ArgToken{
|
||||
App: "zjx_test",
|
||||
Token: "123",
|
||||
Env: "2",
|
||||
}
|
||||
if err := s.SetToken(context.TODO(), arg); err != nil {
|
||||
fmt.Println(err)
|
||||
t.FailNow()
|
||||
}
|
||||
}
|
||||
|
||||
func testHosts(t *testing.T, s *Service2) {
|
||||
if hosts, err := s.Hosts(context.TODO(), "testApp4890934756659"); err != nil {
|
||||
t.Log(err)
|
||||
t.FailNow()
|
||||
} else {
|
||||
t.Log(len(hosts))
|
||||
}
|
||||
}
|
||||
|
||||
func testClearHost(t *testing.T, s *Service2) {
|
||||
if err := s.ClearHost(context.TODO(), "testApp4890934756659"); err != nil {
|
||||
t.Log(err)
|
||||
t.FailNow()
|
||||
}
|
||||
}
|
36
app/infra/config/rpc/server/BUILD
Normal file
36
app/infra/config/rpc/server/BUILD
Normal file
@ -0,0 +1,36 @@
|
||||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
load(
|
||||
"@io_bazel_rules_go//go:def.bzl",
|
||||
"go_library",
|
||||
)
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = ["config.go"],
|
||||
importpath = "go-common/app/infra/config/rpc/server",
|
||||
tags = ["automanaged"],
|
||||
visibility = ["//visibility:public"],
|
||||
deps = [
|
||||
"//app/infra/config/conf:go_default_library",
|
||||
"//app/infra/config/model:go_default_library",
|
||||
"//app/infra/config/service/v1:go_default_library",
|
||||
"//app/infra/config/service/v2:go_default_library",
|
||||
"//library/net/rpc:go_default_library",
|
||||
"//library/net/rpc/context:go_default_library",
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "package-srcs",
|
||||
srcs = glob(["**"]),
|
||||
tags = ["automanaged"],
|
||||
visibility = ["//visibility:private"],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "all-srcs",
|
||||
srcs = [":package-srcs"],
|
||||
tags = ["automanaged"],
|
||||
visibility = ["//visibility:public"],
|
||||
)
|
76
app/infra/config/rpc/server/config.go
Normal file
76
app/infra/config/rpc/server/config.go
Normal file
@ -0,0 +1,76 @@
|
||||
package rpc
|
||||
|
||||
import (
|
||||
"go-common/app/infra/config/conf"
|
||||
"go-common/app/infra/config/service/v1"
|
||||
"go-common/app/infra/config/service/v2"
|
||||
"go-common/library/net/rpc"
|
||||
"go-common/library/net/rpc/context"
|
||||
|
||||
"go-common/app/infra/config/model"
|
||||
)
|
||||
|
||||
// RPC export rpc service
|
||||
type RPC struct {
|
||||
s *v1.Service
|
||||
s2 *v2.Service
|
||||
}
|
||||
|
||||
// New new rpc server.
|
||||
func New(c *conf.Config, s *v1.Service, s2 *v2.Service) (svr *rpc.Server) {
|
||||
r := &RPC{s: s, s2: s2}
|
||||
svr = rpc.NewServer(c.RPCServer)
|
||||
if err := svr.Register(r); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// Ping check connection success.
|
||||
func (r *RPC) Ping(c context.Context, arg *struct{}, res *struct{}) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
// Push push new config change to config-service
|
||||
func (r *RPC) Push(c context.Context, a *model.ArgConf, res *struct{}) (err error) {
|
||||
service := &model.Service{Name: a.App, BuildVersion: a.BuildVer, Version: a.Ver, Env: a.Env}
|
||||
err = r.s.Push(c, service)
|
||||
return
|
||||
}
|
||||
|
||||
//SetToken update Token
|
||||
func (r *RPC) SetToken(c context.Context, a *model.ArgToken, res *struct{}) (err error) {
|
||||
r.s.SetToken(c, a.App, a.Env, a.Token)
|
||||
return
|
||||
}
|
||||
|
||||
// PushV4 push new config change to config-service
|
||||
func (r *RPC) PushV4(c context.Context, a *model.ArgConf, res *struct{}) (err error) {
|
||||
service := &model.Service{Name: a.App, BuildVersion: a.BuildVer, Version: a.Ver}
|
||||
err = r.s2.Push(c, service)
|
||||
return
|
||||
}
|
||||
|
||||
//SetTokenV4 update Token
|
||||
func (r *RPC) SetTokenV4(c context.Context, a *model.ArgToken, res *struct{}) (err error) {
|
||||
r.s2.SetToken(a.App, a.Token)
|
||||
return
|
||||
}
|
||||
|
||||
//Hosts get host list.
|
||||
func (r *RPC) Hosts(c context.Context, svr string, res *[]*model.Host) (err error) {
|
||||
*res, err = r.s2.Hosts(c, svr)
|
||||
return
|
||||
}
|
||||
|
||||
//ClearHost clear host.
|
||||
func (r *RPC) ClearHost(c context.Context, svr string, res *struct{}) error {
|
||||
return r.s2.ClearHost(c, svr)
|
||||
}
|
||||
|
||||
// Force push new host config change to config-service
|
||||
func (r *RPC) Force(c context.Context, a *model.ArgConf, res *struct{}) (err error) {
|
||||
service := &model.Service{Name: a.App, BuildVersion: a.BuildVer, Version: a.Ver}
|
||||
err = r.s2.Force(c, service, a.Hosts, a.SType)
|
||||
return
|
||||
}
|
Reference in New Issue
Block a user