mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 16:00:24 +08:00 
			
		
		
		
	阶段性提交
This commit is contained in:
		@@ -2,10 +2,19 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
ADMIN_PROJECT="../../EdgeAdmin"
 | 
					ADMIN_PROJECT="../../EdgeAdmin"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					rm -f ../internal/rpc/pb/*
 | 
				
			||||||
protoc --go_out=plugins=grpc:../internal/rpc --proto_path=../internal/rpc/protos ../internal/rpc/protos/*.proto
 | 
					protoc --go_out=plugins=grpc:../internal/rpc --proto_path=../internal/rpc/protos ../internal/rpc/protos/*.proto
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#admin
 | 
					#admin
 | 
				
			||||||
cp ../internal/rpc/protos/service_admin.proto ${ADMIN_PROJECT}/internal/rpc/protos/
 | 
					function pub() {
 | 
				
			||||||
cp ../internal/rpc/pb/service_admin.pb.go ${ADMIN_PROJECT}/internal/rpc/pb/
 | 
						cp ../internal/rpc/protos/service_${2}.proto ${1}/internal/rpc/protos/
 | 
				
			||||||
cp ../internal/rpc/pb/model_*.go ${ADMIN_PROJECT}/internal/rpc/pb/
 | 
						cp ../internal/rpc/pb/service_${2}.pb.go ${1}/internal/rpc/pb/
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pub ${ADMIN_PROJECT} admin
 | 
				
			||||||
 | 
					pub ${ADMIN_PROJECT} node
 | 
				
			||||||
 | 
					pub ${ADMIN_PROJECT} node_cluster
 | 
				
			||||||
 | 
					pub ${ADMIN_PROJECT} node_grant
 | 
				
			||||||
 | 
					pub ${ADMIN_PROJECT} server
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cp ../internal/rpc/pb/model_*.go ${ADMIN_PROJECT}/internal/rpc/pb/
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										6
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								go.mod
									
									
									
									
									
								
							@@ -6,11 +6,7 @@ require (
 | 
				
			|||||||
	github.com/go-sql-driver/mysql v1.5.0
 | 
						github.com/go-sql-driver/mysql v1.5.0
 | 
				
			||||||
	github.com/go-yaml/yaml v2.1.0+incompatible
 | 
						github.com/go-yaml/yaml v2.1.0+incompatible
 | 
				
			||||||
	github.com/golang/protobuf v1.4.2
 | 
						github.com/golang/protobuf v1.4.2
 | 
				
			||||||
	github.com/iwind/TeaGo v0.0.0-20200722034406-6bf13920e40d
 | 
						github.com/iwind/TeaGo v0.0.0-20200727075925-7e7e67b44f2d
 | 
				
			||||||
	github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect
 | 
					 | 
				
			||||||
	github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7 // indirect
 | 
					 | 
				
			||||||
	google.golang.org/grpc v1.30.0
 | 
						google.golang.org/grpc v1.30.0
 | 
				
			||||||
	google.golang.org/protobuf v1.25.0
 | 
						google.golang.org/protobuf v1.25.0
 | 
				
			||||||
	gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f // indirect
 | 
					 | 
				
			||||||
	gopkg.in/yaml.v2 v2.3.0 // indirect
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										9
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										9
									
								
								go.sum
									
									
									
									
									
								
							@@ -38,12 +38,8 @@ github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
 | 
				
			|||||||
github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w=
 | 
					github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w=
 | 
				
			||||||
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 | 
					github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 | 
				
			||||||
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
 | 
					github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
 | 
				
			||||||
github.com/iwind/TeaGo v0.0.0-20200720020412-96dbe21b81d4 h1:893FbgV8PRV/rCqEAtpifgAmsIYTDrZruWHMWIw4+x8=
 | 
					github.com/iwind/TeaGo v0.0.0-20200727075925-7e7e67b44f2d h1:V7HA0wUOdmZbXJTVpiUEvSD4ARKHwMLMmiCccfkqf24=
 | 
				
			||||||
github.com/iwind/TeaGo v0.0.0-20200720020412-96dbe21b81d4/go.mod h1:taNzU+Tt7Axz5t1v8pEV7xRuioNJxbMeMAbDVQpxq20=
 | 
					github.com/iwind/TeaGo v0.0.0-20200727075925-7e7e67b44f2d/go.mod h1:zjM7k+b+Jthhf0T0fKwuF0iy4TWb5SsU1gmKR2l+OmE=
 | 
				
			||||||
github.com/iwind/TeaGo v0.0.0-20200722010955-47dd648dc761 h1:70Iaf6iVF4CiH1P5Au3hqile/2Ea0XIkR4SPpdiaKI0=
 | 
					 | 
				
			||||||
github.com/iwind/TeaGo v0.0.0-20200722010955-47dd648dc761/go.mod h1:zjM7k+b+Jthhf0T0fKwuF0iy4TWb5SsU1gmKR2l+OmE=
 | 
					 | 
				
			||||||
github.com/iwind/TeaGo v0.0.0-20200722034406-6bf13920e40d h1:W//0gTbKQ44b3gHNz1/fMiKEu+mM5t5O3py4kJscSa0=
 | 
					 | 
				
			||||||
github.com/iwind/TeaGo v0.0.0-20200722034406-6bf13920e40d/go.mod h1:zjM7k+b+Jthhf0T0fKwuF0iy4TWb5SsU1gmKR2l+OmE=
 | 
					 | 
				
			||||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
 | 
					github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
 | 
				
			||||||
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
 | 
					github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
 | 
				
			||||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
 | 
					github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
 | 
				
			||||||
@@ -84,6 +80,7 @@ golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7w
 | 
				
			|||||||
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
					golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
					golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
					golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.0.0-20200519105757-fe76b779f299 h1:DYfZAGf2WMFjMxbgTjaC+2HC7NkNAQs+6Q8b9WEB/F4=
 | 
				
			||||||
golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
					golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
 | 
					golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
 | 
				
			||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 | 
					golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -51,14 +51,11 @@ func (this *APINode) listenRPC() error {
 | 
				
			|||||||
		return errors.New("[API]listen rpc failed: " + err.Error())
 | 
							return errors.New("[API]listen rpc failed: " + err.Error())
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	rpcServer := grpc.NewServer()
 | 
						rpcServer := grpc.NewServer()
 | 
				
			||||||
	pb.RegisterDnsServiceServer(rpcServer, &services.DNSService{})
 | 
					 | 
				
			||||||
	pb.RegisterLogServiceServer(rpcServer, &services.LogService{})
 | 
					 | 
				
			||||||
	pb.RegisterMonitorServiceServer(rpcServer, &services.MonitorService{})
 | 
					 | 
				
			||||||
	pb.RegisterNodeServiceServer(rpcServer, &services.NodeService{})
 | 
					 | 
				
			||||||
	pb.RegisterProviderServiceServer(rpcServer, &services.ProviderService{})
 | 
					 | 
				
			||||||
	pb.RegisterStatServiceServer(rpcServer, &services.StatService{})
 | 
					 | 
				
			||||||
	pb.RegisterUserServiceServer(rpcServer, &services.UserService{})
 | 
					 | 
				
			||||||
	pb.RegisterAdminServiceServer(rpcServer, &services.AdminService{})
 | 
						pb.RegisterAdminServiceServer(rpcServer, &services.AdminService{})
 | 
				
			||||||
 | 
						pb.RegisterNodeGrantServiceServer(rpcServer, &services.NodeGrantService{})
 | 
				
			||||||
 | 
						pb.RegisterServerServiceServer(rpcServer, &services.ServerService{})
 | 
				
			||||||
 | 
						pb.RegisterNodeServiceServer(rpcServer, &services.NodeService{})
 | 
				
			||||||
 | 
						pb.RegisterNodeClusterServiceServer(rpcServer, &services.NodeClusterService{})
 | 
				
			||||||
	err = rpcServer.Serve(listener)
 | 
						err = rpcServer.Serve(listener)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return errors.New("[API]start rpc failed: " + err.Error())
 | 
							return errors.New("[API]start rpc failed: " + err.Error())
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,7 +22,7 @@ func NewLogDAO() *LogDAO {
 | 
				
			|||||||
var SharedLogDAO = NewLogDAO()
 | 
					var SharedLogDAO = NewLogDAO()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 创建管理员日志
 | 
					// 创建管理员日志
 | 
				
			||||||
func (this *LogDAO) CreateAdminLog(adminId int, level string, description string, action string, ip string) error {
 | 
					func (this *LogDAO) CreateAdminLog(adminId int64, level string, description string, action string, ip string) error {
 | 
				
			||||||
	op := NewLogOperator()
 | 
						op := NewLogOperator()
 | 
				
			||||||
	op.AdminId, op.Level, op.Description, op.Action, op.Ip = adminId, level, description, action, ip
 | 
						op.AdminId, op.Level, op.Description, op.Action, op.Ip = adminId, level, description, action, ip
 | 
				
			||||||
	op.Type = LogTypeAdmin
 | 
						op.Type = LogTypeAdmin
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -72,6 +72,7 @@ func (this *NodeDAO) CreateNode(name string, clusterId int) (nodeId int, err err
 | 
				
			|||||||
	op.NodeId = rands.HexString(32)
 | 
						op.NodeId = rands.HexString(32)
 | 
				
			||||||
	op.Secret = rands.String(32)
 | 
						op.Secret = rands.String(32)
 | 
				
			||||||
	op.ClusterId = clusterId
 | 
						op.ClusterId = clusterId
 | 
				
			||||||
 | 
						op.IsOn = 1
 | 
				
			||||||
	op.State = NodeStateEnabled
 | 
						op.State = NodeStateEnabled
 | 
				
			||||||
	_, err = this.Save(op)
 | 
						_, err = this.Save(op)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
@@ -102,8 +103,8 @@ func (this *NodeDAO) CountAllEnabledNodes() (int64, error) {
 | 
				
			|||||||
func (this *NodeDAO) ListEnabledNodes(offset int64, size int64) (result []*Node, err error) {
 | 
					func (this *NodeDAO) ListEnabledNodes(offset int64, size int64) (result []*Node, err error) {
 | 
				
			||||||
	_, err = this.Query().
 | 
						_, err = this.Query().
 | 
				
			||||||
		State(NodeStateEnabled).
 | 
							State(NodeStateEnabled).
 | 
				
			||||||
		Offset(int(offset)).
 | 
							Offset(offset).
 | 
				
			||||||
		Limit(int(size)).
 | 
							Limit(size).
 | 
				
			||||||
		DescPk().
 | 
							DescPk().
 | 
				
			||||||
		Slice(&result).
 | 
							Slice(&result).
 | 
				
			||||||
		FindAll()
 | 
							FindAll()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,9 +1,11 @@
 | 
				
			|||||||
package models
 | 
					package models
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"errors"
 | 
				
			||||||
	_ "github.com/go-sql-driver/mysql"
 | 
						_ "github.com/go-sql-driver/mysql"
 | 
				
			||||||
	"github.com/iwind/TeaGo/Tea"
 | 
						"github.com/iwind/TeaGo/Tea"
 | 
				
			||||||
	"github.com/iwind/TeaGo/dbs"
 | 
						"github.com/iwind/TeaGo/dbs"
 | 
				
			||||||
 | 
						"github.com/iwind/TeaGo/types"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const (
 | 
					const (
 | 
				
			||||||
@@ -35,15 +37,16 @@ func (this *NodeGrantDAO) EnableNodeGrant(id uint32) (rowsAffected int64, err er
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 禁用条目
 | 
					// 禁用条目
 | 
				
			||||||
func (this *NodeGrantDAO) DisableNodeGrant(id uint32) (rowsAffected int64, err error) {
 | 
					func (this *NodeGrantDAO) DisableNodeGrant(id int64) (err error) {
 | 
				
			||||||
	return this.Query().
 | 
						_, err = this.Query().
 | 
				
			||||||
		Pk(id).
 | 
							Pk(id).
 | 
				
			||||||
		Set("state", NodeGrantStateDisabled).
 | 
							Set("state", NodeGrantStateDisabled).
 | 
				
			||||||
		Update()
 | 
							Update()
 | 
				
			||||||
 | 
						return err
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 查找启用中的条目
 | 
					// 查找启用中的条目
 | 
				
			||||||
func (this *NodeGrantDAO) FindEnabledNodeGrant(id uint32) (*NodeGrant, error) {
 | 
					func (this *NodeGrantDAO) FindEnabledNodeGrant(id int64) (*NodeGrant, error) {
 | 
				
			||||||
	result, err := this.Query().
 | 
						result, err := this.Query().
 | 
				
			||||||
		Pk(id).
 | 
							Pk(id).
 | 
				
			||||||
		Attr("state", NodeGrantStateEnabled).
 | 
							Attr("state", NodeGrantStateEnabled).
 | 
				
			||||||
@@ -62,3 +65,78 @@ func (this *NodeGrantDAO) FindNodeGrantName(id uint32) (string, error) {
 | 
				
			|||||||
		FindCol("")
 | 
							FindCol("")
 | 
				
			||||||
	return name.(string), err
 | 
						return name.(string), err
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 创建认证信息
 | 
				
			||||||
 | 
					func (this *NodeGrantDAO) CreateGrant(name string, method string, username string, password string, privateKey string, description string, nodeId int64) (grantId int64, err error) {
 | 
				
			||||||
 | 
						op := NewNodeGrantOperator()
 | 
				
			||||||
 | 
						op.Name = name
 | 
				
			||||||
 | 
						op.Method = method
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						switch method {
 | 
				
			||||||
 | 
						case "user":
 | 
				
			||||||
 | 
							op.Username = username
 | 
				
			||||||
 | 
							op.Password = password
 | 
				
			||||||
 | 
							op.Su = false // TODO 需要做到前端可以配置
 | 
				
			||||||
 | 
						case "privateKey":
 | 
				
			||||||
 | 
							op.PrivateKey = privateKey
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						op.Description = description
 | 
				
			||||||
 | 
						op.NodeId = nodeId
 | 
				
			||||||
 | 
						op.State = NodeGrantStateEnabled
 | 
				
			||||||
 | 
						_, err = this.Save(op)
 | 
				
			||||||
 | 
						return types.Int64(op.Id), err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 修改认证信息
 | 
				
			||||||
 | 
					func (this *NodeGrantDAO) UpdateGrant(grantId int64, name string, method string, username string, password string, privateKey string, description string, nodeId int64) error {
 | 
				
			||||||
 | 
						if grantId <= 0 {
 | 
				
			||||||
 | 
							return errors.New("invalid grantId")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						op := NewNodeGrantOperator()
 | 
				
			||||||
 | 
						op.Id = grantId
 | 
				
			||||||
 | 
						op.Name = name
 | 
				
			||||||
 | 
						op.Method = method
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						switch method {
 | 
				
			||||||
 | 
						case "user":
 | 
				
			||||||
 | 
							op.Username = username
 | 
				
			||||||
 | 
							op.Password = password
 | 
				
			||||||
 | 
							op.Su = false // TODO 需要做到前端可以配置
 | 
				
			||||||
 | 
						case "privateKey":
 | 
				
			||||||
 | 
							op.PrivateKey = privateKey
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						op.Description = description
 | 
				
			||||||
 | 
						op.NodeId = nodeId
 | 
				
			||||||
 | 
						_, err := this.Save(op)
 | 
				
			||||||
 | 
						return err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 计算所有认证信息数量
 | 
				
			||||||
 | 
					func (this *NodeGrantDAO) CountAllEnabledGrants() (int64, error) {
 | 
				
			||||||
 | 
						return this.Query().
 | 
				
			||||||
 | 
							State(NodeGrantStateEnabled).
 | 
				
			||||||
 | 
							Count()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 列出单页的认证信息
 | 
				
			||||||
 | 
					func (this *NodeGrantDAO) ListEnabledGrants(offset int64, size int64) (result []*NodeGrant, err error) {
 | 
				
			||||||
 | 
						_, err = this.Query().
 | 
				
			||||||
 | 
							State(NodeGrantStateEnabled).
 | 
				
			||||||
 | 
							Offset(offset).
 | 
				
			||||||
 | 
							Size(size).
 | 
				
			||||||
 | 
							DescPk().
 | 
				
			||||||
 | 
							Slice(&result).
 | 
				
			||||||
 | 
							FindAll()
 | 
				
			||||||
 | 
						return
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 列出所有的认证信息
 | 
				
			||||||
 | 
					func (this *NodeGrantDAO) FindAllEnabledGrants() (result []*NodeGrant, err error) {
 | 
				
			||||||
 | 
						_, err = this.Query().
 | 
				
			||||||
 | 
							State(NodeGrantStateEnabled).
 | 
				
			||||||
 | 
							DescPk().
 | 
				
			||||||
 | 
							Slice(&result).
 | 
				
			||||||
 | 
							FindAll()
 | 
				
			||||||
 | 
						return
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,6 +4,7 @@ package models
 | 
				
			|||||||
type NodeGrant struct {
 | 
					type NodeGrant struct {
 | 
				
			||||||
	Id          uint32 `field:"id"`          // ID
 | 
						Id          uint32 `field:"id"`          // ID
 | 
				
			||||||
	Name        string `field:"name"`        // 名称
 | 
						Name        string `field:"name"`        // 名称
 | 
				
			||||||
 | 
						Method      string `field:"method"`      // 登录方式
 | 
				
			||||||
	Username    string `field:"username"`    // 用户名
 | 
						Username    string `field:"username"`    // 用户名
 | 
				
			||||||
	Password    string `field:"password"`    // 密码
 | 
						Password    string `field:"password"`    // 密码
 | 
				
			||||||
	Su          uint8  `field:"su"`          // 是否需要su
 | 
						Su          uint8  `field:"su"`          // 是否需要su
 | 
				
			||||||
@@ -16,6 +17,7 @@ type NodeGrant struct {
 | 
				
			|||||||
type NodeGrantOperator struct {
 | 
					type NodeGrantOperator struct {
 | 
				
			||||||
	Id          interface{} // ID
 | 
						Id          interface{} // ID
 | 
				
			||||||
	Name        interface{} // 名称
 | 
						Name        interface{} // 名称
 | 
				
			||||||
 | 
						Method      interface{} // 登录方式
 | 
				
			||||||
	Username    interface{} // 用户名
 | 
						Username    interface{} // 用户名
 | 
				
			||||||
	Password    interface{} // 密码
 | 
						Password    interface{} // 密码
 | 
				
			||||||
	Su          interface{} // 是否需要su
 | 
						Su          interface{} // 是否需要su
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,6 +3,7 @@ package models
 | 
				
			|||||||
// 节点
 | 
					// 节点
 | 
				
			||||||
type Node struct {
 | 
					type Node struct {
 | 
				
			||||||
	Id        uint32 `field:"id"`        // ID
 | 
						Id        uint32 `field:"id"`        // ID
 | 
				
			||||||
 | 
						IsOn      uint8  `field:"isOn"`      // 是否启用
 | 
				
			||||||
	NodeId    string `field:"nodeId"`    // 节点ID
 | 
						NodeId    string `field:"nodeId"`    // 节点ID
 | 
				
			||||||
	Secret    string `field:"secret"`    // 密钥
 | 
						Secret    string `field:"secret"`    // 密钥
 | 
				
			||||||
	Name      string `field:"name"`      // 节点名
 | 
						Name      string `field:"name"`      // 节点名
 | 
				
			||||||
@@ -17,6 +18,7 @@ type Node struct {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
type NodeOperator struct {
 | 
					type NodeOperator struct {
 | 
				
			||||||
	Id        interface{} // ID
 | 
						Id        interface{} // ID
 | 
				
			||||||
 | 
						IsOn      interface{} // 是否启用
 | 
				
			||||||
	NodeId    interface{} // 节点ID
 | 
						NodeId    interface{} // 节点ID
 | 
				
			||||||
	Secret    interface{} // 密钥
 | 
						Secret    interface{} // 密钥
 | 
				
			||||||
	Name      interface{} // 节点名
 | 
						Name      interface{} // 节点名
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,9 +1,11 @@
 | 
				
			|||||||
package models
 | 
					package models
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"errors"
 | 
				
			||||||
	_ "github.com/go-sql-driver/mysql"
 | 
						_ "github.com/go-sql-driver/mysql"
 | 
				
			||||||
	"github.com/iwind/TeaGo/Tea"
 | 
						"github.com/iwind/TeaGo/Tea"
 | 
				
			||||||
	"github.com/iwind/TeaGo/dbs"
 | 
						"github.com/iwind/TeaGo/dbs"
 | 
				
			||||||
 | 
						"github.com/iwind/TeaGo/types"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const (
 | 
					const (
 | 
				
			||||||
@@ -53,3 +55,67 @@ func (this *ServerDAO) FindEnabledServer(id uint32) (*Server, error) {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	return result.(*Server), err
 | 
						return result.(*Server), err
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 创建服务
 | 
				
			||||||
 | 
					func (this *ServerDAO) CreateServer(adminId int64, userId int64, clusterId int64, configJSON string, includeNodesJSON string, excludeNodesJSON string) (serverId int64, err error) {
 | 
				
			||||||
 | 
						op := NewServerOperator()
 | 
				
			||||||
 | 
						op.UserId = userId
 | 
				
			||||||
 | 
						op.AdminId = adminId
 | 
				
			||||||
 | 
						op.ClusterId = clusterId
 | 
				
			||||||
 | 
						if len(configJSON) > 0 {
 | 
				
			||||||
 | 
							op.Config = configJSON
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if len(includeNodesJSON) > 0 {
 | 
				
			||||||
 | 
							op.IncludeNodes = includeNodesJSON
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if len(excludeNodesJSON) > 0 {
 | 
				
			||||||
 | 
							op.ExcludeNodes = excludeNodesJSON
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						op.GroupIds = "[]"
 | 
				
			||||||
 | 
						op.Version = 1
 | 
				
			||||||
 | 
						op.IsOn = 1
 | 
				
			||||||
 | 
						op.State = ServerStateEnabled
 | 
				
			||||||
 | 
						_, err = this.Save(op)
 | 
				
			||||||
 | 
						return types.Int64(op.Id), err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 修改服务
 | 
				
			||||||
 | 
					func (this *ServerDAO) UpdateServer(serverId int64, clusterId int64, configJSON string, includeNodesJSON string, excludeNodesJSON string) error {
 | 
				
			||||||
 | 
						if serverId <= 0 {
 | 
				
			||||||
 | 
							return errors.New("serverId should not be smaller than 0")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						op := NewServerOperator()
 | 
				
			||||||
 | 
						op.Id = serverId
 | 
				
			||||||
 | 
						op.ClusterId = clusterId
 | 
				
			||||||
 | 
						if len(configJSON) > 0 {
 | 
				
			||||||
 | 
							op.Config = configJSON
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if len(includeNodesJSON) > 0 {
 | 
				
			||||||
 | 
							op.IncludeNodes = includeNodesJSON
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if len(excludeNodesJSON) > 0 {
 | 
				
			||||||
 | 
							op.ExcludeNodes = excludeNodesJSON
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						op.Version = dbs.SQL("version=version+1")
 | 
				
			||||||
 | 
						_, err := this.Save(op)
 | 
				
			||||||
 | 
						return err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 计算所有可用服务数量
 | 
				
			||||||
 | 
					func (this *ServerDAO) CountAllEnabledServers() (int64, error) {
 | 
				
			||||||
 | 
						return this.Query().
 | 
				
			||||||
 | 
							State(ServerStateEnabled).
 | 
				
			||||||
 | 
							Count()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 列出单页的服务
 | 
				
			||||||
 | 
					func (this *ServerDAO) ListEnabledServers(offset int64, size int64) (result []*Server, err error) {
 | 
				
			||||||
 | 
						_, err = this.Query().
 | 
				
			||||||
 | 
							State(ServerStateEnabled).
 | 
				
			||||||
 | 
							Offset(offset).
 | 
				
			||||||
 | 
							Limit(size).
 | 
				
			||||||
 | 
							DescPk().
 | 
				
			||||||
 | 
							Slice(&result).
 | 
				
			||||||
 | 
							FindAll()
 | 
				
			||||||
 | 
						return
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,10 +3,12 @@ package models
 | 
				
			|||||||
// 服务
 | 
					// 服务
 | 
				
			||||||
type Server struct {
 | 
					type Server struct {
 | 
				
			||||||
	Id           uint32 `field:"id"`           // ID
 | 
						Id           uint32 `field:"id"`           // ID
 | 
				
			||||||
 | 
						IsOn         uint8  `field:"isOn"`         // 是否启用
 | 
				
			||||||
	UserId       uint32 `field:"userId"`       // 用户ID
 | 
						UserId       uint32 `field:"userId"`       // 用户ID
 | 
				
			||||||
	AdminId      uint32 `field:"adminId"`      // 管理员ID
 | 
						AdminId      uint32 `field:"adminId"`      // 管理员ID
 | 
				
			||||||
	GroupIds     string `field:"groupIds"`     // 分组ID列表
 | 
						GroupIds     string `field:"groupIds"`     // 分组ID列表
 | 
				
			||||||
	Config       string `field:"config"`       // 服务配置,自动生成
 | 
						Config       string `field:"config"`       // 服务配置,自动生成
 | 
				
			||||||
 | 
						ClusterId    uint32 `field:"clusterId"`    // 集群ID
 | 
				
			||||||
	IncludeNodes string `field:"includeNodes"` // 部署条件
 | 
						IncludeNodes string `field:"includeNodes"` // 部署条件
 | 
				
			||||||
	ExcludeNodes string `field:"excludeNodes"` // 节点排除条件
 | 
						ExcludeNodes string `field:"excludeNodes"` // 节点排除条件
 | 
				
			||||||
	Version      uint32 `field:"version"`      // 版本号
 | 
						Version      uint32 `field:"version"`      // 版本号
 | 
				
			||||||
@@ -16,10 +18,12 @@ type Server struct {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
type ServerOperator struct {
 | 
					type ServerOperator struct {
 | 
				
			||||||
	Id           interface{} // ID
 | 
						Id           interface{} // ID
 | 
				
			||||||
 | 
						IsOn         interface{} // 是否启用
 | 
				
			||||||
	UserId       interface{} // 用户ID
 | 
						UserId       interface{} // 用户ID
 | 
				
			||||||
	AdminId      interface{} // 管理员ID
 | 
						AdminId      interface{} // 管理员ID
 | 
				
			||||||
	GroupIds     interface{} // 分组ID列表
 | 
						GroupIds     interface{} // 分组ID列表
 | 
				
			||||||
	Config       interface{} // 服务配置,自动生成
 | 
						Config       interface{} // 服务配置,自动生成
 | 
				
			||||||
 | 
						ClusterId    interface{} // 集群ID
 | 
				
			||||||
	IncludeNodes interface{} // 部署条件
 | 
						IncludeNodes interface{} // 部署条件
 | 
				
			||||||
	ExcludeNodes interface{} // 节点排除条件
 | 
						ExcludeNodes interface{} // 节点排除条件
 | 
				
			||||||
	Version      interface{} // 版本号
 | 
						Version      interface{} // 版本号
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,165 +0,0 @@
 | 
				
			|||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
 | 
					 | 
				
			||||||
// versions:
 | 
					 | 
				
			||||||
// 	protoc-gen-go v1.25.0
 | 
					 | 
				
			||||||
// 	protoc        v3.12.3
 | 
					 | 
				
			||||||
// source: model_cluster.proto
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package pb
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	proto "github.com/golang/protobuf/proto"
 | 
					 | 
				
			||||||
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
 | 
					 | 
				
			||||||
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 | 
					 | 
				
			||||||
	reflect "reflect"
 | 
					 | 
				
			||||||
	sync "sync"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const (
 | 
					 | 
				
			||||||
	// Verify that this generated code is sufficiently up-to-date.
 | 
					 | 
				
			||||||
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
 | 
					 | 
				
			||||||
	// Verify that runtime/protoimpl is sufficiently up-to-date.
 | 
					 | 
				
			||||||
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// This is a compile-time assertion that a sufficiently up-to-date version
 | 
					 | 
				
			||||||
// of the legacy proto package is being used.
 | 
					 | 
				
			||||||
const _ = proto.ProtoPackageIsVersion4
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
type Cluster struct {
 | 
					 | 
				
			||||||
	state         protoimpl.MessageState
 | 
					 | 
				
			||||||
	sizeCache     protoimpl.SizeCache
 | 
					 | 
				
			||||||
	unknownFields protoimpl.UnknownFields
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	Id        int64  `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
 | 
					 | 
				
			||||||
	Name      string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
 | 
					 | 
				
			||||||
	CreatedAt int64  `protobuf:"varint,3,opt,name=createdAt,proto3" json:"createdAt,omitempty"`
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (x *Cluster) Reset() {
 | 
					 | 
				
			||||||
	*x = Cluster{}
 | 
					 | 
				
			||||||
	if protoimpl.UnsafeEnabled {
 | 
					 | 
				
			||||||
		mi := &file_model_cluster_proto_msgTypes[0]
 | 
					 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
					 | 
				
			||||||
		ms.StoreMessageInfo(mi)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (x *Cluster) String() string {
 | 
					 | 
				
			||||||
	return protoimpl.X.MessageStringOf(x)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (*Cluster) ProtoMessage() {}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (x *Cluster) ProtoReflect() protoreflect.Message {
 | 
					 | 
				
			||||||
	mi := &file_model_cluster_proto_msgTypes[0]
 | 
					 | 
				
			||||||
	if protoimpl.UnsafeEnabled && x != nil {
 | 
					 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
					 | 
				
			||||||
		if ms.LoadMessageInfo() == nil {
 | 
					 | 
				
			||||||
			ms.StoreMessageInfo(mi)
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		return ms
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return mi.MessageOf(x)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Deprecated: Use Cluster.ProtoReflect.Descriptor instead.
 | 
					 | 
				
			||||||
func (*Cluster) Descriptor() ([]byte, []int) {
 | 
					 | 
				
			||||||
	return file_model_cluster_proto_rawDescGZIP(), []int{0}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (x *Cluster) GetId() int64 {
 | 
					 | 
				
			||||||
	if x != nil {
 | 
					 | 
				
			||||||
		return x.Id
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return 0
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (x *Cluster) GetName() string {
 | 
					 | 
				
			||||||
	if x != nil {
 | 
					 | 
				
			||||||
		return x.Name
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return ""
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (x *Cluster) GetCreatedAt() int64 {
 | 
					 | 
				
			||||||
	if x != nil {
 | 
					 | 
				
			||||||
		return x.CreatedAt
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return 0
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var File_model_cluster_proto protoreflect.FileDescriptor
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var file_model_cluster_proto_rawDesc = []byte{
 | 
					 | 
				
			||||||
	0x0a, 0x13, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e,
 | 
					 | 
				
			||||||
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x22, 0x4b, 0x0a, 0x07, 0x43, 0x6c, 0x75,
 | 
					 | 
				
			||||||
	0x73, 0x74, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
 | 
					 | 
				
			||||||
	0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
 | 
					 | 
				
			||||||
	0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61,
 | 
					 | 
				
			||||||
	0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65,
 | 
					 | 
				
			||||||
	0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06,
 | 
					 | 
				
			||||||
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var (
 | 
					 | 
				
			||||||
	file_model_cluster_proto_rawDescOnce sync.Once
 | 
					 | 
				
			||||||
	file_model_cluster_proto_rawDescData = file_model_cluster_proto_rawDesc
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func file_model_cluster_proto_rawDescGZIP() []byte {
 | 
					 | 
				
			||||||
	file_model_cluster_proto_rawDescOnce.Do(func() {
 | 
					 | 
				
			||||||
		file_model_cluster_proto_rawDescData = protoimpl.X.CompressGZIP(file_model_cluster_proto_rawDescData)
 | 
					 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
	return file_model_cluster_proto_rawDescData
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var file_model_cluster_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 | 
					 | 
				
			||||||
var file_model_cluster_proto_goTypes = []interface{}{
 | 
					 | 
				
			||||||
	(*Cluster)(nil), // 0: pb.Cluster
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
var file_model_cluster_proto_depIdxs = []int32{
 | 
					 | 
				
			||||||
	0, // [0:0] is the sub-list for method output_type
 | 
					 | 
				
			||||||
	0, // [0:0] is the sub-list for method input_type
 | 
					 | 
				
			||||||
	0, // [0:0] is the sub-list for extension type_name
 | 
					 | 
				
			||||||
	0, // [0:0] is the sub-list for extension extendee
 | 
					 | 
				
			||||||
	0, // [0:0] is the sub-list for field type_name
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func init() { file_model_cluster_proto_init() }
 | 
					 | 
				
			||||||
func file_model_cluster_proto_init() {
 | 
					 | 
				
			||||||
	if File_model_cluster_proto != nil {
 | 
					 | 
				
			||||||
		return
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if !protoimpl.UnsafeEnabled {
 | 
					 | 
				
			||||||
		file_model_cluster_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
 | 
					 | 
				
			||||||
			switch v := v.(*Cluster); i {
 | 
					 | 
				
			||||||
			case 0:
 | 
					 | 
				
			||||||
				return &v.state
 | 
					 | 
				
			||||||
			case 1:
 | 
					 | 
				
			||||||
				return &v.sizeCache
 | 
					 | 
				
			||||||
			case 2:
 | 
					 | 
				
			||||||
				return &v.unknownFields
 | 
					 | 
				
			||||||
			default:
 | 
					 | 
				
			||||||
				return nil
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	type x struct{}
 | 
					 | 
				
			||||||
	out := protoimpl.TypeBuilder{
 | 
					 | 
				
			||||||
		File: protoimpl.DescBuilder{
 | 
					 | 
				
			||||||
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 | 
					 | 
				
			||||||
			RawDescriptor: file_model_cluster_proto_rawDesc,
 | 
					 | 
				
			||||||
			NumEnums:      0,
 | 
					 | 
				
			||||||
			NumMessages:   1,
 | 
					 | 
				
			||||||
			NumExtensions: 0,
 | 
					 | 
				
			||||||
			NumServices:   0,
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		GoTypes:           file_model_cluster_proto_goTypes,
 | 
					 | 
				
			||||||
		DependencyIndexes: file_model_cluster_proto_depIdxs,
 | 
					 | 
				
			||||||
		MessageInfos:      file_model_cluster_proto_msgTypes,
 | 
					 | 
				
			||||||
	}.Build()
 | 
					 | 
				
			||||||
	File_model_cluster_proto = out.File
 | 
					 | 
				
			||||||
	file_model_cluster_proto_rawDesc = nil
 | 
					 | 
				
			||||||
	file_model_cluster_proto_goTypes = nil
 | 
					 | 
				
			||||||
	file_model_cluster_proto_depIdxs = nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -32,7 +32,7 @@ type Node struct {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	Id      int64        `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
 | 
						Id      int64        `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
 | 
				
			||||||
	Name    string       `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
 | 
						Name    string       `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
 | 
				
			||||||
	Cluster *Cluster `protobuf:"bytes,32,opt,name=cluster,proto3" json:"cluster,omitempty"`
 | 
						Cluster *NodeCluster `protobuf:"bytes,32,opt,name=cluster,proto3" json:"cluster,omitempty"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *Node) Reset() {
 | 
					func (x *Node) Reset() {
 | 
				
			||||||
@@ -81,7 +81,7 @@ func (x *Node) GetName() string {
 | 
				
			|||||||
	return ""
 | 
						return ""
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *Node) GetCluster() *Cluster {
 | 
					func (x *Node) GetCluster() *NodeCluster {
 | 
				
			||||||
	if x != nil {
 | 
						if x != nil {
 | 
				
			||||||
		return x.Cluster
 | 
							return x.Cluster
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -92,14 +92,15 @@ var File_model_node_proto protoreflect.FileDescriptor
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
var file_model_node_proto_rawDesc = []byte{
 | 
					var file_model_node_proto_rawDesc = []byte{
 | 
				
			||||||
	0x0a, 0x10, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f,
 | 
						0x0a, 0x10, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f,
 | 
				
			||||||
	0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x1a, 0x13, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x63, 0x6c,
 | 
						0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x1a, 0x18, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6e, 0x6f,
 | 
				
			||||||
	0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x51, 0x0a, 0x04, 0x4e,
 | 
						0x64, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
 | 
				
			||||||
	0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
 | 
						0x22, 0x55, 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
 | 
				
			||||||
	0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
 | 
						0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
 | 
				
			||||||
	0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74,
 | 
						0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x07,
 | 
				
			||||||
	0x65, 0x72, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6c,
 | 
						0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e,
 | 
				
			||||||
	0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x42, 0x06,
 | 
						0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07,
 | 
				
			||||||
	0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 | 
						0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62,
 | 
				
			||||||
 | 
						0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var (
 | 
					var (
 | 
				
			||||||
@@ -117,10 +118,10 @@ func file_model_node_proto_rawDescGZIP() []byte {
 | 
				
			|||||||
var file_model_node_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 | 
					var file_model_node_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 | 
				
			||||||
var file_model_node_proto_goTypes = []interface{}{
 | 
					var file_model_node_proto_goTypes = []interface{}{
 | 
				
			||||||
	(*Node)(nil),        // 0: pb.Node
 | 
						(*Node)(nil),        // 0: pb.Node
 | 
				
			||||||
	(*Cluster)(nil), // 1: pb.Cluster
 | 
						(*NodeCluster)(nil), // 1: pb.NodeCluster
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
var file_model_node_proto_depIdxs = []int32{
 | 
					var file_model_node_proto_depIdxs = []int32{
 | 
				
			||||||
	1, // 0: pb.Node.cluster:type_name -> pb.Cluster
 | 
						1, // 0: pb.Node.cluster:type_name -> pb.NodeCluster
 | 
				
			||||||
	1, // [1:1] is the sub-list for method output_type
 | 
						1, // [1:1] is the sub-list for method output_type
 | 
				
			||||||
	1, // [1:1] is the sub-list for method input_type
 | 
						1, // [1:1] is the sub-list for method input_type
 | 
				
			||||||
	1, // [1:1] is the sub-list for extension type_name
 | 
						1, // [1:1] is the sub-list for extension type_name
 | 
				
			||||||
@@ -133,7 +134,7 @@ func file_model_node_proto_init() {
 | 
				
			|||||||
	if File_model_node_proto != nil {
 | 
						if File_model_node_proto != nil {
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	file_model_cluster_proto_init()
 | 
						file_model_node_cluster_proto_init()
 | 
				
			||||||
	if !protoimpl.UnsafeEnabled {
 | 
						if !protoimpl.UnsafeEnabled {
 | 
				
			||||||
		file_model_node_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
 | 
							file_model_node_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
 | 
				
			||||||
			switch v := v.(*Node); i {
 | 
								switch v := v.(*Node); i {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										165
									
								
								internal/rpc/pb/model_node_cluster.pb.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										165
									
								
								internal/rpc/pb/model_node_cluster.pb.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,165 @@
 | 
				
			|||||||
 | 
					// Code generated by protoc-gen-go. DO NOT EDIT.
 | 
				
			||||||
 | 
					// versions:
 | 
				
			||||||
 | 
					// 	protoc-gen-go v1.25.0
 | 
				
			||||||
 | 
					// 	protoc        v3.12.3
 | 
				
			||||||
 | 
					// source: model_node_cluster.proto
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package pb
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						proto "github.com/golang/protobuf/proto"
 | 
				
			||||||
 | 
						protoreflect "google.golang.org/protobuf/reflect/protoreflect"
 | 
				
			||||||
 | 
						protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 | 
				
			||||||
 | 
						reflect "reflect"
 | 
				
			||||||
 | 
						sync "sync"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						// Verify that this generated code is sufficiently up-to-date.
 | 
				
			||||||
 | 
						_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
 | 
				
			||||||
 | 
						// Verify that runtime/protoimpl is sufficiently up-to-date.
 | 
				
			||||||
 | 
						_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// This is a compile-time assertion that a sufficiently up-to-date version
 | 
				
			||||||
 | 
					// of the legacy proto package is being used.
 | 
				
			||||||
 | 
					const _ = proto.ProtoPackageIsVersion4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type NodeCluster struct {
 | 
				
			||||||
 | 
						state         protoimpl.MessageState
 | 
				
			||||||
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
 | 
						unknownFields protoimpl.UnknownFields
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Id        int64  `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
 | 
				
			||||||
 | 
						Name      string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
 | 
				
			||||||
 | 
						CreatedAt int64  `protobuf:"varint,3,opt,name=createdAt,proto3" json:"createdAt,omitempty"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *NodeCluster) Reset() {
 | 
				
			||||||
 | 
						*x = NodeCluster{}
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
 | 
							mi := &file_model_node_cluster_proto_msgTypes[0]
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *NodeCluster) String() string {
 | 
				
			||||||
 | 
						return protoimpl.X.MessageStringOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (*NodeCluster) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *NodeCluster) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
 | 
						mi := &file_model_node_cluster_proto_msgTypes[0]
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
 | 
								ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return ms
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return mi.MessageOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Deprecated: Use NodeCluster.ProtoReflect.Descriptor instead.
 | 
				
			||||||
 | 
					func (*NodeCluster) Descriptor() ([]byte, []int) {
 | 
				
			||||||
 | 
						return file_model_node_cluster_proto_rawDescGZIP(), []int{0}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *NodeCluster) GetId() int64 {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Id
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *NodeCluster) GetName() string {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Name
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return ""
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *NodeCluster) GetCreatedAt() int64 {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.CreatedAt
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var File_model_node_cluster_proto protoreflect.FileDescriptor
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var file_model_node_cluster_proto_rawDesc = []byte{
 | 
				
			||||||
 | 
						0x0a, 0x18, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6c, 0x75,
 | 
				
			||||||
 | 
						0x73, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x22, 0x4f,
 | 
				
			||||||
 | 
						0x0a, 0x0b, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x0e, 0x0a,
 | 
				
			||||||
 | 
						0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a,
 | 
				
			||||||
 | 
						0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
 | 
				
			||||||
 | 
						0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x03,
 | 
				
			||||||
 | 
						0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x42,
 | 
				
			||||||
 | 
						0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var (
 | 
				
			||||||
 | 
						file_model_node_cluster_proto_rawDescOnce sync.Once
 | 
				
			||||||
 | 
						file_model_node_cluster_proto_rawDescData = file_model_node_cluster_proto_rawDesc
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func file_model_node_cluster_proto_rawDescGZIP() []byte {
 | 
				
			||||||
 | 
						file_model_node_cluster_proto_rawDescOnce.Do(func() {
 | 
				
			||||||
 | 
							file_model_node_cluster_proto_rawDescData = protoimpl.X.CompressGZIP(file_model_node_cluster_proto_rawDescData)
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
						return file_model_node_cluster_proto_rawDescData
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var file_model_node_cluster_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 | 
				
			||||||
 | 
					var file_model_node_cluster_proto_goTypes = []interface{}{
 | 
				
			||||||
 | 
						(*NodeCluster)(nil), // 0: pb.NodeCluster
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					var file_model_node_cluster_proto_depIdxs = []int32{
 | 
				
			||||||
 | 
						0, // [0:0] is the sub-list for method output_type
 | 
				
			||||||
 | 
						0, // [0:0] is the sub-list for method input_type
 | 
				
			||||||
 | 
						0, // [0:0] is the sub-list for extension type_name
 | 
				
			||||||
 | 
						0, // [0:0] is the sub-list for extension extendee
 | 
				
			||||||
 | 
						0, // [0:0] is the sub-list for field type_name
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func init() { file_model_node_cluster_proto_init() }
 | 
				
			||||||
 | 
					func file_model_node_cluster_proto_init() {
 | 
				
			||||||
 | 
						if File_model_node_cluster_proto != nil {
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if !protoimpl.UnsafeEnabled {
 | 
				
			||||||
 | 
							file_model_node_cluster_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
 | 
				
			||||||
 | 
								switch v := v.(*NodeCluster); i {
 | 
				
			||||||
 | 
								case 0:
 | 
				
			||||||
 | 
									return &v.state
 | 
				
			||||||
 | 
								case 1:
 | 
				
			||||||
 | 
									return &v.sizeCache
 | 
				
			||||||
 | 
								case 2:
 | 
				
			||||||
 | 
									return &v.unknownFields
 | 
				
			||||||
 | 
								default:
 | 
				
			||||||
 | 
									return nil
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						type x struct{}
 | 
				
			||||||
 | 
						out := protoimpl.TypeBuilder{
 | 
				
			||||||
 | 
							File: protoimpl.DescBuilder{
 | 
				
			||||||
 | 
								GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 | 
				
			||||||
 | 
								RawDescriptor: file_model_node_cluster_proto_rawDesc,
 | 
				
			||||||
 | 
								NumEnums:      0,
 | 
				
			||||||
 | 
								NumMessages:   1,
 | 
				
			||||||
 | 
								NumExtensions: 0,
 | 
				
			||||||
 | 
								NumServices:   0,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							GoTypes:           file_model_node_cluster_proto_goTypes,
 | 
				
			||||||
 | 
							DependencyIndexes: file_model_node_cluster_proto_depIdxs,
 | 
				
			||||||
 | 
							MessageInfos:      file_model_node_cluster_proto_msgTypes,
 | 
				
			||||||
 | 
						}.Build()
 | 
				
			||||||
 | 
						File_model_node_cluster_proto = out.File
 | 
				
			||||||
 | 
						file_model_node_cluster_proto_rawDesc = nil
 | 
				
			||||||
 | 
						file_model_node_cluster_proto_goTypes = nil
 | 
				
			||||||
 | 
						file_model_node_cluster_proto_depIdxs = nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										213
									
								
								internal/rpc/pb/model_node_grant.pb.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										213
									
								
								internal/rpc/pb/model_node_grant.pb.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,213 @@
 | 
				
			|||||||
 | 
					// Code generated by protoc-gen-go. DO NOT EDIT.
 | 
				
			||||||
 | 
					// versions:
 | 
				
			||||||
 | 
					// 	protoc-gen-go v1.25.0
 | 
				
			||||||
 | 
					// 	protoc        v3.12.3
 | 
				
			||||||
 | 
					// source: model_node_grant.proto
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package pb
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						proto "github.com/golang/protobuf/proto"
 | 
				
			||||||
 | 
						protoreflect "google.golang.org/protobuf/reflect/protoreflect"
 | 
				
			||||||
 | 
						protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 | 
				
			||||||
 | 
						reflect "reflect"
 | 
				
			||||||
 | 
						sync "sync"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						// Verify that this generated code is sufficiently up-to-date.
 | 
				
			||||||
 | 
						_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
 | 
				
			||||||
 | 
						// Verify that runtime/protoimpl is sufficiently up-to-date.
 | 
				
			||||||
 | 
						_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// This is a compile-time assertion that a sufficiently up-to-date version
 | 
				
			||||||
 | 
					// of the legacy proto package is being used.
 | 
				
			||||||
 | 
					const _ = proto.ProtoPackageIsVersion4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type NodeGrant struct {
 | 
				
			||||||
 | 
						state         protoimpl.MessageState
 | 
				
			||||||
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
 | 
						unknownFields protoimpl.UnknownFields
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Id          int64  `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
 | 
				
			||||||
 | 
						Name        string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
 | 
				
			||||||
 | 
						Method      string `protobuf:"bytes,3,opt,name=method,proto3" json:"method,omitempty"`
 | 
				
			||||||
 | 
						Password    string `protobuf:"bytes,4,opt,name=password,proto3" json:"password,omitempty"`
 | 
				
			||||||
 | 
						Su          bool   `protobuf:"varint,5,opt,name=su,proto3" json:"su,omitempty"`
 | 
				
			||||||
 | 
						PrivateKey  string `protobuf:"bytes,6,opt,name=privateKey,proto3" json:"privateKey,omitempty"`
 | 
				
			||||||
 | 
						Description string `protobuf:"bytes,7,opt,name=description,proto3" json:"description,omitempty"`
 | 
				
			||||||
 | 
						NodeId      int64  `protobuf:"varint,8,opt,name=nodeId,proto3" json:"nodeId,omitempty"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *NodeGrant) Reset() {
 | 
				
			||||||
 | 
						*x = NodeGrant{}
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
 | 
							mi := &file_model_node_grant_proto_msgTypes[0]
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *NodeGrant) String() string {
 | 
				
			||||||
 | 
						return protoimpl.X.MessageStringOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (*NodeGrant) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *NodeGrant) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
 | 
						mi := &file_model_node_grant_proto_msgTypes[0]
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
 | 
								ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return ms
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return mi.MessageOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Deprecated: Use NodeGrant.ProtoReflect.Descriptor instead.
 | 
				
			||||||
 | 
					func (*NodeGrant) Descriptor() ([]byte, []int) {
 | 
				
			||||||
 | 
						return file_model_node_grant_proto_rawDescGZIP(), []int{0}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *NodeGrant) GetId() int64 {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Id
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *NodeGrant) GetName() string {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Name
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return ""
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *NodeGrant) GetMethod() string {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Method
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return ""
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *NodeGrant) GetPassword() string {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Password
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return ""
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *NodeGrant) GetSu() bool {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Su
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return false
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *NodeGrant) GetPrivateKey() string {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.PrivateKey
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return ""
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *NodeGrant) GetDescription() string {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Description
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return ""
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *NodeGrant) GetNodeId() int64 {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.NodeId
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var File_model_node_grant_proto protoreflect.FileDescriptor
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var file_model_node_grant_proto_rawDesc = []byte{
 | 
				
			||||||
 | 
						0x0a, 0x16, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x61,
 | 
				
			||||||
 | 
						0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x22, 0xcd, 0x01, 0x0a,
 | 
				
			||||||
 | 
						0x09, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64,
 | 
				
			||||||
 | 
						0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
 | 
				
			||||||
 | 
						0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16,
 | 
				
			||||||
 | 
						0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
 | 
				
			||||||
 | 
						0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f,
 | 
				
			||||||
 | 
						0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f,
 | 
				
			||||||
 | 
						0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x73, 0x75, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02,
 | 
				
			||||||
 | 
						0x73, 0x75, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79,
 | 
				
			||||||
 | 
						0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b,
 | 
				
			||||||
 | 
						0x65, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
 | 
				
			||||||
 | 
						0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
 | 
				
			||||||
 | 
						0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x18, 0x08,
 | 
				
			||||||
 | 
						0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x42, 0x06, 0x5a, 0x04,
 | 
				
			||||||
 | 
						0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var (
 | 
				
			||||||
 | 
						file_model_node_grant_proto_rawDescOnce sync.Once
 | 
				
			||||||
 | 
						file_model_node_grant_proto_rawDescData = file_model_node_grant_proto_rawDesc
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func file_model_node_grant_proto_rawDescGZIP() []byte {
 | 
				
			||||||
 | 
						file_model_node_grant_proto_rawDescOnce.Do(func() {
 | 
				
			||||||
 | 
							file_model_node_grant_proto_rawDescData = protoimpl.X.CompressGZIP(file_model_node_grant_proto_rawDescData)
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
						return file_model_node_grant_proto_rawDescData
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var file_model_node_grant_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 | 
				
			||||||
 | 
					var file_model_node_grant_proto_goTypes = []interface{}{
 | 
				
			||||||
 | 
						(*NodeGrant)(nil), // 0: pb.NodeGrant
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					var file_model_node_grant_proto_depIdxs = []int32{
 | 
				
			||||||
 | 
						0, // [0:0] is the sub-list for method output_type
 | 
				
			||||||
 | 
						0, // [0:0] is the sub-list for method input_type
 | 
				
			||||||
 | 
						0, // [0:0] is the sub-list for extension type_name
 | 
				
			||||||
 | 
						0, // [0:0] is the sub-list for extension extendee
 | 
				
			||||||
 | 
						0, // [0:0] is the sub-list for field type_name
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func init() { file_model_node_grant_proto_init() }
 | 
				
			||||||
 | 
					func file_model_node_grant_proto_init() {
 | 
				
			||||||
 | 
						if File_model_node_grant_proto != nil {
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if !protoimpl.UnsafeEnabled {
 | 
				
			||||||
 | 
							file_model_node_grant_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
 | 
				
			||||||
 | 
								switch v := v.(*NodeGrant); i {
 | 
				
			||||||
 | 
								case 0:
 | 
				
			||||||
 | 
									return &v.state
 | 
				
			||||||
 | 
								case 1:
 | 
				
			||||||
 | 
									return &v.sizeCache
 | 
				
			||||||
 | 
								case 2:
 | 
				
			||||||
 | 
									return &v.unknownFields
 | 
				
			||||||
 | 
								default:
 | 
				
			||||||
 | 
									return nil
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						type x struct{}
 | 
				
			||||||
 | 
						out := protoimpl.TypeBuilder{
 | 
				
			||||||
 | 
							File: protoimpl.DescBuilder{
 | 
				
			||||||
 | 
								GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 | 
				
			||||||
 | 
								RawDescriptor: file_model_node_grant_proto_rawDesc,
 | 
				
			||||||
 | 
								NumEnums:      0,
 | 
				
			||||||
 | 
								NumMessages:   1,
 | 
				
			||||||
 | 
								NumExtensions: 0,
 | 
				
			||||||
 | 
								NumServices:   0,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							GoTypes:           file_model_node_grant_proto_goTypes,
 | 
				
			||||||
 | 
							DependencyIndexes: file_model_node_grant_proto_depIdxs,
 | 
				
			||||||
 | 
							MessageInfos:      file_model_node_grant_proto_msgTypes,
 | 
				
			||||||
 | 
						}.Build()
 | 
				
			||||||
 | 
						File_model_node_grant_proto = out.File
 | 
				
			||||||
 | 
						file_model_node_grant_proto_rawDesc = nil
 | 
				
			||||||
 | 
						file_model_node_grant_proto_goTypes = nil
 | 
				
			||||||
 | 
						file_model_node_grant_proto_depIdxs = nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										201
									
								
								internal/rpc/pb/model_server.pb.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										201
									
								
								internal/rpc/pb/model_server.pb.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,201 @@
 | 
				
			|||||||
 | 
					// Code generated by protoc-gen-go. DO NOT EDIT.
 | 
				
			||||||
 | 
					// versions:
 | 
				
			||||||
 | 
					// 	protoc-gen-go v1.25.0
 | 
				
			||||||
 | 
					// 	protoc        v3.12.3
 | 
				
			||||||
 | 
					// source: model_server.proto
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package pb
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						proto "github.com/golang/protobuf/proto"
 | 
				
			||||||
 | 
						protoreflect "google.golang.org/protobuf/reflect/protoreflect"
 | 
				
			||||||
 | 
						protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 | 
				
			||||||
 | 
						reflect "reflect"
 | 
				
			||||||
 | 
						sync "sync"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						// Verify that this generated code is sufficiently up-to-date.
 | 
				
			||||||
 | 
						_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
 | 
				
			||||||
 | 
						// Verify that runtime/protoimpl is sufficiently up-to-date.
 | 
				
			||||||
 | 
						_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// This is a compile-time assertion that a sufficiently up-to-date version
 | 
				
			||||||
 | 
					// of the legacy proto package is being used.
 | 
				
			||||||
 | 
					const _ = proto.ProtoPackageIsVersion4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type Server struct {
 | 
				
			||||||
 | 
						state         protoimpl.MessageState
 | 
				
			||||||
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
 | 
						unknownFields protoimpl.UnknownFields
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Id           int64        `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
 | 
				
			||||||
 | 
						Config       []byte       `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"`
 | 
				
			||||||
 | 
						IncludeNodes []byte       `protobuf:"bytes,3,opt,name=includeNodes,proto3" json:"includeNodes,omitempty"`
 | 
				
			||||||
 | 
						ExcludeNodes []byte       `protobuf:"bytes,4,opt,name=excludeNodes,proto3" json:"excludeNodes,omitempty"`
 | 
				
			||||||
 | 
						CreatedAt    int64        `protobuf:"varint,5,opt,name=createdAt,proto3" json:"createdAt,omitempty"`
 | 
				
			||||||
 | 
						Cluster      *NodeCluster `protobuf:"bytes,6,opt,name=cluster,proto3" json:"cluster,omitempty"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *Server) Reset() {
 | 
				
			||||||
 | 
						*x = Server{}
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
 | 
							mi := &file_model_server_proto_msgTypes[0]
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *Server) String() string {
 | 
				
			||||||
 | 
						return protoimpl.X.MessageStringOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (*Server) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *Server) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
 | 
						mi := &file_model_server_proto_msgTypes[0]
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
 | 
								ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return ms
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return mi.MessageOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Deprecated: Use Server.ProtoReflect.Descriptor instead.
 | 
				
			||||||
 | 
					func (*Server) Descriptor() ([]byte, []int) {
 | 
				
			||||||
 | 
						return file_model_server_proto_rawDescGZIP(), []int{0}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *Server) GetId() int64 {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Id
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *Server) GetConfig() []byte {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Config
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *Server) GetIncludeNodes() []byte {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.IncludeNodes
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *Server) GetExcludeNodes() []byte {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.ExcludeNodes
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *Server) GetCreatedAt() int64 {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.CreatedAt
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *Server) GetCluster() *NodeCluster {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Cluster
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var File_model_server_proto protoreflect.FileDescriptor
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var file_model_server_proto_rawDesc = []byte{
 | 
				
			||||||
 | 
						0x0a, 0x12, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70,
 | 
				
			||||||
 | 
						0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x1a, 0x18, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f,
 | 
				
			||||||
 | 
						0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f,
 | 
				
			||||||
 | 
						0x74, 0x6f, 0x22, 0xc1, 0x01, 0x0a, 0x06, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x0e, 0x0a,
 | 
				
			||||||
 | 
						0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a,
 | 
				
			||||||
 | 
						0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x63,
 | 
				
			||||||
 | 
						0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65,
 | 
				
			||||||
 | 
						0x4e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x69, 0x6e, 0x63,
 | 
				
			||||||
 | 
						0x6c, 0x75, 0x64, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x78, 0x63,
 | 
				
			||||||
 | 
						0x6c, 0x75, 0x64, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52,
 | 
				
			||||||
 | 
						0x0c, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1c, 0x0a,
 | 
				
			||||||
 | 
						0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03,
 | 
				
			||||||
 | 
						0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x29, 0x0a, 0x07, 0x63,
 | 
				
			||||||
 | 
						0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70,
 | 
				
			||||||
 | 
						0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63,
 | 
				
			||||||
 | 
						0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06,
 | 
				
			||||||
 | 
						0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var (
 | 
				
			||||||
 | 
						file_model_server_proto_rawDescOnce sync.Once
 | 
				
			||||||
 | 
						file_model_server_proto_rawDescData = file_model_server_proto_rawDesc
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func file_model_server_proto_rawDescGZIP() []byte {
 | 
				
			||||||
 | 
						file_model_server_proto_rawDescOnce.Do(func() {
 | 
				
			||||||
 | 
							file_model_server_proto_rawDescData = protoimpl.X.CompressGZIP(file_model_server_proto_rawDescData)
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
						return file_model_server_proto_rawDescData
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var file_model_server_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 | 
				
			||||||
 | 
					var file_model_server_proto_goTypes = []interface{}{
 | 
				
			||||||
 | 
						(*Server)(nil),      // 0: pb.Server
 | 
				
			||||||
 | 
						(*NodeCluster)(nil), // 1: pb.NodeCluster
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					var file_model_server_proto_depIdxs = []int32{
 | 
				
			||||||
 | 
						1, // 0: pb.Server.cluster:type_name -> pb.NodeCluster
 | 
				
			||||||
 | 
						1, // [1:1] is the sub-list for method output_type
 | 
				
			||||||
 | 
						1, // [1:1] is the sub-list for method input_type
 | 
				
			||||||
 | 
						1, // [1:1] is the sub-list for extension type_name
 | 
				
			||||||
 | 
						1, // [1:1] is the sub-list for extension extendee
 | 
				
			||||||
 | 
						0, // [0:1] is the sub-list for field type_name
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func init() { file_model_server_proto_init() }
 | 
				
			||||||
 | 
					func file_model_server_proto_init() {
 | 
				
			||||||
 | 
						if File_model_server_proto != nil {
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						file_model_node_cluster_proto_init()
 | 
				
			||||||
 | 
						if !protoimpl.UnsafeEnabled {
 | 
				
			||||||
 | 
							file_model_server_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
 | 
				
			||||||
 | 
								switch v := v.(*Server); i {
 | 
				
			||||||
 | 
								case 0:
 | 
				
			||||||
 | 
									return &v.state
 | 
				
			||||||
 | 
								case 1:
 | 
				
			||||||
 | 
									return &v.sizeCache
 | 
				
			||||||
 | 
								case 2:
 | 
				
			||||||
 | 
									return &v.unknownFields
 | 
				
			||||||
 | 
								default:
 | 
				
			||||||
 | 
									return nil
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						type x struct{}
 | 
				
			||||||
 | 
						out := protoimpl.TypeBuilder{
 | 
				
			||||||
 | 
							File: protoimpl.DescBuilder{
 | 
				
			||||||
 | 
								GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 | 
				
			||||||
 | 
								RawDescriptor: file_model_server_proto_rawDesc,
 | 
				
			||||||
 | 
								NumEnums:      0,
 | 
				
			||||||
 | 
								NumMessages:   1,
 | 
				
			||||||
 | 
								NumExtensions: 0,
 | 
				
			||||||
 | 
								NumServices:   0,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							GoTypes:           file_model_server_proto_goTypes,
 | 
				
			||||||
 | 
							DependencyIndexes: file_model_server_proto_depIdxs,
 | 
				
			||||||
 | 
							MessageInfos:      file_model_server_proto_msgTypes,
 | 
				
			||||||
 | 
						}.Build()
 | 
				
			||||||
 | 
						File_model_server_proto = out.File
 | 
				
			||||||
 | 
						file_model_server_proto_rawDesc = nil
 | 
				
			||||||
 | 
						file_model_server_proto_goTypes = nil
 | 
				
			||||||
 | 
						file_model_server_proto_depIdxs = nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -1,111 +0,0 @@
 | 
				
			|||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
 | 
					 | 
				
			||||||
// versions:
 | 
					 | 
				
			||||||
// 	protoc-gen-go v1.25.0
 | 
					 | 
				
			||||||
// 	protoc        v3.12.3
 | 
					 | 
				
			||||||
// source: service_dns.proto
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package pb
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	context "context"
 | 
					 | 
				
			||||||
	proto "github.com/golang/protobuf/proto"
 | 
					 | 
				
			||||||
	grpc "google.golang.org/grpc"
 | 
					 | 
				
			||||||
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
 | 
					 | 
				
			||||||
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 | 
					 | 
				
			||||||
	reflect "reflect"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const (
 | 
					 | 
				
			||||||
	// Verify that this generated code is sufficiently up-to-date.
 | 
					 | 
				
			||||||
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
 | 
					 | 
				
			||||||
	// Verify that runtime/protoimpl is sufficiently up-to-date.
 | 
					 | 
				
			||||||
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// This is a compile-time assertion that a sufficiently up-to-date version
 | 
					 | 
				
			||||||
// of the legacy proto package is being used.
 | 
					 | 
				
			||||||
const _ = proto.ProtoPackageIsVersion4
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var File_service_dns_proto protoreflect.FileDescriptor
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var file_service_dns_proto_rawDesc = []byte{
 | 
					 | 
				
			||||||
	0x0a, 0x11, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x64, 0x6e, 0x73, 0x2e, 0x70, 0x72,
 | 
					 | 
				
			||||||
	0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x32, 0x0c, 0x0a, 0x0a, 0x44, 0x6e, 0x73, 0x53, 0x65,
 | 
					 | 
				
			||||||
	0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70,
 | 
					 | 
				
			||||||
	0x72, 0x6f, 0x74, 0x6f, 0x33,
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var file_service_dns_proto_goTypes = []interface{}{}
 | 
					 | 
				
			||||||
var file_service_dns_proto_depIdxs = []int32{
 | 
					 | 
				
			||||||
	0, // [0:0] is the sub-list for method output_type
 | 
					 | 
				
			||||||
	0, // [0:0] is the sub-list for method input_type
 | 
					 | 
				
			||||||
	0, // [0:0] is the sub-list for extension type_name
 | 
					 | 
				
			||||||
	0, // [0:0] is the sub-list for extension extendee
 | 
					 | 
				
			||||||
	0, // [0:0] is the sub-list for field type_name
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func init() { file_service_dns_proto_init() }
 | 
					 | 
				
			||||||
func file_service_dns_proto_init() {
 | 
					 | 
				
			||||||
	if File_service_dns_proto != nil {
 | 
					 | 
				
			||||||
		return
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	type x struct{}
 | 
					 | 
				
			||||||
	out := protoimpl.TypeBuilder{
 | 
					 | 
				
			||||||
		File: protoimpl.DescBuilder{
 | 
					 | 
				
			||||||
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 | 
					 | 
				
			||||||
			RawDescriptor: file_service_dns_proto_rawDesc,
 | 
					 | 
				
			||||||
			NumEnums:      0,
 | 
					 | 
				
			||||||
			NumMessages:   0,
 | 
					 | 
				
			||||||
			NumExtensions: 0,
 | 
					 | 
				
			||||||
			NumServices:   1,
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		GoTypes:           file_service_dns_proto_goTypes,
 | 
					 | 
				
			||||||
		DependencyIndexes: file_service_dns_proto_depIdxs,
 | 
					 | 
				
			||||||
	}.Build()
 | 
					 | 
				
			||||||
	File_service_dns_proto = out.File
 | 
					 | 
				
			||||||
	file_service_dns_proto_rawDesc = nil
 | 
					 | 
				
			||||||
	file_service_dns_proto_goTypes = nil
 | 
					 | 
				
			||||||
	file_service_dns_proto_depIdxs = nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Reference imports to suppress errors if they are not otherwise used.
 | 
					 | 
				
			||||||
var _ context.Context
 | 
					 | 
				
			||||||
var _ grpc.ClientConnInterface
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// This is a compile-time assertion to ensure that this generated file
 | 
					 | 
				
			||||||
// is compatible with the grpc package it is being compiled against.
 | 
					 | 
				
			||||||
const _ = grpc.SupportPackageIsVersion6
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// DnsServiceClient is the client API for DnsService service.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
 | 
					 | 
				
			||||||
type DnsServiceClient interface {
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
type dnsServiceClient struct {
 | 
					 | 
				
			||||||
	cc grpc.ClientConnInterface
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func NewDnsServiceClient(cc grpc.ClientConnInterface) DnsServiceClient {
 | 
					 | 
				
			||||||
	return &dnsServiceClient{cc}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// DnsServiceServer is the server API for DnsService service.
 | 
					 | 
				
			||||||
type DnsServiceServer interface {
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// UnimplementedDnsServiceServer can be embedded to have forward compatible implementations.
 | 
					 | 
				
			||||||
type UnimplementedDnsServiceServer struct {
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func RegisterDnsServiceServer(s *grpc.Server, srv DnsServiceServer) {
 | 
					 | 
				
			||||||
	s.RegisterService(&_DnsService_serviceDesc, srv)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var _DnsService_serviceDesc = grpc.ServiceDesc{
 | 
					 | 
				
			||||||
	ServiceName: "pb.DnsService",
 | 
					 | 
				
			||||||
	HandlerType: (*DnsServiceServer)(nil),
 | 
					 | 
				
			||||||
	Methods:     []grpc.MethodDesc{},
 | 
					 | 
				
			||||||
	Streams:     []grpc.StreamDesc{},
 | 
					 | 
				
			||||||
	Metadata:    "service_dns.proto",
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -7,9 +7,7 @@
 | 
				
			|||||||
package pb
 | 
					package pb
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	context "context"
 | 
					 | 
				
			||||||
	proto "github.com/golang/protobuf/proto"
 | 
						proto "github.com/golang/protobuf/proto"
 | 
				
			||||||
	grpc "google.golang.org/grpc"
 | 
					 | 
				
			||||||
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
 | 
						protoreflect "google.golang.org/protobuf/reflect/protoreflect"
 | 
				
			||||||
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 | 
						protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 | 
				
			||||||
	reflect "reflect"
 | 
						reflect "reflect"
 | 
				
			||||||
@@ -30,9 +28,8 @@ var File_service_log_proto protoreflect.FileDescriptor
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
var file_service_log_proto_rawDesc = []byte{
 | 
					var file_service_log_proto_rawDesc = []byte{
 | 
				
			||||||
	0x0a, 0x11, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6c, 0x6f, 0x67, 0x2e, 0x70, 0x72,
 | 
						0x0a, 0x11, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6c, 0x6f, 0x67, 0x2e, 0x70, 0x72,
 | 
				
			||||||
	0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x32, 0x0c, 0x0a, 0x0a, 0x4c, 0x6f, 0x67, 0x53, 0x65,
 | 
						0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62,
 | 
				
			||||||
	0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70,
 | 
						0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 | 
				
			||||||
	0x72, 0x6f, 0x74, 0x6f, 0x33,
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var file_service_log_proto_goTypes = []interface{}{}
 | 
					var file_service_log_proto_goTypes = []interface{}{}
 | 
				
			||||||
@@ -57,7 +54,7 @@ func file_service_log_proto_init() {
 | 
				
			|||||||
			NumEnums:      0,
 | 
								NumEnums:      0,
 | 
				
			||||||
			NumMessages:   0,
 | 
								NumMessages:   0,
 | 
				
			||||||
			NumExtensions: 0,
 | 
								NumExtensions: 0,
 | 
				
			||||||
			NumServices:   1,
 | 
								NumServices:   0,
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		GoTypes:           file_service_log_proto_goTypes,
 | 
							GoTypes:           file_service_log_proto_goTypes,
 | 
				
			||||||
		DependencyIndexes: file_service_log_proto_depIdxs,
 | 
							DependencyIndexes: file_service_log_proto_depIdxs,
 | 
				
			||||||
@@ -67,45 +64,3 @@ func file_service_log_proto_init() {
 | 
				
			|||||||
	file_service_log_proto_goTypes = nil
 | 
						file_service_log_proto_goTypes = nil
 | 
				
			||||||
	file_service_log_proto_depIdxs = nil
 | 
						file_service_log_proto_depIdxs = nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
// Reference imports to suppress errors if they are not otherwise used.
 | 
					 | 
				
			||||||
var _ context.Context
 | 
					 | 
				
			||||||
var _ grpc.ClientConnInterface
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// This is a compile-time assertion to ensure that this generated file
 | 
					 | 
				
			||||||
// is compatible with the grpc package it is being compiled against.
 | 
					 | 
				
			||||||
const _ = grpc.SupportPackageIsVersion6
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// LogServiceClient is the client API for LogService service.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
 | 
					 | 
				
			||||||
type LogServiceClient interface {
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
type logServiceClient struct {
 | 
					 | 
				
			||||||
	cc grpc.ClientConnInterface
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func NewLogServiceClient(cc grpc.ClientConnInterface) LogServiceClient {
 | 
					 | 
				
			||||||
	return &logServiceClient{cc}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// LogServiceServer is the server API for LogService service.
 | 
					 | 
				
			||||||
type LogServiceServer interface {
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// UnimplementedLogServiceServer can be embedded to have forward compatible implementations.
 | 
					 | 
				
			||||||
type UnimplementedLogServiceServer struct {
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func RegisterLogServiceServer(s *grpc.Server, srv LogServiceServer) {
 | 
					 | 
				
			||||||
	s.RegisterService(&_LogService_serviceDesc, srv)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var _LogService_serviceDesc = grpc.ServiceDesc{
 | 
					 | 
				
			||||||
	ServiceName: "pb.LogService",
 | 
					 | 
				
			||||||
	HandlerType: (*LogServiceServer)(nil),
 | 
					 | 
				
			||||||
	Methods:     []grpc.MethodDesc{},
 | 
					 | 
				
			||||||
	Streams:     []grpc.StreamDesc{},
 | 
					 | 
				
			||||||
	Metadata:    "service_log.proto",
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,111 +0,0 @@
 | 
				
			|||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
 | 
					 | 
				
			||||||
// versions:
 | 
					 | 
				
			||||||
// 	protoc-gen-go v1.25.0
 | 
					 | 
				
			||||||
// 	protoc        v3.12.3
 | 
					 | 
				
			||||||
// source: service_monitor.proto
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package pb
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	context "context"
 | 
					 | 
				
			||||||
	proto "github.com/golang/protobuf/proto"
 | 
					 | 
				
			||||||
	grpc "google.golang.org/grpc"
 | 
					 | 
				
			||||||
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
 | 
					 | 
				
			||||||
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 | 
					 | 
				
			||||||
	reflect "reflect"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const (
 | 
					 | 
				
			||||||
	// Verify that this generated code is sufficiently up-to-date.
 | 
					 | 
				
			||||||
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
 | 
					 | 
				
			||||||
	// Verify that runtime/protoimpl is sufficiently up-to-date.
 | 
					 | 
				
			||||||
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// This is a compile-time assertion that a sufficiently up-to-date version
 | 
					 | 
				
			||||||
// of the legacy proto package is being used.
 | 
					 | 
				
			||||||
const _ = proto.ProtoPackageIsVersion4
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var File_service_monitor_proto protoreflect.FileDescriptor
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var file_service_monitor_proto_rawDesc = []byte{
 | 
					 | 
				
			||||||
	0x0a, 0x15, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f,
 | 
					 | 
				
			||||||
	0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x32, 0x10, 0x0a, 0x0e, 0x4d,
 | 
					 | 
				
			||||||
	0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x06, 0x5a,
 | 
					 | 
				
			||||||
	0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var file_service_monitor_proto_goTypes = []interface{}{}
 | 
					 | 
				
			||||||
var file_service_monitor_proto_depIdxs = []int32{
 | 
					 | 
				
			||||||
	0, // [0:0] is the sub-list for method output_type
 | 
					 | 
				
			||||||
	0, // [0:0] is the sub-list for method input_type
 | 
					 | 
				
			||||||
	0, // [0:0] is the sub-list for extension type_name
 | 
					 | 
				
			||||||
	0, // [0:0] is the sub-list for extension extendee
 | 
					 | 
				
			||||||
	0, // [0:0] is the sub-list for field type_name
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func init() { file_service_monitor_proto_init() }
 | 
					 | 
				
			||||||
func file_service_monitor_proto_init() {
 | 
					 | 
				
			||||||
	if File_service_monitor_proto != nil {
 | 
					 | 
				
			||||||
		return
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	type x struct{}
 | 
					 | 
				
			||||||
	out := protoimpl.TypeBuilder{
 | 
					 | 
				
			||||||
		File: protoimpl.DescBuilder{
 | 
					 | 
				
			||||||
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 | 
					 | 
				
			||||||
			RawDescriptor: file_service_monitor_proto_rawDesc,
 | 
					 | 
				
			||||||
			NumEnums:      0,
 | 
					 | 
				
			||||||
			NumMessages:   0,
 | 
					 | 
				
			||||||
			NumExtensions: 0,
 | 
					 | 
				
			||||||
			NumServices:   1,
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		GoTypes:           file_service_monitor_proto_goTypes,
 | 
					 | 
				
			||||||
		DependencyIndexes: file_service_monitor_proto_depIdxs,
 | 
					 | 
				
			||||||
	}.Build()
 | 
					 | 
				
			||||||
	File_service_monitor_proto = out.File
 | 
					 | 
				
			||||||
	file_service_monitor_proto_rawDesc = nil
 | 
					 | 
				
			||||||
	file_service_monitor_proto_goTypes = nil
 | 
					 | 
				
			||||||
	file_service_monitor_proto_depIdxs = nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Reference imports to suppress errors if they are not otherwise used.
 | 
					 | 
				
			||||||
var _ context.Context
 | 
					 | 
				
			||||||
var _ grpc.ClientConnInterface
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// This is a compile-time assertion to ensure that this generated file
 | 
					 | 
				
			||||||
// is compatible with the grpc package it is being compiled against.
 | 
					 | 
				
			||||||
const _ = grpc.SupportPackageIsVersion6
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// MonitorServiceClient is the client API for MonitorService service.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
 | 
					 | 
				
			||||||
type MonitorServiceClient interface {
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
type monitorServiceClient struct {
 | 
					 | 
				
			||||||
	cc grpc.ClientConnInterface
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func NewMonitorServiceClient(cc grpc.ClientConnInterface) MonitorServiceClient {
 | 
					 | 
				
			||||||
	return &monitorServiceClient{cc}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// MonitorServiceServer is the server API for MonitorService service.
 | 
					 | 
				
			||||||
type MonitorServiceServer interface {
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// UnimplementedMonitorServiceServer can be embedded to have forward compatible implementations.
 | 
					 | 
				
			||||||
type UnimplementedMonitorServiceServer struct {
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func RegisterMonitorServiceServer(s *grpc.Server, srv MonitorServiceServer) {
 | 
					 | 
				
			||||||
	s.RegisterService(&_MonitorService_serviceDesc, srv)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var _MonitorService_serviceDesc = grpc.ServiceDesc{
 | 
					 | 
				
			||||||
	ServiceName: "pb.MonitorService",
 | 
					 | 
				
			||||||
	HandlerType: (*MonitorServiceServer)(nil),
 | 
					 | 
				
			||||||
	Methods:     []grpc.MethodDesc{},
 | 
					 | 
				
			||||||
	Streams:     []grpc.StreamDesc{},
 | 
					 | 
				
			||||||
	Metadata:    "service_monitor.proto",
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -29,16 +29,18 @@ const (
 | 
				
			|||||||
// of the legacy proto package is being used.
 | 
					// of the legacy proto package is being used.
 | 
				
			||||||
const _ = proto.ProtoPackageIsVersion4
 | 
					const _ = proto.ProtoPackageIsVersion4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ConfigRequest struct {
 | 
					// 创建节点
 | 
				
			||||||
 | 
					type CreateNodeRequest struct {
 | 
				
			||||||
	state         protoimpl.MessageState
 | 
						state         protoimpl.MessageState
 | 
				
			||||||
	sizeCache     protoimpl.SizeCache
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
	unknownFields protoimpl.UnknownFields
 | 
						unknownFields protoimpl.UnknownFields
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	NodeId string `protobuf:"bytes,1,opt,name=nodeId,proto3" json:"nodeId,omitempty"`
 | 
						Name      string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 | 
				
			||||||
 | 
						ClusterId int64  `protobuf:"varint,2,opt,name=clusterId,proto3" json:"clusterId,omitempty"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *ConfigRequest) Reset() {
 | 
					func (x *CreateNodeRequest) Reset() {
 | 
				
			||||||
	*x = ConfigRequest{}
 | 
						*x = CreateNodeRequest{}
 | 
				
			||||||
	if protoimpl.UnsafeEnabled {
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
		mi := &file_service_node_proto_msgTypes[0]
 | 
							mi := &file_service_node_proto_msgTypes[0]
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
@@ -46,13 +48,13 @@ func (x *ConfigRequest) Reset() {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *ConfigRequest) String() string {
 | 
					func (x *CreateNodeRequest) String() string {
 | 
				
			||||||
	return protoimpl.X.MessageStringOf(x)
 | 
						return protoimpl.X.MessageStringOf(x)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (*ConfigRequest) ProtoMessage() {}
 | 
					func (*CreateNodeRequest) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *ConfigRequest) ProtoReflect() protoreflect.Message {
 | 
					func (x *CreateNodeRequest) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
	mi := &file_service_node_proto_msgTypes[0]
 | 
						mi := &file_service_node_proto_msgTypes[0]
 | 
				
			||||||
	if protoimpl.UnsafeEnabled && x != nil {
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
@@ -64,28 +66,35 @@ func (x *ConfigRequest) ProtoReflect() protoreflect.Message {
 | 
				
			|||||||
	return mi.MessageOf(x)
 | 
						return mi.MessageOf(x)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Deprecated: Use ConfigRequest.ProtoReflect.Descriptor instead.
 | 
					// Deprecated: Use CreateNodeRequest.ProtoReflect.Descriptor instead.
 | 
				
			||||||
func (*ConfigRequest) Descriptor() ([]byte, []int) {
 | 
					func (*CreateNodeRequest) Descriptor() ([]byte, []int) {
 | 
				
			||||||
	return file_service_node_proto_rawDescGZIP(), []int{0}
 | 
						return file_service_node_proto_rawDescGZIP(), []int{0}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *ConfigRequest) GetNodeId() string {
 | 
					func (x *CreateNodeRequest) GetName() string {
 | 
				
			||||||
	if x != nil {
 | 
						if x != nil {
 | 
				
			||||||
		return x.NodeId
 | 
							return x.Name
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return ""
 | 
						return ""
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ConfigResponse struct {
 | 
					func (x *CreateNodeRequest) GetClusterId() int64 {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.ClusterId
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type CreateNodeResponse struct {
 | 
				
			||||||
	state         protoimpl.MessageState
 | 
						state         protoimpl.MessageState
 | 
				
			||||||
	sizeCache     protoimpl.SizeCache
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
	unknownFields protoimpl.UnknownFields
 | 
						unknownFields protoimpl.UnknownFields
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
 | 
						NodeId int64 `protobuf:"varint,1,opt,name=nodeId,proto3" json:"nodeId,omitempty"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *ConfigResponse) Reset() {
 | 
					func (x *CreateNodeResponse) Reset() {
 | 
				
			||||||
	*x = ConfigResponse{}
 | 
						*x = CreateNodeResponse{}
 | 
				
			||||||
	if protoimpl.UnsafeEnabled {
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
		mi := &file_service_node_proto_msgTypes[1]
 | 
							mi := &file_service_node_proto_msgTypes[1]
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
@@ -93,13 +102,13 @@ func (x *ConfigResponse) Reset() {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *ConfigResponse) String() string {
 | 
					func (x *CreateNodeResponse) String() string {
 | 
				
			||||||
	return protoimpl.X.MessageStringOf(x)
 | 
						return protoimpl.X.MessageStringOf(x)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (*ConfigResponse) ProtoMessage() {}
 | 
					func (*CreateNodeResponse) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *ConfigResponse) ProtoReflect() protoreflect.Message {
 | 
					func (x *CreateNodeResponse) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
	mi := &file_service_node_proto_msgTypes[1]
 | 
						mi := &file_service_node_proto_msgTypes[1]
 | 
				
			||||||
	if protoimpl.UnsafeEnabled && x != nil {
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
@@ -111,33 +120,250 @@ func (x *ConfigResponse) ProtoReflect() protoreflect.Message {
 | 
				
			|||||||
	return mi.MessageOf(x)
 | 
						return mi.MessageOf(x)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Deprecated: Use ConfigResponse.ProtoReflect.Descriptor instead.
 | 
					// Deprecated: Use CreateNodeResponse.ProtoReflect.Descriptor instead.
 | 
				
			||||||
func (*ConfigResponse) Descriptor() ([]byte, []int) {
 | 
					func (*CreateNodeResponse) Descriptor() ([]byte, []int) {
 | 
				
			||||||
	return file_service_node_proto_rawDescGZIP(), []int{1}
 | 
						return file_service_node_proto_rawDescGZIP(), []int{1}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *ConfigResponse) GetId() string {
 | 
					func (x *CreateNodeResponse) GetNodeId() int64 {
 | 
				
			||||||
	if x != nil {
 | 
						if x != nil {
 | 
				
			||||||
		return x.Id
 | 
							return x.NodeId
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return ""
 | 
						return 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 节点数量
 | 
				
			||||||
 | 
					type CountAllEnabledNodesRequest struct {
 | 
				
			||||||
 | 
						state         protoimpl.MessageState
 | 
				
			||||||
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
 | 
						unknownFields protoimpl.UnknownFields
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *CountAllEnabledNodesRequest) Reset() {
 | 
				
			||||||
 | 
						*x = CountAllEnabledNodesRequest{}
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
 | 
							mi := &file_service_node_proto_msgTypes[2]
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *CountAllEnabledNodesRequest) String() string {
 | 
				
			||||||
 | 
						return protoimpl.X.MessageStringOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (*CountAllEnabledNodesRequest) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *CountAllEnabledNodesRequest) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
 | 
						mi := &file_service_node_proto_msgTypes[2]
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
 | 
								ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return ms
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return mi.MessageOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Deprecated: Use CountAllEnabledNodesRequest.ProtoReflect.Descriptor instead.
 | 
				
			||||||
 | 
					func (*CountAllEnabledNodesRequest) Descriptor() ([]byte, []int) {
 | 
				
			||||||
 | 
						return file_service_node_proto_rawDescGZIP(), []int{2}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type CountAllEnabledNodesResponse struct {
 | 
				
			||||||
 | 
						state         protoimpl.MessageState
 | 
				
			||||||
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
 | 
						unknownFields protoimpl.UnknownFields
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Count int64 `protobuf:"varint,1,opt,name=count,proto3" json:"count,omitempty"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *CountAllEnabledNodesResponse) Reset() {
 | 
				
			||||||
 | 
						*x = CountAllEnabledNodesResponse{}
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
 | 
							mi := &file_service_node_proto_msgTypes[3]
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *CountAllEnabledNodesResponse) String() string {
 | 
				
			||||||
 | 
						return protoimpl.X.MessageStringOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (*CountAllEnabledNodesResponse) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *CountAllEnabledNodesResponse) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
 | 
						mi := &file_service_node_proto_msgTypes[3]
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
 | 
								ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return ms
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return mi.MessageOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Deprecated: Use CountAllEnabledNodesResponse.ProtoReflect.Descriptor instead.
 | 
				
			||||||
 | 
					func (*CountAllEnabledNodesResponse) Descriptor() ([]byte, []int) {
 | 
				
			||||||
 | 
						return file_service_node_proto_rawDescGZIP(), []int{3}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *CountAllEnabledNodesResponse) GetCount() int64 {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Count
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 列出单页节点
 | 
				
			||||||
 | 
					type ListEnabledNodesRequest struct {
 | 
				
			||||||
 | 
						state         protoimpl.MessageState
 | 
				
			||||||
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
 | 
						unknownFields protoimpl.UnknownFields
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Offset int64 `protobuf:"varint,1,opt,name=offset,proto3" json:"offset,omitempty"`
 | 
				
			||||||
 | 
						Size   int64 `protobuf:"varint,2,opt,name=size,proto3" json:"size,omitempty"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *ListEnabledNodesRequest) Reset() {
 | 
				
			||||||
 | 
						*x = ListEnabledNodesRequest{}
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
 | 
							mi := &file_service_node_proto_msgTypes[4]
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *ListEnabledNodesRequest) String() string {
 | 
				
			||||||
 | 
						return protoimpl.X.MessageStringOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (*ListEnabledNodesRequest) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *ListEnabledNodesRequest) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
 | 
						mi := &file_service_node_proto_msgTypes[4]
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
 | 
								ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return ms
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return mi.MessageOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Deprecated: Use ListEnabledNodesRequest.ProtoReflect.Descriptor instead.
 | 
				
			||||||
 | 
					func (*ListEnabledNodesRequest) Descriptor() ([]byte, []int) {
 | 
				
			||||||
 | 
						return file_service_node_proto_rawDescGZIP(), []int{4}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *ListEnabledNodesRequest) GetOffset() int64 {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Offset
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *ListEnabledNodesRequest) GetSize() int64 {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Size
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type ListEnabledNodesResponse struct {
 | 
				
			||||||
 | 
						state         protoimpl.MessageState
 | 
				
			||||||
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
 | 
						unknownFields protoimpl.UnknownFields
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Nodes []*Node `protobuf:"bytes,1,rep,name=nodes,proto3" json:"nodes,omitempty"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *ListEnabledNodesResponse) Reset() {
 | 
				
			||||||
 | 
						*x = ListEnabledNodesResponse{}
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
 | 
							mi := &file_service_node_proto_msgTypes[5]
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *ListEnabledNodesResponse) String() string {
 | 
				
			||||||
 | 
						return protoimpl.X.MessageStringOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (*ListEnabledNodesResponse) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *ListEnabledNodesResponse) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
 | 
						mi := &file_service_node_proto_msgTypes[5]
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
 | 
								ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return ms
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return mi.MessageOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Deprecated: Use ListEnabledNodesResponse.ProtoReflect.Descriptor instead.
 | 
				
			||||||
 | 
					func (*ListEnabledNodesResponse) Descriptor() ([]byte, []int) {
 | 
				
			||||||
 | 
						return file_service_node_proto_rawDescGZIP(), []int{5}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *ListEnabledNodesResponse) GetNodes() []*Node {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Nodes
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var File_service_node_proto protoreflect.FileDescriptor
 | 
					var File_service_node_proto protoreflect.FileDescriptor
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var file_service_node_proto_rawDesc = []byte{
 | 
					var file_service_node_proto_rawDesc = []byte{
 | 
				
			||||||
	0x0a, 0x12, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70,
 | 
						0x0a, 0x12, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70,
 | 
				
			||||||
	0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x22, 0x27, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x66,
 | 
						0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x1a, 0x10, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f,
 | 
				
			||||||
	0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x64,
 | 
						0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x45, 0x0a, 0x11, 0x43, 0x72,
 | 
				
			||||||
	0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49,
 | 
						0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
 | 
				
			||||||
	0x64, 0x22, 0x20, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f,
 | 
						0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
 | 
				
			||||||
	0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
 | 
						0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64,
 | 
				
			||||||
	0x02, 0x69, 0x64, 0x32, 0x40, 0x0a, 0x0b, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69,
 | 
						0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49,
 | 
				
			||||||
	0x63, 0x65, 0x12, 0x31, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x11, 0x2e, 0x70,
 | 
						0x64, 0x22, 0x2c, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52,
 | 
				
			||||||
	0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
 | 
						0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49,
 | 
				
			||||||
	0x12, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f,
 | 
						0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x22,
 | 
				
			||||||
	0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70,
 | 
						0x1d, 0x0a, 0x1b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c,
 | 
				
			||||||
	0x72, 0x6f, 0x74, 0x6f, 0x33,
 | 
						0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x34,
 | 
				
			||||||
 | 
						0x0a, 0x1c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65,
 | 
				
			||||||
 | 
						0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14,
 | 
				
			||||||
 | 
						0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63,
 | 
				
			||||||
 | 
						0x6f, 0x75, 0x6e, 0x74, 0x22, 0x45, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62,
 | 
				
			||||||
 | 
						0x6c, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
 | 
				
			||||||
 | 
						0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
 | 
				
			||||||
 | 
						0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18,
 | 
				
			||||||
 | 
						0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x3a, 0x0a, 0x18, 0x4c,
 | 
				
			||||||
 | 
						0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52,
 | 
				
			||||||
 | 
						0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73,
 | 
				
			||||||
 | 
						0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65,
 | 
				
			||||||
 | 
						0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x32, 0xf4, 0x01, 0x0a, 0x0b, 0x4e, 0x6f, 0x64, 0x65,
 | 
				
			||||||
 | 
						0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74,
 | 
				
			||||||
 | 
						0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74,
 | 
				
			||||||
 | 
						0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x70,
 | 
				
			||||||
 | 
						0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70,
 | 
				
			||||||
 | 
						0x6f, 0x6e, 0x73, 0x65, 0x12, 0x59, 0x0a, 0x14, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c,
 | 
				
			||||||
 | 
						0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1f, 0x2e, 0x70,
 | 
				
			||||||
 | 
						0x62, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65,
 | 
				
			||||||
 | 
						0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e,
 | 
				
			||||||
 | 
						0x70, 0x62, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c,
 | 
				
			||||||
 | 
						0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
 | 
				
			||||||
 | 
						0x4d, 0x0a, 0x10, 0x6c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4e, 0x6f,
 | 
				
			||||||
 | 
						0x64, 0x65, 0x73, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61,
 | 
				
			||||||
 | 
						0x62, 0x6c, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
 | 
				
			||||||
 | 
						0x1a, 0x1c, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65,
 | 
				
			||||||
 | 
						0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x06,
 | 
				
			||||||
 | 
						0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var (
 | 
					var (
 | 
				
			||||||
@@ -152,19 +378,29 @@ func file_service_node_proto_rawDescGZIP() []byte {
 | 
				
			|||||||
	return file_service_node_proto_rawDescData
 | 
						return file_service_node_proto_rawDescData
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var file_service_node_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
 | 
					var file_service_node_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
 | 
				
			||||||
var file_service_node_proto_goTypes = []interface{}{
 | 
					var file_service_node_proto_goTypes = []interface{}{
 | 
				
			||||||
	(*ConfigRequest)(nil),  // 0: pb.ConfigRequest
 | 
						(*CreateNodeRequest)(nil),            // 0: pb.CreateNodeRequest
 | 
				
			||||||
	(*ConfigResponse)(nil), // 1: pb.ConfigResponse
 | 
						(*CreateNodeResponse)(nil),           // 1: pb.CreateNodeResponse
 | 
				
			||||||
 | 
						(*CountAllEnabledNodesRequest)(nil),  // 2: pb.CountAllEnabledNodesRequest
 | 
				
			||||||
 | 
						(*CountAllEnabledNodesResponse)(nil), // 3: pb.CountAllEnabledNodesResponse
 | 
				
			||||||
 | 
						(*ListEnabledNodesRequest)(nil),      // 4: pb.ListEnabledNodesRequest
 | 
				
			||||||
 | 
						(*ListEnabledNodesResponse)(nil),     // 5: pb.ListEnabledNodesResponse
 | 
				
			||||||
 | 
						(*Node)(nil),                         // 6: pb.Node
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
var file_service_node_proto_depIdxs = []int32{
 | 
					var file_service_node_proto_depIdxs = []int32{
 | 
				
			||||||
	0, // 0: pb.NodeService.config:input_type -> pb.ConfigRequest
 | 
						6, // 0: pb.ListEnabledNodesResponse.nodes:type_name -> pb.Node
 | 
				
			||||||
	1, // 1: pb.NodeService.config:output_type -> pb.ConfigResponse
 | 
						0, // 1: pb.NodeService.createNode:input_type -> pb.CreateNodeRequest
 | 
				
			||||||
	1, // [1:2] is the sub-list for method output_type
 | 
						2, // 2: pb.NodeService.countAllEnabledNodes:input_type -> pb.CountAllEnabledNodesRequest
 | 
				
			||||||
	0, // [0:1] is the sub-list for method input_type
 | 
						4, // 3: pb.NodeService.listEnabledNodes:input_type -> pb.ListEnabledNodesRequest
 | 
				
			||||||
	0, // [0:0] is the sub-list for extension type_name
 | 
						1, // 4: pb.NodeService.createNode:output_type -> pb.CreateNodeResponse
 | 
				
			||||||
	0, // [0:0] is the sub-list for extension extendee
 | 
						3, // 5: pb.NodeService.countAllEnabledNodes:output_type -> pb.CountAllEnabledNodesResponse
 | 
				
			||||||
	0, // [0:0] is the sub-list for field type_name
 | 
						5, // 6: pb.NodeService.listEnabledNodes:output_type -> pb.ListEnabledNodesResponse
 | 
				
			||||||
 | 
						4, // [4:7] is the sub-list for method output_type
 | 
				
			||||||
 | 
						1, // [1:4] is the sub-list for method input_type
 | 
				
			||||||
 | 
						1, // [1:1] is the sub-list for extension type_name
 | 
				
			||||||
 | 
						1, // [1:1] is the sub-list for extension extendee
 | 
				
			||||||
 | 
						0, // [0:1] is the sub-list for field type_name
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func init() { file_service_node_proto_init() }
 | 
					func init() { file_service_node_proto_init() }
 | 
				
			||||||
@@ -172,9 +408,10 @@ func file_service_node_proto_init() {
 | 
				
			|||||||
	if File_service_node_proto != nil {
 | 
						if File_service_node_proto != nil {
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						file_model_node_proto_init()
 | 
				
			||||||
	if !protoimpl.UnsafeEnabled {
 | 
						if !protoimpl.UnsafeEnabled {
 | 
				
			||||||
		file_service_node_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
 | 
							file_service_node_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
 | 
				
			||||||
			switch v := v.(*ConfigRequest); i {
 | 
								switch v := v.(*CreateNodeRequest); i {
 | 
				
			||||||
			case 0:
 | 
								case 0:
 | 
				
			||||||
				return &v.state
 | 
									return &v.state
 | 
				
			||||||
			case 1:
 | 
								case 1:
 | 
				
			||||||
@@ -186,7 +423,55 @@ func file_service_node_proto_init() {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		file_service_node_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
 | 
							file_service_node_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
 | 
				
			||||||
			switch v := v.(*ConfigResponse); i {
 | 
								switch v := v.(*CreateNodeResponse); i {
 | 
				
			||||||
 | 
								case 0:
 | 
				
			||||||
 | 
									return &v.state
 | 
				
			||||||
 | 
								case 1:
 | 
				
			||||||
 | 
									return &v.sizeCache
 | 
				
			||||||
 | 
								case 2:
 | 
				
			||||||
 | 
									return &v.unknownFields
 | 
				
			||||||
 | 
								default:
 | 
				
			||||||
 | 
									return nil
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							file_service_node_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
 | 
				
			||||||
 | 
								switch v := v.(*CountAllEnabledNodesRequest); i {
 | 
				
			||||||
 | 
								case 0:
 | 
				
			||||||
 | 
									return &v.state
 | 
				
			||||||
 | 
								case 1:
 | 
				
			||||||
 | 
									return &v.sizeCache
 | 
				
			||||||
 | 
								case 2:
 | 
				
			||||||
 | 
									return &v.unknownFields
 | 
				
			||||||
 | 
								default:
 | 
				
			||||||
 | 
									return nil
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							file_service_node_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
 | 
				
			||||||
 | 
								switch v := v.(*CountAllEnabledNodesResponse); i {
 | 
				
			||||||
 | 
								case 0:
 | 
				
			||||||
 | 
									return &v.state
 | 
				
			||||||
 | 
								case 1:
 | 
				
			||||||
 | 
									return &v.sizeCache
 | 
				
			||||||
 | 
								case 2:
 | 
				
			||||||
 | 
									return &v.unknownFields
 | 
				
			||||||
 | 
								default:
 | 
				
			||||||
 | 
									return nil
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							file_service_node_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
 | 
				
			||||||
 | 
								switch v := v.(*ListEnabledNodesRequest); i {
 | 
				
			||||||
 | 
								case 0:
 | 
				
			||||||
 | 
									return &v.state
 | 
				
			||||||
 | 
								case 1:
 | 
				
			||||||
 | 
									return &v.sizeCache
 | 
				
			||||||
 | 
								case 2:
 | 
				
			||||||
 | 
									return &v.unknownFields
 | 
				
			||||||
 | 
								default:
 | 
				
			||||||
 | 
									return nil
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							file_service_node_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
 | 
				
			||||||
 | 
								switch v := v.(*ListEnabledNodesResponse); i {
 | 
				
			||||||
			case 0:
 | 
								case 0:
 | 
				
			||||||
				return &v.state
 | 
									return &v.state
 | 
				
			||||||
			case 1:
 | 
								case 1:
 | 
				
			||||||
@@ -204,7 +489,7 @@ func file_service_node_proto_init() {
 | 
				
			|||||||
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 | 
								GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 | 
				
			||||||
			RawDescriptor: file_service_node_proto_rawDesc,
 | 
								RawDescriptor: file_service_node_proto_rawDesc,
 | 
				
			||||||
			NumEnums:      0,
 | 
								NumEnums:      0,
 | 
				
			||||||
			NumMessages:   2,
 | 
								NumMessages:   6,
 | 
				
			||||||
			NumExtensions: 0,
 | 
								NumExtensions: 0,
 | 
				
			||||||
			NumServices:   1,
 | 
								NumServices:   1,
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
@@ -230,7 +515,12 @@ const _ = grpc.SupportPackageIsVersion6
 | 
				
			|||||||
//
 | 
					//
 | 
				
			||||||
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
 | 
					// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
 | 
				
			||||||
type NodeServiceClient interface {
 | 
					type NodeServiceClient interface {
 | 
				
			||||||
	Config(ctx context.Context, in *ConfigRequest, opts ...grpc.CallOption) (*ConfigResponse, error)
 | 
						// 创建节点
 | 
				
			||||||
 | 
						CreateNode(ctx context.Context, in *CreateNodeRequest, opts ...grpc.CallOption) (*CreateNodeResponse, error)
 | 
				
			||||||
 | 
						// 节点数量
 | 
				
			||||||
 | 
						CountAllEnabledNodes(ctx context.Context, in *CountAllEnabledNodesRequest, opts ...grpc.CallOption) (*CountAllEnabledNodesResponse, error)
 | 
				
			||||||
 | 
						// 列出单页节点
 | 
				
			||||||
 | 
						ListEnabledNodes(ctx context.Context, in *ListEnabledNodesRequest, opts ...grpc.CallOption) (*ListEnabledNodesResponse, error)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type nodeServiceClient struct {
 | 
					type nodeServiceClient struct {
 | 
				
			||||||
@@ -241,9 +531,27 @@ func NewNodeServiceClient(cc grpc.ClientConnInterface) NodeServiceClient {
 | 
				
			|||||||
	return &nodeServiceClient{cc}
 | 
						return &nodeServiceClient{cc}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (c *nodeServiceClient) Config(ctx context.Context, in *ConfigRequest, opts ...grpc.CallOption) (*ConfigResponse, error) {
 | 
					func (c *nodeServiceClient) CreateNode(ctx context.Context, in *CreateNodeRequest, opts ...grpc.CallOption) (*CreateNodeResponse, error) {
 | 
				
			||||||
	out := new(ConfigResponse)
 | 
						out := new(CreateNodeResponse)
 | 
				
			||||||
	err := c.cc.Invoke(ctx, "/pb.NodeService/config", in, out, opts...)
 | 
						err := c.cc.Invoke(ctx, "/pb.NodeService/createNode", in, out, opts...)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return out, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (c *nodeServiceClient) CountAllEnabledNodes(ctx context.Context, in *CountAllEnabledNodesRequest, opts ...grpc.CallOption) (*CountAllEnabledNodesResponse, error) {
 | 
				
			||||||
 | 
						out := new(CountAllEnabledNodesResponse)
 | 
				
			||||||
 | 
						err := c.cc.Invoke(ctx, "/pb.NodeService/countAllEnabledNodes", in, out, opts...)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return out, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (c *nodeServiceClient) ListEnabledNodes(ctx context.Context, in *ListEnabledNodesRequest, opts ...grpc.CallOption) (*ListEnabledNodesResponse, error) {
 | 
				
			||||||
 | 
						out := new(ListEnabledNodesResponse)
 | 
				
			||||||
 | 
						err := c.cc.Invoke(ctx, "/pb.NodeService/listEnabledNodes", in, out, opts...)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -252,35 +560,82 @@ func (c *nodeServiceClient) Config(ctx context.Context, in *ConfigRequest, opts
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// NodeServiceServer is the server API for NodeService service.
 | 
					// NodeServiceServer is the server API for NodeService service.
 | 
				
			||||||
type NodeServiceServer interface {
 | 
					type NodeServiceServer interface {
 | 
				
			||||||
	Config(context.Context, *ConfigRequest) (*ConfigResponse, error)
 | 
						// 创建节点
 | 
				
			||||||
 | 
						CreateNode(context.Context, *CreateNodeRequest) (*CreateNodeResponse, error)
 | 
				
			||||||
 | 
						// 节点数量
 | 
				
			||||||
 | 
						CountAllEnabledNodes(context.Context, *CountAllEnabledNodesRequest) (*CountAllEnabledNodesResponse, error)
 | 
				
			||||||
 | 
						// 列出单页节点
 | 
				
			||||||
 | 
						ListEnabledNodes(context.Context, *ListEnabledNodesRequest) (*ListEnabledNodesResponse, error)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// UnimplementedNodeServiceServer can be embedded to have forward compatible implementations.
 | 
					// UnimplementedNodeServiceServer can be embedded to have forward compatible implementations.
 | 
				
			||||||
type UnimplementedNodeServiceServer struct {
 | 
					type UnimplementedNodeServiceServer struct {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (*UnimplementedNodeServiceServer) Config(context.Context, *ConfigRequest) (*ConfigResponse, error) {
 | 
					func (*UnimplementedNodeServiceServer) CreateNode(context.Context, *CreateNodeRequest) (*CreateNodeResponse, error) {
 | 
				
			||||||
	return nil, status.Errorf(codes.Unimplemented, "method Config not implemented")
 | 
						return nil, status.Errorf(codes.Unimplemented, "method CreateNode not implemented")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					func (*UnimplementedNodeServiceServer) CountAllEnabledNodes(context.Context, *CountAllEnabledNodesRequest) (*CountAllEnabledNodesResponse, error) {
 | 
				
			||||||
 | 
						return nil, status.Errorf(codes.Unimplemented, "method CountAllEnabledNodes not implemented")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					func (*UnimplementedNodeServiceServer) ListEnabledNodes(context.Context, *ListEnabledNodesRequest) (*ListEnabledNodesResponse, error) {
 | 
				
			||||||
 | 
						return nil, status.Errorf(codes.Unimplemented, "method ListEnabledNodes not implemented")
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func RegisterNodeServiceServer(s *grpc.Server, srv NodeServiceServer) {
 | 
					func RegisterNodeServiceServer(s *grpc.Server, srv NodeServiceServer) {
 | 
				
			||||||
	s.RegisterService(&_NodeService_serviceDesc, srv)
 | 
						s.RegisterService(&_NodeService_serviceDesc, srv)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func _NodeService_Config_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 | 
					func _NodeService_CreateNode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 | 
				
			||||||
	in := new(ConfigRequest)
 | 
						in := new(CreateNodeRequest)
 | 
				
			||||||
	if err := dec(in); err != nil {
 | 
						if err := dec(in); err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if interceptor == nil {
 | 
						if interceptor == nil {
 | 
				
			||||||
		return srv.(NodeServiceServer).Config(ctx, in)
 | 
							return srv.(NodeServiceServer).CreateNode(ctx, in)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	info := &grpc.UnaryServerInfo{
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
		Server:     srv,
 | 
							Server:     srv,
 | 
				
			||||||
		FullMethod: "/pb.NodeService/Config",
 | 
							FullMethod: "/pb.NodeService/CreateNode",
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
		return srv.(NodeServiceServer).Config(ctx, req.(*ConfigRequest))
 | 
							return srv.(NodeServiceServer).CreateNode(ctx, req.(*CreateNodeRequest))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return interceptor(ctx, in, info, handler)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func _NodeService_CountAllEnabledNodes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 | 
				
			||||||
 | 
						in := new(CountAllEnabledNodesRequest)
 | 
				
			||||||
 | 
						if err := dec(in); err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if interceptor == nil {
 | 
				
			||||||
 | 
							return srv.(NodeServiceServer).CountAllEnabledNodes(ctx, in)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
 | 
							Server:     srv,
 | 
				
			||||||
 | 
							FullMethod: "/pb.NodeService/CountAllEnabledNodes",
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
 | 
							return srv.(NodeServiceServer).CountAllEnabledNodes(ctx, req.(*CountAllEnabledNodesRequest))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return interceptor(ctx, in, info, handler)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func _NodeService_ListEnabledNodes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 | 
				
			||||||
 | 
						in := new(ListEnabledNodesRequest)
 | 
				
			||||||
 | 
						if err := dec(in); err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if interceptor == nil {
 | 
				
			||||||
 | 
							return srv.(NodeServiceServer).ListEnabledNodes(ctx, in)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
 | 
							Server:     srv,
 | 
				
			||||||
 | 
							FullMethod: "/pb.NodeService/ListEnabledNodes",
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
 | 
							return srv.(NodeServiceServer).ListEnabledNodes(ctx, req.(*ListEnabledNodesRequest))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return interceptor(ctx, in, info, handler)
 | 
						return interceptor(ctx, in, info, handler)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -290,8 +645,16 @@ var _NodeService_serviceDesc = grpc.ServiceDesc{
 | 
				
			|||||||
	HandlerType: (*NodeServiceServer)(nil),
 | 
						HandlerType: (*NodeServiceServer)(nil),
 | 
				
			||||||
	Methods: []grpc.MethodDesc{
 | 
						Methods: []grpc.MethodDesc{
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			MethodName: "config",
 | 
								MethodName: "createNode",
 | 
				
			||||||
			Handler:    _NodeService_Config_Handler,
 | 
								Handler:    _NodeService_CreateNode_Handler,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								MethodName: "countAllEnabledNodes",
 | 
				
			||||||
 | 
								Handler:    _NodeService_CountAllEnabledNodes_Handler,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								MethodName: "listEnabledNodes",
 | 
				
			||||||
 | 
								Handler:    _NodeService_ListEnabledNodes_Handler,
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	Streams:  []grpc.StreamDesc{},
 | 
						Streams:  []grpc.StreamDesc{},
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										304
									
								
								internal/rpc/pb/service_node_cluster.pb.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										304
									
								
								internal/rpc/pb/service_node_cluster.pb.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,304 @@
 | 
				
			|||||||
 | 
					// Code generated by protoc-gen-go. DO NOT EDIT.
 | 
				
			||||||
 | 
					// versions:
 | 
				
			||||||
 | 
					// 	protoc-gen-go v1.25.0
 | 
				
			||||||
 | 
					// 	protoc        v3.12.3
 | 
				
			||||||
 | 
					// source: service_node_cluster.proto
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package pb
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						context "context"
 | 
				
			||||||
 | 
						proto "github.com/golang/protobuf/proto"
 | 
				
			||||||
 | 
						grpc "google.golang.org/grpc"
 | 
				
			||||||
 | 
						codes "google.golang.org/grpc/codes"
 | 
				
			||||||
 | 
						status "google.golang.org/grpc/status"
 | 
				
			||||||
 | 
						protoreflect "google.golang.org/protobuf/reflect/protoreflect"
 | 
				
			||||||
 | 
						protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 | 
				
			||||||
 | 
						reflect "reflect"
 | 
				
			||||||
 | 
						sync "sync"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						// Verify that this generated code is sufficiently up-to-date.
 | 
				
			||||||
 | 
						_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
 | 
				
			||||||
 | 
						// Verify that runtime/protoimpl is sufficiently up-to-date.
 | 
				
			||||||
 | 
						_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// This is a compile-time assertion that a sufficiently up-to-date version
 | 
				
			||||||
 | 
					// of the legacy proto package is being used.
 | 
				
			||||||
 | 
					const _ = proto.ProtoPackageIsVersion4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type FindAllEnabledNodeClustersRequest struct {
 | 
				
			||||||
 | 
						state         protoimpl.MessageState
 | 
				
			||||||
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
 | 
						unknownFields protoimpl.UnknownFields
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *FindAllEnabledNodeClustersRequest) Reset() {
 | 
				
			||||||
 | 
						*x = FindAllEnabledNodeClustersRequest{}
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
 | 
							mi := &file_service_node_cluster_proto_msgTypes[0]
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *FindAllEnabledNodeClustersRequest) String() string {
 | 
				
			||||||
 | 
						return protoimpl.X.MessageStringOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (*FindAllEnabledNodeClustersRequest) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *FindAllEnabledNodeClustersRequest) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
 | 
						mi := &file_service_node_cluster_proto_msgTypes[0]
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
 | 
								ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return ms
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return mi.MessageOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Deprecated: Use FindAllEnabledNodeClustersRequest.ProtoReflect.Descriptor instead.
 | 
				
			||||||
 | 
					func (*FindAllEnabledNodeClustersRequest) Descriptor() ([]byte, []int) {
 | 
				
			||||||
 | 
						return file_service_node_cluster_proto_rawDescGZIP(), []int{0}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type FindAllEnabledNodeClustersResponse struct {
 | 
				
			||||||
 | 
						state         protoimpl.MessageState
 | 
				
			||||||
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
 | 
						unknownFields protoimpl.UnknownFields
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Clusters []*NodeCluster `protobuf:"bytes,1,rep,name=clusters,proto3" json:"clusters,omitempty"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *FindAllEnabledNodeClustersResponse) Reset() {
 | 
				
			||||||
 | 
						*x = FindAllEnabledNodeClustersResponse{}
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
 | 
							mi := &file_service_node_cluster_proto_msgTypes[1]
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *FindAllEnabledNodeClustersResponse) String() string {
 | 
				
			||||||
 | 
						return protoimpl.X.MessageStringOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (*FindAllEnabledNodeClustersResponse) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *FindAllEnabledNodeClustersResponse) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
 | 
						mi := &file_service_node_cluster_proto_msgTypes[1]
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
 | 
								ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return ms
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return mi.MessageOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Deprecated: Use FindAllEnabledNodeClustersResponse.ProtoReflect.Descriptor instead.
 | 
				
			||||||
 | 
					func (*FindAllEnabledNodeClustersResponse) Descriptor() ([]byte, []int) {
 | 
				
			||||||
 | 
						return file_service_node_cluster_proto_rawDescGZIP(), []int{1}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *FindAllEnabledNodeClustersResponse) GetClusters() []*NodeCluster {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Clusters
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var File_service_node_cluster_proto protoreflect.FileDescriptor
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var file_service_node_cluster_proto_rawDesc = []byte{
 | 
				
			||||||
 | 
						0x0a, 0x1a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63,
 | 
				
			||||||
 | 
						0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62,
 | 
				
			||||||
 | 
						0x1a, 0x18, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6c, 0x75,
 | 
				
			||||||
 | 
						0x73, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x23, 0x0a, 0x21, 0x46, 0x69,
 | 
				
			||||||
 | 
						0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65,
 | 
				
			||||||
 | 
						0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22,
 | 
				
			||||||
 | 
						0x51, 0x0a, 0x22, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65,
 | 
				
			||||||
 | 
						0x64, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73,
 | 
				
			||||||
 | 
						0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
 | 
				
			||||||
 | 
						0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64,
 | 
				
			||||||
 | 
						0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
 | 
				
			||||||
 | 
						0x72, 0x73, 0x32, 0x7d, 0x0a, 0x12, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
 | 
				
			||||||
 | 
						0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x67, 0x0a, 0x16, 0x66, 0x69, 0x6e, 0x64,
 | 
				
			||||||
 | 
						0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
 | 
				
			||||||
 | 
						0x72, 0x73, 0x12, 0x25, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x45,
 | 
				
			||||||
 | 
						0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
 | 
				
			||||||
 | 
						0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x70, 0x62, 0x2e, 0x46,
 | 
				
			||||||
 | 
						0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4e, 0x6f, 0x64,
 | 
				
			||||||
 | 
						0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
 | 
				
			||||||
 | 
						0x65, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
 | 
				
			||||||
 | 
						0x33,
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var (
 | 
				
			||||||
 | 
						file_service_node_cluster_proto_rawDescOnce sync.Once
 | 
				
			||||||
 | 
						file_service_node_cluster_proto_rawDescData = file_service_node_cluster_proto_rawDesc
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func file_service_node_cluster_proto_rawDescGZIP() []byte {
 | 
				
			||||||
 | 
						file_service_node_cluster_proto_rawDescOnce.Do(func() {
 | 
				
			||||||
 | 
							file_service_node_cluster_proto_rawDescData = protoimpl.X.CompressGZIP(file_service_node_cluster_proto_rawDescData)
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
						return file_service_node_cluster_proto_rawDescData
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var file_service_node_cluster_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
 | 
				
			||||||
 | 
					var file_service_node_cluster_proto_goTypes = []interface{}{
 | 
				
			||||||
 | 
						(*FindAllEnabledNodeClustersRequest)(nil),  // 0: pb.FindAllEnabledNodeClustersRequest
 | 
				
			||||||
 | 
						(*FindAllEnabledNodeClustersResponse)(nil), // 1: pb.FindAllEnabledNodeClustersResponse
 | 
				
			||||||
 | 
						(*NodeCluster)(nil),                        // 2: pb.NodeCluster
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					var file_service_node_cluster_proto_depIdxs = []int32{
 | 
				
			||||||
 | 
						2, // 0: pb.FindAllEnabledNodeClustersResponse.clusters:type_name -> pb.NodeCluster
 | 
				
			||||||
 | 
						0, // 1: pb.NodeClusterService.findAllEnabledClusters:input_type -> pb.FindAllEnabledNodeClustersRequest
 | 
				
			||||||
 | 
						1, // 2: pb.NodeClusterService.findAllEnabledClusters:output_type -> pb.FindAllEnabledNodeClustersResponse
 | 
				
			||||||
 | 
						2, // [2:3] is the sub-list for method output_type
 | 
				
			||||||
 | 
						1, // [1:2] is the sub-list for method input_type
 | 
				
			||||||
 | 
						1, // [1:1] is the sub-list for extension type_name
 | 
				
			||||||
 | 
						1, // [1:1] is the sub-list for extension extendee
 | 
				
			||||||
 | 
						0, // [0:1] is the sub-list for field type_name
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func init() { file_service_node_cluster_proto_init() }
 | 
				
			||||||
 | 
					func file_service_node_cluster_proto_init() {
 | 
				
			||||||
 | 
						if File_service_node_cluster_proto != nil {
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						file_model_node_cluster_proto_init()
 | 
				
			||||||
 | 
						if !protoimpl.UnsafeEnabled {
 | 
				
			||||||
 | 
							file_service_node_cluster_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
 | 
				
			||||||
 | 
								switch v := v.(*FindAllEnabledNodeClustersRequest); i {
 | 
				
			||||||
 | 
								case 0:
 | 
				
			||||||
 | 
									return &v.state
 | 
				
			||||||
 | 
								case 1:
 | 
				
			||||||
 | 
									return &v.sizeCache
 | 
				
			||||||
 | 
								case 2:
 | 
				
			||||||
 | 
									return &v.unknownFields
 | 
				
			||||||
 | 
								default:
 | 
				
			||||||
 | 
									return nil
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							file_service_node_cluster_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
 | 
				
			||||||
 | 
								switch v := v.(*FindAllEnabledNodeClustersResponse); i {
 | 
				
			||||||
 | 
								case 0:
 | 
				
			||||||
 | 
									return &v.state
 | 
				
			||||||
 | 
								case 1:
 | 
				
			||||||
 | 
									return &v.sizeCache
 | 
				
			||||||
 | 
								case 2:
 | 
				
			||||||
 | 
									return &v.unknownFields
 | 
				
			||||||
 | 
								default:
 | 
				
			||||||
 | 
									return nil
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						type x struct{}
 | 
				
			||||||
 | 
						out := protoimpl.TypeBuilder{
 | 
				
			||||||
 | 
							File: protoimpl.DescBuilder{
 | 
				
			||||||
 | 
								GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 | 
				
			||||||
 | 
								RawDescriptor: file_service_node_cluster_proto_rawDesc,
 | 
				
			||||||
 | 
								NumEnums:      0,
 | 
				
			||||||
 | 
								NumMessages:   2,
 | 
				
			||||||
 | 
								NumExtensions: 0,
 | 
				
			||||||
 | 
								NumServices:   1,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							GoTypes:           file_service_node_cluster_proto_goTypes,
 | 
				
			||||||
 | 
							DependencyIndexes: file_service_node_cluster_proto_depIdxs,
 | 
				
			||||||
 | 
							MessageInfos:      file_service_node_cluster_proto_msgTypes,
 | 
				
			||||||
 | 
						}.Build()
 | 
				
			||||||
 | 
						File_service_node_cluster_proto = out.File
 | 
				
			||||||
 | 
						file_service_node_cluster_proto_rawDesc = nil
 | 
				
			||||||
 | 
						file_service_node_cluster_proto_goTypes = nil
 | 
				
			||||||
 | 
						file_service_node_cluster_proto_depIdxs = nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Reference imports to suppress errors if they are not otherwise used.
 | 
				
			||||||
 | 
					var _ context.Context
 | 
				
			||||||
 | 
					var _ grpc.ClientConnInterface
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// This is a compile-time assertion to ensure that this generated file
 | 
				
			||||||
 | 
					// is compatible with the grpc package it is being compiled against.
 | 
				
			||||||
 | 
					const _ = grpc.SupportPackageIsVersion6
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NodeClusterServiceClient is the client API for NodeClusterService service.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
 | 
				
			||||||
 | 
					type NodeClusterServiceClient interface {
 | 
				
			||||||
 | 
						// 获取所有集群的信息
 | 
				
			||||||
 | 
						FindAllEnabledClusters(ctx context.Context, in *FindAllEnabledNodeClustersRequest, opts ...grpc.CallOption) (*FindAllEnabledNodeClustersResponse, error)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type nodeClusterServiceClient struct {
 | 
				
			||||||
 | 
						cc grpc.ClientConnInterface
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewNodeClusterServiceClient(cc grpc.ClientConnInterface) NodeClusterServiceClient {
 | 
				
			||||||
 | 
						return &nodeClusterServiceClient{cc}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (c *nodeClusterServiceClient) FindAllEnabledClusters(ctx context.Context, in *FindAllEnabledNodeClustersRequest, opts ...grpc.CallOption) (*FindAllEnabledNodeClustersResponse, error) {
 | 
				
			||||||
 | 
						out := new(FindAllEnabledNodeClustersResponse)
 | 
				
			||||||
 | 
						err := c.cc.Invoke(ctx, "/pb.NodeClusterService/findAllEnabledClusters", in, out, opts...)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return out, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NodeClusterServiceServer is the server API for NodeClusterService service.
 | 
				
			||||||
 | 
					type NodeClusterServiceServer interface {
 | 
				
			||||||
 | 
						// 获取所有集群的信息
 | 
				
			||||||
 | 
						FindAllEnabledClusters(context.Context, *FindAllEnabledNodeClustersRequest) (*FindAllEnabledNodeClustersResponse, error)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// UnimplementedNodeClusterServiceServer can be embedded to have forward compatible implementations.
 | 
				
			||||||
 | 
					type UnimplementedNodeClusterServiceServer struct {
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (*UnimplementedNodeClusterServiceServer) FindAllEnabledClusters(context.Context, *FindAllEnabledNodeClustersRequest) (*FindAllEnabledNodeClustersResponse, error) {
 | 
				
			||||||
 | 
						return nil, status.Errorf(codes.Unimplemented, "method FindAllEnabledClusters not implemented")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func RegisterNodeClusterServiceServer(s *grpc.Server, srv NodeClusterServiceServer) {
 | 
				
			||||||
 | 
						s.RegisterService(&_NodeClusterService_serviceDesc, srv)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func _NodeClusterService_FindAllEnabledClusters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 | 
				
			||||||
 | 
						in := new(FindAllEnabledNodeClustersRequest)
 | 
				
			||||||
 | 
						if err := dec(in); err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if interceptor == nil {
 | 
				
			||||||
 | 
							return srv.(NodeClusterServiceServer).FindAllEnabledClusters(ctx, in)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
 | 
							Server:     srv,
 | 
				
			||||||
 | 
							FullMethod: "/pb.NodeClusterService/FindAllEnabledClusters",
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
 | 
							return srv.(NodeClusterServiceServer).FindAllEnabledClusters(ctx, req.(*FindAllEnabledNodeClustersRequest))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return interceptor(ctx, in, info, handler)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var _NodeClusterService_serviceDesc = grpc.ServiceDesc{
 | 
				
			||||||
 | 
						ServiceName: "pb.NodeClusterService",
 | 
				
			||||||
 | 
						HandlerType: (*NodeClusterServiceServer)(nil),
 | 
				
			||||||
 | 
						Methods: []grpc.MethodDesc{
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								MethodName: "findAllEnabledClusters",
 | 
				
			||||||
 | 
								Handler:    _NodeClusterService_FindAllEnabledClusters_Handler,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						Streams:  []grpc.StreamDesc{},
 | 
				
			||||||
 | 
						Metadata: "service_node_cluster.proto",
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										1109
									
								
								internal/rpc/pb/service_node_grant.pb.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1109
									
								
								internal/rpc/pb/service_node_grant.pb.go
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										66
									
								
								internal/rpc/pb/service_node_group.pb.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								internal/rpc/pb/service_node_group.pb.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,66 @@
 | 
				
			|||||||
 | 
					// Code generated by protoc-gen-go. DO NOT EDIT.
 | 
				
			||||||
 | 
					// versions:
 | 
				
			||||||
 | 
					// 	protoc-gen-go v1.25.0
 | 
				
			||||||
 | 
					// 	protoc        v3.12.3
 | 
				
			||||||
 | 
					// source: service_node_group.proto
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package pb
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						proto "github.com/golang/protobuf/proto"
 | 
				
			||||||
 | 
						protoreflect "google.golang.org/protobuf/reflect/protoreflect"
 | 
				
			||||||
 | 
						protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 | 
				
			||||||
 | 
						reflect "reflect"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						// Verify that this generated code is sufficiently up-to-date.
 | 
				
			||||||
 | 
						_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
 | 
				
			||||||
 | 
						// Verify that runtime/protoimpl is sufficiently up-to-date.
 | 
				
			||||||
 | 
						_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// This is a compile-time assertion that a sufficiently up-to-date version
 | 
				
			||||||
 | 
					// of the legacy proto package is being used.
 | 
				
			||||||
 | 
					const _ = proto.ProtoPackageIsVersion4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var File_service_node_group_proto protoreflect.FileDescriptor
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var file_service_node_group_proto_rawDesc = []byte{
 | 
				
			||||||
 | 
						0x0a, 0x18, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67,
 | 
				
			||||||
 | 
						0x72, 0x6f, 0x75, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x42, 0x06,
 | 
				
			||||||
 | 
						0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var file_service_node_group_proto_goTypes = []interface{}{}
 | 
				
			||||||
 | 
					var file_service_node_group_proto_depIdxs = []int32{
 | 
				
			||||||
 | 
						0, // [0:0] is the sub-list for method output_type
 | 
				
			||||||
 | 
						0, // [0:0] is the sub-list for method input_type
 | 
				
			||||||
 | 
						0, // [0:0] is the sub-list for extension type_name
 | 
				
			||||||
 | 
						0, // [0:0] is the sub-list for extension extendee
 | 
				
			||||||
 | 
						0, // [0:0] is the sub-list for field type_name
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func init() { file_service_node_group_proto_init() }
 | 
				
			||||||
 | 
					func file_service_node_group_proto_init() {
 | 
				
			||||||
 | 
						if File_service_node_group_proto != nil {
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						type x struct{}
 | 
				
			||||||
 | 
						out := protoimpl.TypeBuilder{
 | 
				
			||||||
 | 
							File: protoimpl.DescBuilder{
 | 
				
			||||||
 | 
								GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 | 
				
			||||||
 | 
								RawDescriptor: file_service_node_group_proto_rawDesc,
 | 
				
			||||||
 | 
								NumEnums:      0,
 | 
				
			||||||
 | 
								NumMessages:   0,
 | 
				
			||||||
 | 
								NumExtensions: 0,
 | 
				
			||||||
 | 
								NumServices:   0,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							GoTypes:           file_service_node_group_proto_goTypes,
 | 
				
			||||||
 | 
							DependencyIndexes: file_service_node_group_proto_depIdxs,
 | 
				
			||||||
 | 
						}.Build()
 | 
				
			||||||
 | 
						File_service_node_group_proto = out.File
 | 
				
			||||||
 | 
						file_service_node_group_proto_rawDesc = nil
 | 
				
			||||||
 | 
						file_service_node_group_proto_goTypes = nil
 | 
				
			||||||
 | 
						file_service_node_group_proto_depIdxs = nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										66
									
								
								internal/rpc/pb/service_node_region.pb.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								internal/rpc/pb/service_node_region.pb.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,66 @@
 | 
				
			|||||||
 | 
					// Code generated by protoc-gen-go. DO NOT EDIT.
 | 
				
			||||||
 | 
					// versions:
 | 
				
			||||||
 | 
					// 	protoc-gen-go v1.25.0
 | 
				
			||||||
 | 
					// 	protoc        v3.12.3
 | 
				
			||||||
 | 
					// source: service_node_region.proto
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package pb
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						proto "github.com/golang/protobuf/proto"
 | 
				
			||||||
 | 
						protoreflect "google.golang.org/protobuf/reflect/protoreflect"
 | 
				
			||||||
 | 
						protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 | 
				
			||||||
 | 
						reflect "reflect"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						// Verify that this generated code is sufficiently up-to-date.
 | 
				
			||||||
 | 
						_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
 | 
				
			||||||
 | 
						// Verify that runtime/protoimpl is sufficiently up-to-date.
 | 
				
			||||||
 | 
						_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// This is a compile-time assertion that a sufficiently up-to-date version
 | 
				
			||||||
 | 
					// of the legacy proto package is being used.
 | 
				
			||||||
 | 
					const _ = proto.ProtoPackageIsVersion4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var File_service_node_region_proto protoreflect.FileDescriptor
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var file_service_node_region_proto_rawDesc = []byte{
 | 
				
			||||||
 | 
						0x0a, 0x19, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x72,
 | 
				
			||||||
 | 
						0x65, 0x67, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x42,
 | 
				
			||||||
 | 
						0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var file_service_node_region_proto_goTypes = []interface{}{}
 | 
				
			||||||
 | 
					var file_service_node_region_proto_depIdxs = []int32{
 | 
				
			||||||
 | 
						0, // [0:0] is the sub-list for method output_type
 | 
				
			||||||
 | 
						0, // [0:0] is the sub-list for method input_type
 | 
				
			||||||
 | 
						0, // [0:0] is the sub-list for extension type_name
 | 
				
			||||||
 | 
						0, // [0:0] is the sub-list for extension extendee
 | 
				
			||||||
 | 
						0, // [0:0] is the sub-list for field type_name
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func init() { file_service_node_region_proto_init() }
 | 
				
			||||||
 | 
					func file_service_node_region_proto_init() {
 | 
				
			||||||
 | 
						if File_service_node_region_proto != nil {
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						type x struct{}
 | 
				
			||||||
 | 
						out := protoimpl.TypeBuilder{
 | 
				
			||||||
 | 
							File: protoimpl.DescBuilder{
 | 
				
			||||||
 | 
								GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 | 
				
			||||||
 | 
								RawDescriptor: file_service_node_region_proto_rawDesc,
 | 
				
			||||||
 | 
								NumEnums:      0,
 | 
				
			||||||
 | 
								NumMessages:   0,
 | 
				
			||||||
 | 
								NumExtensions: 0,
 | 
				
			||||||
 | 
								NumServices:   0,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							GoTypes:           file_service_node_region_proto_goTypes,
 | 
				
			||||||
 | 
							DependencyIndexes: file_service_node_region_proto_depIdxs,
 | 
				
			||||||
 | 
						}.Build()
 | 
				
			||||||
 | 
						File_service_node_region_proto = out.File
 | 
				
			||||||
 | 
						file_service_node_region_proto_rawDesc = nil
 | 
				
			||||||
 | 
						file_service_node_region_proto_goTypes = nil
 | 
				
			||||||
 | 
						file_service_node_region_proto_depIdxs = nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,111 +0,0 @@
 | 
				
			|||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
 | 
					 | 
				
			||||||
// versions:
 | 
					 | 
				
			||||||
// 	protoc-gen-go v1.25.0
 | 
					 | 
				
			||||||
// 	protoc        v3.12.3
 | 
					 | 
				
			||||||
// source: service_provider.proto
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package pb
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	context "context"
 | 
					 | 
				
			||||||
	proto "github.com/golang/protobuf/proto"
 | 
					 | 
				
			||||||
	grpc "google.golang.org/grpc"
 | 
					 | 
				
			||||||
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
 | 
					 | 
				
			||||||
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 | 
					 | 
				
			||||||
	reflect "reflect"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const (
 | 
					 | 
				
			||||||
	// Verify that this generated code is sufficiently up-to-date.
 | 
					 | 
				
			||||||
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
 | 
					 | 
				
			||||||
	// Verify that runtime/protoimpl is sufficiently up-to-date.
 | 
					 | 
				
			||||||
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// This is a compile-time assertion that a sufficiently up-to-date version
 | 
					 | 
				
			||||||
// of the legacy proto package is being used.
 | 
					 | 
				
			||||||
const _ = proto.ProtoPackageIsVersion4
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var File_service_provider_proto protoreflect.FileDescriptor
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var file_service_provider_proto_rawDesc = []byte{
 | 
					 | 
				
			||||||
	0x0a, 0x16, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64,
 | 
					 | 
				
			||||||
	0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x32, 0x11, 0x0a, 0x0f,
 | 
					 | 
				
			||||||
	0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42,
 | 
					 | 
				
			||||||
	0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var file_service_provider_proto_goTypes = []interface{}{}
 | 
					 | 
				
			||||||
var file_service_provider_proto_depIdxs = []int32{
 | 
					 | 
				
			||||||
	0, // [0:0] is the sub-list for method output_type
 | 
					 | 
				
			||||||
	0, // [0:0] is the sub-list for method input_type
 | 
					 | 
				
			||||||
	0, // [0:0] is the sub-list for extension type_name
 | 
					 | 
				
			||||||
	0, // [0:0] is the sub-list for extension extendee
 | 
					 | 
				
			||||||
	0, // [0:0] is the sub-list for field type_name
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func init() { file_service_provider_proto_init() }
 | 
					 | 
				
			||||||
func file_service_provider_proto_init() {
 | 
					 | 
				
			||||||
	if File_service_provider_proto != nil {
 | 
					 | 
				
			||||||
		return
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	type x struct{}
 | 
					 | 
				
			||||||
	out := protoimpl.TypeBuilder{
 | 
					 | 
				
			||||||
		File: protoimpl.DescBuilder{
 | 
					 | 
				
			||||||
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 | 
					 | 
				
			||||||
			RawDescriptor: file_service_provider_proto_rawDesc,
 | 
					 | 
				
			||||||
			NumEnums:      0,
 | 
					 | 
				
			||||||
			NumMessages:   0,
 | 
					 | 
				
			||||||
			NumExtensions: 0,
 | 
					 | 
				
			||||||
			NumServices:   1,
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		GoTypes:           file_service_provider_proto_goTypes,
 | 
					 | 
				
			||||||
		DependencyIndexes: file_service_provider_proto_depIdxs,
 | 
					 | 
				
			||||||
	}.Build()
 | 
					 | 
				
			||||||
	File_service_provider_proto = out.File
 | 
					 | 
				
			||||||
	file_service_provider_proto_rawDesc = nil
 | 
					 | 
				
			||||||
	file_service_provider_proto_goTypes = nil
 | 
					 | 
				
			||||||
	file_service_provider_proto_depIdxs = nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Reference imports to suppress errors if they are not otherwise used.
 | 
					 | 
				
			||||||
var _ context.Context
 | 
					 | 
				
			||||||
var _ grpc.ClientConnInterface
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// This is a compile-time assertion to ensure that this generated file
 | 
					 | 
				
			||||||
// is compatible with the grpc package it is being compiled against.
 | 
					 | 
				
			||||||
const _ = grpc.SupportPackageIsVersion6
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// ProviderServiceClient is the client API for ProviderService service.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
 | 
					 | 
				
			||||||
type ProviderServiceClient interface {
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
type providerServiceClient struct {
 | 
					 | 
				
			||||||
	cc grpc.ClientConnInterface
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func NewProviderServiceClient(cc grpc.ClientConnInterface) ProviderServiceClient {
 | 
					 | 
				
			||||||
	return &providerServiceClient{cc}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// ProviderServiceServer is the server API for ProviderService service.
 | 
					 | 
				
			||||||
type ProviderServiceServer interface {
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// UnimplementedProviderServiceServer can be embedded to have forward compatible implementations.
 | 
					 | 
				
			||||||
type UnimplementedProviderServiceServer struct {
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func RegisterProviderServiceServer(s *grpc.Server, srv ProviderServiceServer) {
 | 
					 | 
				
			||||||
	s.RegisterService(&_ProviderService_serviceDesc, srv)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var _ProviderService_serviceDesc = grpc.ServiceDesc{
 | 
					 | 
				
			||||||
	ServiceName: "pb.ProviderService",
 | 
					 | 
				
			||||||
	HandlerType: (*ProviderServiceServer)(nil),
 | 
					 | 
				
			||||||
	Methods:     []grpc.MethodDesc{},
 | 
					 | 
				
			||||||
	Streams:     []grpc.StreamDesc{},
 | 
					 | 
				
			||||||
	Metadata:    "service_provider.proto",
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										706
									
								
								internal/rpc/pb/service_server.pb.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										706
									
								
								internal/rpc/pb/service_server.pb.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,706 @@
 | 
				
			|||||||
 | 
					// Code generated by protoc-gen-go. DO NOT EDIT.
 | 
				
			||||||
 | 
					// versions:
 | 
				
			||||||
 | 
					// 	protoc-gen-go v1.25.0
 | 
				
			||||||
 | 
					// 	protoc        v3.12.3
 | 
				
			||||||
 | 
					// source: service_server.proto
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package pb
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						context "context"
 | 
				
			||||||
 | 
						proto "github.com/golang/protobuf/proto"
 | 
				
			||||||
 | 
						grpc "google.golang.org/grpc"
 | 
				
			||||||
 | 
						codes "google.golang.org/grpc/codes"
 | 
				
			||||||
 | 
						status "google.golang.org/grpc/status"
 | 
				
			||||||
 | 
						protoreflect "google.golang.org/protobuf/reflect/protoreflect"
 | 
				
			||||||
 | 
						protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 | 
				
			||||||
 | 
						reflect "reflect"
 | 
				
			||||||
 | 
						sync "sync"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						// Verify that this generated code is sufficiently up-to-date.
 | 
				
			||||||
 | 
						_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
 | 
				
			||||||
 | 
						// Verify that runtime/protoimpl is sufficiently up-to-date.
 | 
				
			||||||
 | 
						_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// This is a compile-time assertion that a sufficiently up-to-date version
 | 
				
			||||||
 | 
					// of the legacy proto package is being used.
 | 
				
			||||||
 | 
					const _ = proto.ProtoPackageIsVersion4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 创建服务
 | 
				
			||||||
 | 
					type CreateServerRequest struct {
 | 
				
			||||||
 | 
						state         protoimpl.MessageState
 | 
				
			||||||
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
 | 
						unknownFields protoimpl.UnknownFields
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						UserId           int64  `protobuf:"varint,1,opt,name=userId,proto3" json:"userId,omitempty"`
 | 
				
			||||||
 | 
						AdminId          int64  `protobuf:"varint,2,opt,name=adminId,proto3" json:"adminId,omitempty"`
 | 
				
			||||||
 | 
						ClusterId        int64  `protobuf:"varint,6,opt,name=clusterId,proto3" json:"clusterId,omitempty"`
 | 
				
			||||||
 | 
						Config           []byte `protobuf:"bytes,3,opt,name=config,proto3" json:"config,omitempty"`
 | 
				
			||||||
 | 
						IncludeNodesJSON []byte `protobuf:"bytes,4,opt,name=includeNodesJSON,proto3" json:"includeNodesJSON,omitempty"`
 | 
				
			||||||
 | 
						ExcludeNodesJSON []byte `protobuf:"bytes,5,opt,name=excludeNodesJSON,proto3" json:"excludeNodesJSON,omitempty"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *CreateServerRequest) Reset() {
 | 
				
			||||||
 | 
						*x = CreateServerRequest{}
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
 | 
							mi := &file_service_server_proto_msgTypes[0]
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *CreateServerRequest) String() string {
 | 
				
			||||||
 | 
						return protoimpl.X.MessageStringOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (*CreateServerRequest) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *CreateServerRequest) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
 | 
						mi := &file_service_server_proto_msgTypes[0]
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
 | 
								ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return ms
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return mi.MessageOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Deprecated: Use CreateServerRequest.ProtoReflect.Descriptor instead.
 | 
				
			||||||
 | 
					func (*CreateServerRequest) Descriptor() ([]byte, []int) {
 | 
				
			||||||
 | 
						return file_service_server_proto_rawDescGZIP(), []int{0}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *CreateServerRequest) GetUserId() int64 {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.UserId
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *CreateServerRequest) GetAdminId() int64 {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.AdminId
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *CreateServerRequest) GetClusterId() int64 {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.ClusterId
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *CreateServerRequest) GetConfig() []byte {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Config
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *CreateServerRequest) GetIncludeNodesJSON() []byte {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.IncludeNodesJSON
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *CreateServerRequest) GetExcludeNodesJSON() []byte {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.ExcludeNodesJSON
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type CreateServerResponse struct {
 | 
				
			||||||
 | 
						state         protoimpl.MessageState
 | 
				
			||||||
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
 | 
						unknownFields protoimpl.UnknownFields
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ServerId int64 `protobuf:"varint,1,opt,name=serverId,proto3" json:"serverId,omitempty"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *CreateServerResponse) Reset() {
 | 
				
			||||||
 | 
						*x = CreateServerResponse{}
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
 | 
							mi := &file_service_server_proto_msgTypes[1]
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *CreateServerResponse) String() string {
 | 
				
			||||||
 | 
						return protoimpl.X.MessageStringOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (*CreateServerResponse) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *CreateServerResponse) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
 | 
						mi := &file_service_server_proto_msgTypes[1]
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
 | 
								ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return ms
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return mi.MessageOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Deprecated: Use CreateServerResponse.ProtoReflect.Descriptor instead.
 | 
				
			||||||
 | 
					func (*CreateServerResponse) Descriptor() ([]byte, []int) {
 | 
				
			||||||
 | 
						return file_service_server_proto_rawDescGZIP(), []int{1}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *CreateServerResponse) GetServerId() int64 {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.ServerId
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 计算服务数量
 | 
				
			||||||
 | 
					type CountAllEnabledServersRequest struct {
 | 
				
			||||||
 | 
						state         protoimpl.MessageState
 | 
				
			||||||
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
 | 
						unknownFields protoimpl.UnknownFields
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *CountAllEnabledServersRequest) Reset() {
 | 
				
			||||||
 | 
						*x = CountAllEnabledServersRequest{}
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
 | 
							mi := &file_service_server_proto_msgTypes[2]
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *CountAllEnabledServersRequest) String() string {
 | 
				
			||||||
 | 
						return protoimpl.X.MessageStringOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (*CountAllEnabledServersRequest) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *CountAllEnabledServersRequest) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
 | 
						mi := &file_service_server_proto_msgTypes[2]
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
 | 
								ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return ms
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return mi.MessageOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Deprecated: Use CountAllEnabledServersRequest.ProtoReflect.Descriptor instead.
 | 
				
			||||||
 | 
					func (*CountAllEnabledServersRequest) Descriptor() ([]byte, []int) {
 | 
				
			||||||
 | 
						return file_service_server_proto_rawDescGZIP(), []int{2}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type CountAllEnabledServersResponse struct {
 | 
				
			||||||
 | 
						state         protoimpl.MessageState
 | 
				
			||||||
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
 | 
						unknownFields protoimpl.UnknownFields
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Count int64 `protobuf:"varint,1,opt,name=count,proto3" json:"count,omitempty"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *CountAllEnabledServersResponse) Reset() {
 | 
				
			||||||
 | 
						*x = CountAllEnabledServersResponse{}
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
 | 
							mi := &file_service_server_proto_msgTypes[3]
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *CountAllEnabledServersResponse) String() string {
 | 
				
			||||||
 | 
						return protoimpl.X.MessageStringOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (*CountAllEnabledServersResponse) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *CountAllEnabledServersResponse) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
 | 
						mi := &file_service_server_proto_msgTypes[3]
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
 | 
								ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return ms
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return mi.MessageOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Deprecated: Use CountAllEnabledServersResponse.ProtoReflect.Descriptor instead.
 | 
				
			||||||
 | 
					func (*CountAllEnabledServersResponse) Descriptor() ([]byte, []int) {
 | 
				
			||||||
 | 
						return file_service_server_proto_rawDescGZIP(), []int{3}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *CountAllEnabledServersResponse) GetCount() int64 {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Count
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 列出单页服务
 | 
				
			||||||
 | 
					type ListEnabledServersRequest struct {
 | 
				
			||||||
 | 
						state         protoimpl.MessageState
 | 
				
			||||||
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
 | 
						unknownFields protoimpl.UnknownFields
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Offset int64 `protobuf:"varint,1,opt,name=offset,proto3" json:"offset,omitempty"`
 | 
				
			||||||
 | 
						Size   int64 `protobuf:"varint,2,opt,name=size,proto3" json:"size,omitempty"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *ListEnabledServersRequest) Reset() {
 | 
				
			||||||
 | 
						*x = ListEnabledServersRequest{}
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
 | 
							mi := &file_service_server_proto_msgTypes[4]
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *ListEnabledServersRequest) String() string {
 | 
				
			||||||
 | 
						return protoimpl.X.MessageStringOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (*ListEnabledServersRequest) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *ListEnabledServersRequest) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
 | 
						mi := &file_service_server_proto_msgTypes[4]
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
 | 
								ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return ms
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return mi.MessageOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Deprecated: Use ListEnabledServersRequest.ProtoReflect.Descriptor instead.
 | 
				
			||||||
 | 
					func (*ListEnabledServersRequest) Descriptor() ([]byte, []int) {
 | 
				
			||||||
 | 
						return file_service_server_proto_rawDescGZIP(), []int{4}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *ListEnabledServersRequest) GetOffset() int64 {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Offset
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *ListEnabledServersRequest) GetSize() int64 {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Size
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type ListEnabledServersResponse struct {
 | 
				
			||||||
 | 
						state         protoimpl.MessageState
 | 
				
			||||||
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
 | 
						unknownFields protoimpl.UnknownFields
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Servers []*Server `protobuf:"bytes,1,rep,name=servers,proto3" json:"servers,omitempty"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *ListEnabledServersResponse) Reset() {
 | 
				
			||||||
 | 
						*x = ListEnabledServersResponse{}
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
 | 
							mi := &file_service_server_proto_msgTypes[5]
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *ListEnabledServersResponse) String() string {
 | 
				
			||||||
 | 
						return protoimpl.X.MessageStringOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (*ListEnabledServersResponse) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *ListEnabledServersResponse) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
 | 
						mi := &file_service_server_proto_msgTypes[5]
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
 | 
								ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return ms
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return mi.MessageOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Deprecated: Use ListEnabledServersResponse.ProtoReflect.Descriptor instead.
 | 
				
			||||||
 | 
					func (*ListEnabledServersResponse) Descriptor() ([]byte, []int) {
 | 
				
			||||||
 | 
						return file_service_server_proto_rawDescGZIP(), []int{5}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *ListEnabledServersResponse) GetServers() []*Server {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Servers
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var File_service_server_proto protoreflect.FileDescriptor
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var file_service_server_proto_rawDesc = []byte{
 | 
				
			||||||
 | 
						0x0a, 0x14, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
 | 
				
			||||||
 | 
						0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x1a, 0x12, 0x6d, 0x6f, 0x64, 0x65,
 | 
				
			||||||
 | 
						0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd5,
 | 
				
			||||||
 | 
						0x01, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52,
 | 
				
			||||||
 | 
						0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64,
 | 
				
			||||||
 | 
						0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18,
 | 
				
			||||||
 | 
						0x0a, 0x07, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52,
 | 
				
			||||||
 | 
						0x07, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x75, 0x73,
 | 
				
			||||||
 | 
						0x74, 0x65, 0x72, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x6c, 0x75,
 | 
				
			||||||
 | 
						0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
 | 
				
			||||||
 | 
						0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2a,
 | 
				
			||||||
 | 
						0x0a, 0x10, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x4a, 0x53,
 | 
				
			||||||
 | 
						0x4f, 0x4e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x10, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64,
 | 
				
			||||||
 | 
						0x65, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x2a, 0x0a, 0x10, 0x65, 0x78,
 | 
				
			||||||
 | 
						0x63, 0x6c, 0x75, 0x64, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x05,
 | 
				
			||||||
 | 
						0x20, 0x01, 0x28, 0x0c, 0x52, 0x10, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4e, 0x6f, 0x64,
 | 
				
			||||||
 | 
						0x65, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x22, 0x32, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
 | 
				
			||||||
 | 
						0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a,
 | 
				
			||||||
 | 
						0x0a, 0x08, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
 | 
				
			||||||
 | 
						0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x22, 0x1f, 0x0a, 0x1d, 0x43, 0x6f,
 | 
				
			||||||
 | 
						0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x53, 0x65, 0x72,
 | 
				
			||||||
 | 
						0x76, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x36, 0x0a, 0x1e, 0x43,
 | 
				
			||||||
 | 
						0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x53, 0x65,
 | 
				
			||||||
 | 
						0x72, 0x76, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a,
 | 
				
			||||||
 | 
						0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f,
 | 
				
			||||||
 | 
						0x75, 0x6e, 0x74, 0x22, 0x47, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c,
 | 
				
			||||||
 | 
						0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
 | 
				
			||||||
 | 
						0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
 | 
				
			||||||
 | 
						0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65,
 | 
				
			||||||
 | 
						0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x42, 0x0a, 0x1a,
 | 
				
			||||||
 | 
						0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65,
 | 
				
			||||||
 | 
						0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x07, 0x73, 0x65,
 | 
				
			||||||
 | 
						0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x70, 0x62,
 | 
				
			||||||
 | 
						0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73,
 | 
				
			||||||
 | 
						0x32, 0x88, 0x02, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69,
 | 
				
			||||||
 | 
						0x63, 0x65, 0x12, 0x41, 0x0a, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76,
 | 
				
			||||||
 | 
						0x65, 0x72, 0x12, 0x17, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65,
 | 
				
			||||||
 | 
						0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x70, 0x62,
 | 
				
			||||||
 | 
						0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73,
 | 
				
			||||||
 | 
						0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x16, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c,
 | 
				
			||||||
 | 
						0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12,
 | 
				
			||||||
 | 
						0x21, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61,
 | 
				
			||||||
 | 
						0x62, 0x6c, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
 | 
				
			||||||
 | 
						0x73, 0x74, 0x1a, 0x22, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c,
 | 
				
			||||||
 | 
						0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x52, 0x65,
 | 
				
			||||||
 | 
						0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x12, 0x6c, 0x69, 0x73, 0x74, 0x45, 0x6e,
 | 
				
			||||||
 | 
						0x61, 0x62, 0x6c, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x1d, 0x2e, 0x70,
 | 
				
			||||||
 | 
						0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x53, 0x65, 0x72,
 | 
				
			||||||
 | 
						0x76, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x70, 0x62,
 | 
				
			||||||
 | 
						0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76,
 | 
				
			||||||
 | 
						0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x06, 0x5a, 0x04, 0x2e,
 | 
				
			||||||
 | 
						0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var (
 | 
				
			||||||
 | 
						file_service_server_proto_rawDescOnce sync.Once
 | 
				
			||||||
 | 
						file_service_server_proto_rawDescData = file_service_server_proto_rawDesc
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func file_service_server_proto_rawDescGZIP() []byte {
 | 
				
			||||||
 | 
						file_service_server_proto_rawDescOnce.Do(func() {
 | 
				
			||||||
 | 
							file_service_server_proto_rawDescData = protoimpl.X.CompressGZIP(file_service_server_proto_rawDescData)
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
						return file_service_server_proto_rawDescData
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var file_service_server_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
 | 
				
			||||||
 | 
					var file_service_server_proto_goTypes = []interface{}{
 | 
				
			||||||
 | 
						(*CreateServerRequest)(nil),            // 0: pb.CreateServerRequest
 | 
				
			||||||
 | 
						(*CreateServerResponse)(nil),           // 1: pb.CreateServerResponse
 | 
				
			||||||
 | 
						(*CountAllEnabledServersRequest)(nil),  // 2: pb.CountAllEnabledServersRequest
 | 
				
			||||||
 | 
						(*CountAllEnabledServersResponse)(nil), // 3: pb.CountAllEnabledServersResponse
 | 
				
			||||||
 | 
						(*ListEnabledServersRequest)(nil),      // 4: pb.ListEnabledServersRequest
 | 
				
			||||||
 | 
						(*ListEnabledServersResponse)(nil),     // 5: pb.ListEnabledServersResponse
 | 
				
			||||||
 | 
						(*Server)(nil),                         // 6: pb.Server
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					var file_service_server_proto_depIdxs = []int32{
 | 
				
			||||||
 | 
						6, // 0: pb.ListEnabledServersResponse.servers:type_name -> pb.Server
 | 
				
			||||||
 | 
						0, // 1: pb.ServerService.createServer:input_type -> pb.CreateServerRequest
 | 
				
			||||||
 | 
						2, // 2: pb.ServerService.countAllEnabledServers:input_type -> pb.CountAllEnabledServersRequest
 | 
				
			||||||
 | 
						4, // 3: pb.ServerService.listEnabledServers:input_type -> pb.ListEnabledServersRequest
 | 
				
			||||||
 | 
						1, // 4: pb.ServerService.createServer:output_type -> pb.CreateServerResponse
 | 
				
			||||||
 | 
						3, // 5: pb.ServerService.countAllEnabledServers:output_type -> pb.CountAllEnabledServersResponse
 | 
				
			||||||
 | 
						5, // 6: pb.ServerService.listEnabledServers:output_type -> pb.ListEnabledServersResponse
 | 
				
			||||||
 | 
						4, // [4:7] is the sub-list for method output_type
 | 
				
			||||||
 | 
						1, // [1:4] is the sub-list for method input_type
 | 
				
			||||||
 | 
						1, // [1:1] is the sub-list for extension type_name
 | 
				
			||||||
 | 
						1, // [1:1] is the sub-list for extension extendee
 | 
				
			||||||
 | 
						0, // [0:1] is the sub-list for field type_name
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func init() { file_service_server_proto_init() }
 | 
				
			||||||
 | 
					func file_service_server_proto_init() {
 | 
				
			||||||
 | 
						if File_service_server_proto != nil {
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						file_model_server_proto_init()
 | 
				
			||||||
 | 
						if !protoimpl.UnsafeEnabled {
 | 
				
			||||||
 | 
							file_service_server_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
 | 
				
			||||||
 | 
								switch v := v.(*CreateServerRequest); i {
 | 
				
			||||||
 | 
								case 0:
 | 
				
			||||||
 | 
									return &v.state
 | 
				
			||||||
 | 
								case 1:
 | 
				
			||||||
 | 
									return &v.sizeCache
 | 
				
			||||||
 | 
								case 2:
 | 
				
			||||||
 | 
									return &v.unknownFields
 | 
				
			||||||
 | 
								default:
 | 
				
			||||||
 | 
									return nil
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							file_service_server_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
 | 
				
			||||||
 | 
								switch v := v.(*CreateServerResponse); i {
 | 
				
			||||||
 | 
								case 0:
 | 
				
			||||||
 | 
									return &v.state
 | 
				
			||||||
 | 
								case 1:
 | 
				
			||||||
 | 
									return &v.sizeCache
 | 
				
			||||||
 | 
								case 2:
 | 
				
			||||||
 | 
									return &v.unknownFields
 | 
				
			||||||
 | 
								default:
 | 
				
			||||||
 | 
									return nil
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							file_service_server_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
 | 
				
			||||||
 | 
								switch v := v.(*CountAllEnabledServersRequest); i {
 | 
				
			||||||
 | 
								case 0:
 | 
				
			||||||
 | 
									return &v.state
 | 
				
			||||||
 | 
								case 1:
 | 
				
			||||||
 | 
									return &v.sizeCache
 | 
				
			||||||
 | 
								case 2:
 | 
				
			||||||
 | 
									return &v.unknownFields
 | 
				
			||||||
 | 
								default:
 | 
				
			||||||
 | 
									return nil
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							file_service_server_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
 | 
				
			||||||
 | 
								switch v := v.(*CountAllEnabledServersResponse); i {
 | 
				
			||||||
 | 
								case 0:
 | 
				
			||||||
 | 
									return &v.state
 | 
				
			||||||
 | 
								case 1:
 | 
				
			||||||
 | 
									return &v.sizeCache
 | 
				
			||||||
 | 
								case 2:
 | 
				
			||||||
 | 
									return &v.unknownFields
 | 
				
			||||||
 | 
								default:
 | 
				
			||||||
 | 
									return nil
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							file_service_server_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
 | 
				
			||||||
 | 
								switch v := v.(*ListEnabledServersRequest); i {
 | 
				
			||||||
 | 
								case 0:
 | 
				
			||||||
 | 
									return &v.state
 | 
				
			||||||
 | 
								case 1:
 | 
				
			||||||
 | 
									return &v.sizeCache
 | 
				
			||||||
 | 
								case 2:
 | 
				
			||||||
 | 
									return &v.unknownFields
 | 
				
			||||||
 | 
								default:
 | 
				
			||||||
 | 
									return nil
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							file_service_server_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
 | 
				
			||||||
 | 
								switch v := v.(*ListEnabledServersResponse); i {
 | 
				
			||||||
 | 
								case 0:
 | 
				
			||||||
 | 
									return &v.state
 | 
				
			||||||
 | 
								case 1:
 | 
				
			||||||
 | 
									return &v.sizeCache
 | 
				
			||||||
 | 
								case 2:
 | 
				
			||||||
 | 
									return &v.unknownFields
 | 
				
			||||||
 | 
								default:
 | 
				
			||||||
 | 
									return nil
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						type x struct{}
 | 
				
			||||||
 | 
						out := protoimpl.TypeBuilder{
 | 
				
			||||||
 | 
							File: protoimpl.DescBuilder{
 | 
				
			||||||
 | 
								GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 | 
				
			||||||
 | 
								RawDescriptor: file_service_server_proto_rawDesc,
 | 
				
			||||||
 | 
								NumEnums:      0,
 | 
				
			||||||
 | 
								NumMessages:   6,
 | 
				
			||||||
 | 
								NumExtensions: 0,
 | 
				
			||||||
 | 
								NumServices:   1,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							GoTypes:           file_service_server_proto_goTypes,
 | 
				
			||||||
 | 
							DependencyIndexes: file_service_server_proto_depIdxs,
 | 
				
			||||||
 | 
							MessageInfos:      file_service_server_proto_msgTypes,
 | 
				
			||||||
 | 
						}.Build()
 | 
				
			||||||
 | 
						File_service_server_proto = out.File
 | 
				
			||||||
 | 
						file_service_server_proto_rawDesc = nil
 | 
				
			||||||
 | 
						file_service_server_proto_goTypes = nil
 | 
				
			||||||
 | 
						file_service_server_proto_depIdxs = nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Reference imports to suppress errors if they are not otherwise used.
 | 
				
			||||||
 | 
					var _ context.Context
 | 
				
			||||||
 | 
					var _ grpc.ClientConnInterface
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// This is a compile-time assertion to ensure that this generated file
 | 
				
			||||||
 | 
					// is compatible with the grpc package it is being compiled against.
 | 
				
			||||||
 | 
					const _ = grpc.SupportPackageIsVersion6
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ServerServiceClient is the client API for ServerService service.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
 | 
				
			||||||
 | 
					type ServerServiceClient interface {
 | 
				
			||||||
 | 
						// 创建服务
 | 
				
			||||||
 | 
						CreateServer(ctx context.Context, in *CreateServerRequest, opts ...grpc.CallOption) (*CreateServerResponse, error)
 | 
				
			||||||
 | 
						// 计算服务数量
 | 
				
			||||||
 | 
						CountAllEnabledServers(ctx context.Context, in *CountAllEnabledServersRequest, opts ...grpc.CallOption) (*CountAllEnabledServersResponse, error)
 | 
				
			||||||
 | 
						// 列出单页服务
 | 
				
			||||||
 | 
						ListEnabledServers(ctx context.Context, in *ListEnabledServersRequest, opts ...grpc.CallOption) (*ListEnabledServersResponse, error)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type serverServiceClient struct {
 | 
				
			||||||
 | 
						cc grpc.ClientConnInterface
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewServerServiceClient(cc grpc.ClientConnInterface) ServerServiceClient {
 | 
				
			||||||
 | 
						return &serverServiceClient{cc}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (c *serverServiceClient) CreateServer(ctx context.Context, in *CreateServerRequest, opts ...grpc.CallOption) (*CreateServerResponse, error) {
 | 
				
			||||||
 | 
						out := new(CreateServerResponse)
 | 
				
			||||||
 | 
						err := c.cc.Invoke(ctx, "/pb.ServerService/createServer", in, out, opts...)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return out, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (c *serverServiceClient) CountAllEnabledServers(ctx context.Context, in *CountAllEnabledServersRequest, opts ...grpc.CallOption) (*CountAllEnabledServersResponse, error) {
 | 
				
			||||||
 | 
						out := new(CountAllEnabledServersResponse)
 | 
				
			||||||
 | 
						err := c.cc.Invoke(ctx, "/pb.ServerService/countAllEnabledServers", in, out, opts...)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return out, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (c *serverServiceClient) ListEnabledServers(ctx context.Context, in *ListEnabledServersRequest, opts ...grpc.CallOption) (*ListEnabledServersResponse, error) {
 | 
				
			||||||
 | 
						out := new(ListEnabledServersResponse)
 | 
				
			||||||
 | 
						err := c.cc.Invoke(ctx, "/pb.ServerService/listEnabledServers", in, out, opts...)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return out, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ServerServiceServer is the server API for ServerService service.
 | 
				
			||||||
 | 
					type ServerServiceServer interface {
 | 
				
			||||||
 | 
						// 创建服务
 | 
				
			||||||
 | 
						CreateServer(context.Context, *CreateServerRequest) (*CreateServerResponse, error)
 | 
				
			||||||
 | 
						// 计算服务数量
 | 
				
			||||||
 | 
						CountAllEnabledServers(context.Context, *CountAllEnabledServersRequest) (*CountAllEnabledServersResponse, error)
 | 
				
			||||||
 | 
						// 列出单页服务
 | 
				
			||||||
 | 
						ListEnabledServers(context.Context, *ListEnabledServersRequest) (*ListEnabledServersResponse, error)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// UnimplementedServerServiceServer can be embedded to have forward compatible implementations.
 | 
				
			||||||
 | 
					type UnimplementedServerServiceServer struct {
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (*UnimplementedServerServiceServer) CreateServer(context.Context, *CreateServerRequest) (*CreateServerResponse, error) {
 | 
				
			||||||
 | 
						return nil, status.Errorf(codes.Unimplemented, "method CreateServer not implemented")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					func (*UnimplementedServerServiceServer) CountAllEnabledServers(context.Context, *CountAllEnabledServersRequest) (*CountAllEnabledServersResponse, error) {
 | 
				
			||||||
 | 
						return nil, status.Errorf(codes.Unimplemented, "method CountAllEnabledServers not implemented")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					func (*UnimplementedServerServiceServer) ListEnabledServers(context.Context, *ListEnabledServersRequest) (*ListEnabledServersResponse, error) {
 | 
				
			||||||
 | 
						return nil, status.Errorf(codes.Unimplemented, "method ListEnabledServers not implemented")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func RegisterServerServiceServer(s *grpc.Server, srv ServerServiceServer) {
 | 
				
			||||||
 | 
						s.RegisterService(&_ServerService_serviceDesc, srv)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func _ServerService_CreateServer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 | 
				
			||||||
 | 
						in := new(CreateServerRequest)
 | 
				
			||||||
 | 
						if err := dec(in); err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if interceptor == nil {
 | 
				
			||||||
 | 
							return srv.(ServerServiceServer).CreateServer(ctx, in)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
 | 
							Server:     srv,
 | 
				
			||||||
 | 
							FullMethod: "/pb.ServerService/CreateServer",
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
 | 
							return srv.(ServerServiceServer).CreateServer(ctx, req.(*CreateServerRequest))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return interceptor(ctx, in, info, handler)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func _ServerService_CountAllEnabledServers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 | 
				
			||||||
 | 
						in := new(CountAllEnabledServersRequest)
 | 
				
			||||||
 | 
						if err := dec(in); err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if interceptor == nil {
 | 
				
			||||||
 | 
							return srv.(ServerServiceServer).CountAllEnabledServers(ctx, in)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
 | 
							Server:     srv,
 | 
				
			||||||
 | 
							FullMethod: "/pb.ServerService/CountAllEnabledServers",
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
 | 
							return srv.(ServerServiceServer).CountAllEnabledServers(ctx, req.(*CountAllEnabledServersRequest))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return interceptor(ctx, in, info, handler)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func _ServerService_ListEnabledServers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 | 
				
			||||||
 | 
						in := new(ListEnabledServersRequest)
 | 
				
			||||||
 | 
						if err := dec(in); err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if interceptor == nil {
 | 
				
			||||||
 | 
							return srv.(ServerServiceServer).ListEnabledServers(ctx, in)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
 | 
							Server:     srv,
 | 
				
			||||||
 | 
							FullMethod: "/pb.ServerService/ListEnabledServers",
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
 | 
							return srv.(ServerServiceServer).ListEnabledServers(ctx, req.(*ListEnabledServersRequest))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return interceptor(ctx, in, info, handler)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var _ServerService_serviceDesc = grpc.ServiceDesc{
 | 
				
			||||||
 | 
						ServiceName: "pb.ServerService",
 | 
				
			||||||
 | 
						HandlerType: (*ServerServiceServer)(nil),
 | 
				
			||||||
 | 
						Methods: []grpc.MethodDesc{
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								MethodName: "createServer",
 | 
				
			||||||
 | 
								Handler:    _ServerService_CreateServer_Handler,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								MethodName: "countAllEnabledServers",
 | 
				
			||||||
 | 
								Handler:    _ServerService_CountAllEnabledServers_Handler,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								MethodName: "listEnabledServers",
 | 
				
			||||||
 | 
								Handler:    _ServerService_ListEnabledServers_Handler,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						Streams:  []grpc.StreamDesc{},
 | 
				
			||||||
 | 
						Metadata: "service_server.proto",
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										66
									
								
								internal/rpc/pb/service_server_group.pb.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								internal/rpc/pb/service_server_group.pb.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,66 @@
 | 
				
			|||||||
 | 
					// Code generated by protoc-gen-go. DO NOT EDIT.
 | 
				
			||||||
 | 
					// versions:
 | 
				
			||||||
 | 
					// 	protoc-gen-go v1.25.0
 | 
				
			||||||
 | 
					// 	protoc        v3.12.3
 | 
				
			||||||
 | 
					// source: service_server_group.proto
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package pb
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						proto "github.com/golang/protobuf/proto"
 | 
				
			||||||
 | 
						protoreflect "google.golang.org/protobuf/reflect/protoreflect"
 | 
				
			||||||
 | 
						protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 | 
				
			||||||
 | 
						reflect "reflect"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						// Verify that this generated code is sufficiently up-to-date.
 | 
				
			||||||
 | 
						_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
 | 
				
			||||||
 | 
						// Verify that runtime/protoimpl is sufficiently up-to-date.
 | 
				
			||||||
 | 
						_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// This is a compile-time assertion that a sufficiently up-to-date version
 | 
				
			||||||
 | 
					// of the legacy proto package is being used.
 | 
				
			||||||
 | 
					const _ = proto.ProtoPackageIsVersion4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var File_service_server_group_proto protoreflect.FileDescriptor
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var file_service_server_group_proto_rawDesc = []byte{
 | 
				
			||||||
 | 
						0x0a, 0x1a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
 | 
				
			||||||
 | 
						0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62,
 | 
				
			||||||
 | 
						0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var file_service_server_group_proto_goTypes = []interface{}{}
 | 
				
			||||||
 | 
					var file_service_server_group_proto_depIdxs = []int32{
 | 
				
			||||||
 | 
						0, // [0:0] is the sub-list for method output_type
 | 
				
			||||||
 | 
						0, // [0:0] is the sub-list for method input_type
 | 
				
			||||||
 | 
						0, // [0:0] is the sub-list for extension type_name
 | 
				
			||||||
 | 
						0, // [0:0] is the sub-list for extension extendee
 | 
				
			||||||
 | 
						0, // [0:0] is the sub-list for field type_name
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func init() { file_service_server_group_proto_init() }
 | 
				
			||||||
 | 
					func file_service_server_group_proto_init() {
 | 
				
			||||||
 | 
						if File_service_server_group_proto != nil {
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						type x struct{}
 | 
				
			||||||
 | 
						out := protoimpl.TypeBuilder{
 | 
				
			||||||
 | 
							File: protoimpl.DescBuilder{
 | 
				
			||||||
 | 
								GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 | 
				
			||||||
 | 
								RawDescriptor: file_service_server_group_proto_rawDesc,
 | 
				
			||||||
 | 
								NumEnums:      0,
 | 
				
			||||||
 | 
								NumMessages:   0,
 | 
				
			||||||
 | 
								NumExtensions: 0,
 | 
				
			||||||
 | 
								NumServices:   0,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							GoTypes:           file_service_server_group_proto_goTypes,
 | 
				
			||||||
 | 
							DependencyIndexes: file_service_server_group_proto_depIdxs,
 | 
				
			||||||
 | 
						}.Build()
 | 
				
			||||||
 | 
						File_service_server_group_proto = out.File
 | 
				
			||||||
 | 
						file_service_server_group_proto_rawDesc = nil
 | 
				
			||||||
 | 
						file_service_server_group_proto_goTypes = nil
 | 
				
			||||||
 | 
						file_service_server_group_proto_depIdxs = nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,111 +0,0 @@
 | 
				
			|||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
 | 
					 | 
				
			||||||
// versions:
 | 
					 | 
				
			||||||
// 	protoc-gen-go v1.25.0
 | 
					 | 
				
			||||||
// 	protoc        v3.12.3
 | 
					 | 
				
			||||||
// source: service_stat.proto
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package pb
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	context "context"
 | 
					 | 
				
			||||||
	proto "github.com/golang/protobuf/proto"
 | 
					 | 
				
			||||||
	grpc "google.golang.org/grpc"
 | 
					 | 
				
			||||||
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
 | 
					 | 
				
			||||||
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 | 
					 | 
				
			||||||
	reflect "reflect"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const (
 | 
					 | 
				
			||||||
	// Verify that this generated code is sufficiently up-to-date.
 | 
					 | 
				
			||||||
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
 | 
					 | 
				
			||||||
	// Verify that runtime/protoimpl is sufficiently up-to-date.
 | 
					 | 
				
			||||||
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// This is a compile-time assertion that a sufficiently up-to-date version
 | 
					 | 
				
			||||||
// of the legacy proto package is being used.
 | 
					 | 
				
			||||||
const _ = proto.ProtoPackageIsVersion4
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var File_service_stat_proto protoreflect.FileDescriptor
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var file_service_stat_proto_rawDesc = []byte{
 | 
					 | 
				
			||||||
	0x0a, 0x12, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x2e, 0x70,
 | 
					 | 
				
			||||||
	0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x32, 0x0d, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x74,
 | 
					 | 
				
			||||||
	0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62,
 | 
					 | 
				
			||||||
	0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var file_service_stat_proto_goTypes = []interface{}{}
 | 
					 | 
				
			||||||
var file_service_stat_proto_depIdxs = []int32{
 | 
					 | 
				
			||||||
	0, // [0:0] is the sub-list for method output_type
 | 
					 | 
				
			||||||
	0, // [0:0] is the sub-list for method input_type
 | 
					 | 
				
			||||||
	0, // [0:0] is the sub-list for extension type_name
 | 
					 | 
				
			||||||
	0, // [0:0] is the sub-list for extension extendee
 | 
					 | 
				
			||||||
	0, // [0:0] is the sub-list for field type_name
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func init() { file_service_stat_proto_init() }
 | 
					 | 
				
			||||||
func file_service_stat_proto_init() {
 | 
					 | 
				
			||||||
	if File_service_stat_proto != nil {
 | 
					 | 
				
			||||||
		return
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	type x struct{}
 | 
					 | 
				
			||||||
	out := protoimpl.TypeBuilder{
 | 
					 | 
				
			||||||
		File: protoimpl.DescBuilder{
 | 
					 | 
				
			||||||
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 | 
					 | 
				
			||||||
			RawDescriptor: file_service_stat_proto_rawDesc,
 | 
					 | 
				
			||||||
			NumEnums:      0,
 | 
					 | 
				
			||||||
			NumMessages:   0,
 | 
					 | 
				
			||||||
			NumExtensions: 0,
 | 
					 | 
				
			||||||
			NumServices:   1,
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		GoTypes:           file_service_stat_proto_goTypes,
 | 
					 | 
				
			||||||
		DependencyIndexes: file_service_stat_proto_depIdxs,
 | 
					 | 
				
			||||||
	}.Build()
 | 
					 | 
				
			||||||
	File_service_stat_proto = out.File
 | 
					 | 
				
			||||||
	file_service_stat_proto_rawDesc = nil
 | 
					 | 
				
			||||||
	file_service_stat_proto_goTypes = nil
 | 
					 | 
				
			||||||
	file_service_stat_proto_depIdxs = nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Reference imports to suppress errors if they are not otherwise used.
 | 
					 | 
				
			||||||
var _ context.Context
 | 
					 | 
				
			||||||
var _ grpc.ClientConnInterface
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// This is a compile-time assertion to ensure that this generated file
 | 
					 | 
				
			||||||
// is compatible with the grpc package it is being compiled against.
 | 
					 | 
				
			||||||
const _ = grpc.SupportPackageIsVersion6
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// StatServiceClient is the client API for StatService service.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
 | 
					 | 
				
			||||||
type StatServiceClient interface {
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
type statServiceClient struct {
 | 
					 | 
				
			||||||
	cc grpc.ClientConnInterface
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func NewStatServiceClient(cc grpc.ClientConnInterface) StatServiceClient {
 | 
					 | 
				
			||||||
	return &statServiceClient{cc}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// StatServiceServer is the server API for StatService service.
 | 
					 | 
				
			||||||
type StatServiceServer interface {
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// UnimplementedStatServiceServer can be embedded to have forward compatible implementations.
 | 
					 | 
				
			||||||
type UnimplementedStatServiceServer struct {
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func RegisterStatServiceServer(s *grpc.Server, srv StatServiceServer) {
 | 
					 | 
				
			||||||
	s.RegisterService(&_StatService_serviceDesc, srv)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var _StatService_serviceDesc = grpc.ServiceDesc{
 | 
					 | 
				
			||||||
	ServiceName: "pb.StatService",
 | 
					 | 
				
			||||||
	HandlerType: (*StatServiceServer)(nil),
 | 
					 | 
				
			||||||
	Methods:     []grpc.MethodDesc{},
 | 
					 | 
				
			||||||
	Streams:     []grpc.StreamDesc{},
 | 
					 | 
				
			||||||
	Metadata:    "service_stat.proto",
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -7,9 +7,7 @@
 | 
				
			|||||||
package pb
 | 
					package pb
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	context "context"
 | 
					 | 
				
			||||||
	proto "github.com/golang/protobuf/proto"
 | 
						proto "github.com/golang/protobuf/proto"
 | 
				
			||||||
	grpc "google.golang.org/grpc"
 | 
					 | 
				
			||||||
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
 | 
						protoreflect "google.golang.org/protobuf/reflect/protoreflect"
 | 
				
			||||||
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 | 
						protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 | 
				
			||||||
	reflect "reflect"
 | 
						reflect "reflect"
 | 
				
			||||||
@@ -30,9 +28,8 @@ var File_service_user_proto protoreflect.FileDescriptor
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
var file_service_user_proto_rawDesc = []byte{
 | 
					var file_service_user_proto_rawDesc = []byte{
 | 
				
			||||||
	0x0a, 0x12, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x70,
 | 
						0x0a, 0x12, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x70,
 | 
				
			||||||
	0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x32, 0x0d, 0x0a, 0x0b, 0x55, 0x73, 0x65, 0x72,
 | 
						0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62,
 | 
				
			||||||
	0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62,
 | 
						0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 | 
				
			||||||
	0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var file_service_user_proto_goTypes = []interface{}{}
 | 
					var file_service_user_proto_goTypes = []interface{}{}
 | 
				
			||||||
@@ -57,7 +54,7 @@ func file_service_user_proto_init() {
 | 
				
			|||||||
			NumEnums:      0,
 | 
								NumEnums:      0,
 | 
				
			||||||
			NumMessages:   0,
 | 
								NumMessages:   0,
 | 
				
			||||||
			NumExtensions: 0,
 | 
								NumExtensions: 0,
 | 
				
			||||||
			NumServices:   1,
 | 
								NumServices:   0,
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		GoTypes:           file_service_user_proto_goTypes,
 | 
							GoTypes:           file_service_user_proto_goTypes,
 | 
				
			||||||
		DependencyIndexes: file_service_user_proto_depIdxs,
 | 
							DependencyIndexes: file_service_user_proto_depIdxs,
 | 
				
			||||||
@@ -67,45 +64,3 @@ func file_service_user_proto_init() {
 | 
				
			|||||||
	file_service_user_proto_goTypes = nil
 | 
						file_service_user_proto_goTypes = nil
 | 
				
			||||||
	file_service_user_proto_depIdxs = nil
 | 
						file_service_user_proto_depIdxs = nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
// Reference imports to suppress errors if they are not otherwise used.
 | 
					 | 
				
			||||||
var _ context.Context
 | 
					 | 
				
			||||||
var _ grpc.ClientConnInterface
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// This is a compile-time assertion to ensure that this generated file
 | 
					 | 
				
			||||||
// is compatible with the grpc package it is being compiled against.
 | 
					 | 
				
			||||||
const _ = grpc.SupportPackageIsVersion6
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// UserServiceClient is the client API for UserService service.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
 | 
					 | 
				
			||||||
type UserServiceClient interface {
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
type userServiceClient struct {
 | 
					 | 
				
			||||||
	cc grpc.ClientConnInterface
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func NewUserServiceClient(cc grpc.ClientConnInterface) UserServiceClient {
 | 
					 | 
				
			||||||
	return &userServiceClient{cc}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// UserServiceServer is the server API for UserService service.
 | 
					 | 
				
			||||||
type UserServiceServer interface {
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// UnimplementedUserServiceServer can be embedded to have forward compatible implementations.
 | 
					 | 
				
			||||||
type UnimplementedUserServiceServer struct {
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func RegisterUserServiceServer(s *grpc.Server, srv UserServiceServer) {
 | 
					 | 
				
			||||||
	s.RegisterService(&_UserService_serviceDesc, srv)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var _UserService_serviceDesc = grpc.ServiceDesc{
 | 
					 | 
				
			||||||
	ServiceName: "pb.UserService",
 | 
					 | 
				
			||||||
	HandlerType: (*UserServiceServer)(nil),
 | 
					 | 
				
			||||||
	Methods:     []grpc.MethodDesc{},
 | 
					 | 
				
			||||||
	Streams:     []grpc.StreamDesc{},
 | 
					 | 
				
			||||||
	Metadata:    "service_user.proto",
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,11 +3,11 @@ option go_package = "./pb";
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
package pb;
 | 
					package pb;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import "model_cluster.proto";
 | 
					import "model_node_cluster.proto";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
message Node {
 | 
					message Node {
 | 
				
			||||||
	int64 id = 1;
 | 
						int64 id = 1;
 | 
				
			||||||
	string name = 2;
 | 
						string name = 2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Cluster cluster = 32;
 | 
						NodeCluster cluster = 32;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -3,7 +3,7 @@ option go_package = "./pb";
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
package pb;
 | 
					package pb;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
message Cluster {
 | 
					message NodeCluster {
 | 
				
			||||||
	int64 id = 1;
 | 
						int64 id = 1;
 | 
				
			||||||
	string name = 2;
 | 
						string name = 2;
 | 
				
			||||||
	int64 createdAt = 3;
 | 
						int64 createdAt = 3;
 | 
				
			||||||
							
								
								
									
										15
									
								
								internal/rpc/protos/model_node_grant.proto
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								internal/rpc/protos/model_node_grant.proto
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,15 @@
 | 
				
			|||||||
 | 
					syntax = "proto3";
 | 
				
			||||||
 | 
					option go_package = "./pb";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package pb;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message NodeGrant {
 | 
				
			||||||
 | 
						int64 id = 1;
 | 
				
			||||||
 | 
						string name = 2;
 | 
				
			||||||
 | 
						string method = 3;
 | 
				
			||||||
 | 
						string password = 4;
 | 
				
			||||||
 | 
						bool su = 5;
 | 
				
			||||||
 | 
						string privateKey = 6;
 | 
				
			||||||
 | 
						string description = 7;
 | 
				
			||||||
 | 
						int64 nodeId = 8;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										16
									
								
								internal/rpc/protos/model_server.proto
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								internal/rpc/protos/model_server.proto
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
				
			|||||||
 | 
					syntax = "proto3";
 | 
				
			||||||
 | 
					option go_package = "./pb";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package pb;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import "model_node_cluster.proto";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message Server {
 | 
				
			||||||
 | 
						int64 id = 1;
 | 
				
			||||||
 | 
						bytes config = 2;
 | 
				
			||||||
 | 
						bytes includeNodes = 3;
 | 
				
			||||||
 | 
						bytes excludeNodes = 4;
 | 
				
			||||||
 | 
						int64 createdAt = 5;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						NodeCluster cluster = 6;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -3,117 +3,63 @@ option go_package = "./pb";
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
package pb;
 | 
					package pb;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import "model_cluster.proto";
 | 
					 | 
				
			||||||
import "model_node.proto";
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
service AdminService {
 | 
					service AdminService {
 | 
				
			||||||
	// 登录
 | 
						// 登录
 | 
				
			||||||
	rpc login (AdminLoginRequest) returns (AdminLoginResponse) {
 | 
						rpc loginAdmin (LoginAdminRequest) returns (LoginAdminResponse) {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// 创建操作日志
 | 
						// 创建操作日志
 | 
				
			||||||
	rpc createLog (AdminCreateLogRequest) returns (AdminCreateLogResponse) {
 | 
						rpc createAdminLog (CreateAdminLogRequest) returns (CreateAdminLogResponse) {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// 检查管理员是否存在
 | 
						// 检查管理员是否存在
 | 
				
			||||||
	rpc checkAdminExists (AdminCheckAdminExistsRequest) returns (AdminCheckAdminExistsResponse) {
 | 
						rpc checkAdminExists (CheckAdminExistsRequest) returns (CheckAdminExistsResponse) {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// 获取管理员名称
 | 
						// 获取管理员名称
 | 
				
			||||||
	rpc findAdminFullname (AdminFindAdminNameRequest) returns (AdminFindAdminNameResponse) {
 | 
						rpc findAdminFullname (FindAdminNameRequest) returns (FindAdminNameResponse) {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// 获取所有集群的信息
 | 
					 | 
				
			||||||
	rpc findAllEnabledClusters (AdminFindAllEnabledClustersRequest) returns (AdminFindAllEnabledClustersResponse) {
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// 创建节点
 | 
					 | 
				
			||||||
	rpc createNode (AdminCreateNodeRequest) returns (AdminCreateNodeResponse) {
 | 
					 | 
				
			||||||
	};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// 节点数量
 | 
					 | 
				
			||||||
	rpc countAllEnabledNodes (AdminCountAllEnabledNodesRequest) returns (AdminCountAllEnabledNodesResponse) {
 | 
					 | 
				
			||||||
	};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// 列出单页节点
 | 
					 | 
				
			||||||
	rpc listEnabledNodes (AdminListEnabledNodesRequest) returns (AdminListEnabledNodesResponse) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
message AdminLoginRequest {
 | 
					message LoginAdminRequest {
 | 
				
			||||||
	string username = 1;
 | 
						string username = 1;
 | 
				
			||||||
	string password = 2;
 | 
						string password = 2;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
message AdminLoginResponse {
 | 
					message LoginAdminResponse {
 | 
				
			||||||
	int64 adminId = 1;
 | 
						int64 adminId = 1;
 | 
				
			||||||
	bool isOk = 2;
 | 
						bool isOk = 2;
 | 
				
			||||||
	string message = 3;
 | 
						string message = 3;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
message AdminCreateLogRequest {
 | 
					message CreateAdminLogRequest {
 | 
				
			||||||
	string level = 1;
 | 
						string level = 1;
 | 
				
			||||||
	string description = 2;
 | 
						string description = 2;
 | 
				
			||||||
	string action = 3;
 | 
						string action = 3;
 | 
				
			||||||
	string ip = 4;
 | 
						string ip = 4;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
message AdminCreateLogResponse {
 | 
					message CreateAdminLogResponse {
 | 
				
			||||||
	bool isOk = 1;
 | 
						bool isOk = 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
message AdminCheckAdminExistsRequest {
 | 
					message CheckAdminExistsRequest {
 | 
				
			||||||
	int64 adminId = 1;
 | 
						int64 adminId = 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
message AdminCheckAdminExistsResponse {
 | 
					message CheckAdminExistsResponse {
 | 
				
			||||||
	bool isOk = 1;
 | 
						bool isOk = 1;
 | 
				
			||||||
	string message = 2;
 | 
						string message = 2;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
message AdminFindAdminNameRequest {
 | 
					message FindAdminNameRequest {
 | 
				
			||||||
	int64 adminId = 1;
 | 
						int64 adminId = 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
message AdminFindAdminNameResponse {
 | 
					message FindAdminNameResponse {
 | 
				
			||||||
	string fullname = 1;
 | 
						string fullname = 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
message AdminFindAllEnabledClustersRequest {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
message AdminFindAllEnabledClustersResponse {
 | 
					 | 
				
			||||||
	repeated Cluster clusters = 1;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// 创建节点
 | 
					 | 
				
			||||||
message AdminCreateNodeRequest {
 | 
					 | 
				
			||||||
	string name = 1;
 | 
					 | 
				
			||||||
	int64 clusterId = 2;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
message AdminCreateNodeResponse {
 | 
					 | 
				
			||||||
	int64 nodeId = 1;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// 节点数量
 | 
					 | 
				
			||||||
message AdminCountAllEnabledNodesRequest {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
message AdminCountAllEnabledNodesResponse {
 | 
					 | 
				
			||||||
	int64 count = 1;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// 列出单页节点
 | 
					 | 
				
			||||||
message AdminListEnabledNodesRequest {
 | 
					 | 
				
			||||||
	int64 offset = 1;
 | 
					 | 
				
			||||||
	int64 size = 2;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
message AdminListEnabledNodesResponse {
 | 
					 | 
				
			||||||
	repeated Node nodes = 1;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,9 +1,5 @@
 | 
				
			|||||||
syntax = "proto3";
 | 
					syntax = "proto3";
 | 
				
			||||||
 | 
					option go_package = "./pb";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package pb;
 | 
					package pb;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
option go_package = "./pb";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
service LogService {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,19 +1,45 @@
 | 
				
			|||||||
syntax = "proto3";
 | 
					syntax = "proto3";
 | 
				
			||||||
 | 
					 | 
				
			||||||
package pb;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
option go_package = "./pb";
 | 
					option go_package = "./pb";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package pb;
 | 
				
			||||||
 | 
					import "model_node.proto";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
service NodeService {
 | 
					service NodeService {
 | 
				
			||||||
	rpc config (ConfigRequest) returns (ConfigResponse) {
 | 
						// 创建节点
 | 
				
			||||||
 | 
						rpc createNode (CreateNodeRequest) returns (CreateNodeResponse);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	}
 | 
						// 节点数量
 | 
				
			||||||
 | 
						rpc countAllEnabledNodes (CountAllEnabledNodesRequest) returns (CountAllEnabledNodesResponse);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// 列出单页节点
 | 
				
			||||||
 | 
						rpc listEnabledNodes (ListEnabledNodesRequest) returns (ListEnabledNodesResponse);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
message ConfigRequest {
 | 
					// 创建节点
 | 
				
			||||||
	string nodeId = 1;
 | 
					message CreateNodeRequest {
 | 
				
			||||||
 | 
						string name = 1;
 | 
				
			||||||
 | 
						int64 clusterId = 2;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
message ConfigResponse {
 | 
					message CreateNodeResponse {
 | 
				
			||||||
	string id = 1;
 | 
						int64 nodeId = 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 节点数量
 | 
				
			||||||
 | 
					message CountAllEnabledNodesRequest {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message CountAllEnabledNodesResponse {
 | 
				
			||||||
 | 
						int64 count = 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 列出单页节点
 | 
				
			||||||
 | 
					message ListEnabledNodesRequest {
 | 
				
			||||||
 | 
						int64 offset = 1;
 | 
				
			||||||
 | 
						int64 size = 2;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message ListEnabledNodesResponse {
 | 
				
			||||||
 | 
						repeated Node nodes = 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
							
								
								
									
										18
									
								
								internal/rpc/protos/service_node_cluster.proto
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								internal/rpc/protos/service_node_cluster.proto
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					syntax = "proto3";
 | 
				
			||||||
 | 
					option go_package = "./pb";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package pb;
 | 
				
			||||||
 | 
					import "model_node_cluster.proto";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					service NodeClusterService {
 | 
				
			||||||
 | 
						// 获取所有集群的信息
 | 
				
			||||||
 | 
						rpc findAllEnabledClusters (FindAllEnabledNodeClustersRequest) returns (FindAllEnabledNodeClustersResponse);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message FindAllEnabledNodeClustersRequest {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message FindAllEnabledNodeClustersResponse {
 | 
				
			||||||
 | 
						repeated NodeCluster clusters = 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										81
									
								
								internal/rpc/protos/service_node_grant.proto
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								internal/rpc/protos/service_node_grant.proto
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,81 @@
 | 
				
			|||||||
 | 
					syntax = "proto3";
 | 
				
			||||||
 | 
					option go_package = "./pb";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package pb;
 | 
				
			||||||
 | 
					import "model_node_grant.proto";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					service NodeGrantService {
 | 
				
			||||||
 | 
						// 创建认证
 | 
				
			||||||
 | 
						rpc createNodeGrant (CreateNodeGrantRequest) returns (CreateNodeGrantResponse);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// 修改认证
 | 
				
			||||||
 | 
						rpc updateNodeGrant (UpdateNodeGrantRequest) returns (UpdateNodeGrantResponse);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// 禁用认证
 | 
				
			||||||
 | 
						rpc disableNodeGrant (DisableNodeGrantRequest) returns (DisableNodeGrantResponse);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// 计算认证的数量
 | 
				
			||||||
 | 
						rpc countAllEnabledNodeGrants (CountAllEnabledNodeGrantsRequest) returns (CountAllEnabledNodeGrantsResponse);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// 列出所有认证
 | 
				
			||||||
 | 
						rpc ListEnabledNodeGrants (ListEnabledNodeGrantsRequest) returns (ListEnabledNodeGrantsResponse);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 创建节点认证
 | 
				
			||||||
 | 
					message CreateNodeGrantRequest {
 | 
				
			||||||
 | 
						string name = 1;
 | 
				
			||||||
 | 
						string method = 2;
 | 
				
			||||||
 | 
						string username = 3;
 | 
				
			||||||
 | 
						string password = 4;
 | 
				
			||||||
 | 
						string privateKey = 5;
 | 
				
			||||||
 | 
						string description = 6;
 | 
				
			||||||
 | 
						int64 nodeId = 7;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message CreateNodeGrantResponse {
 | 
				
			||||||
 | 
						int64 grantId = 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 修改节点认证
 | 
				
			||||||
 | 
					message UpdateNodeGrantRequest {
 | 
				
			||||||
 | 
						int64 grantId = 8;
 | 
				
			||||||
 | 
						string name = 1;
 | 
				
			||||||
 | 
						string method = 2;
 | 
				
			||||||
 | 
						string username = 3;
 | 
				
			||||||
 | 
						string password = 4;
 | 
				
			||||||
 | 
						string privateKey = 5;
 | 
				
			||||||
 | 
						string description = 6;
 | 
				
			||||||
 | 
						int64 nodeId = 7;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message UpdateNodeGrantResponse {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 禁用节点认证
 | 
				
			||||||
 | 
					message DisableNodeGrantRequest {
 | 
				
			||||||
 | 
						int64 grantId = 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message DisableNodeGrantResponse {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 计算节点认证数量
 | 
				
			||||||
 | 
					message CountAllEnabledNodeGrantsRequest {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message CountAllEnabledNodeGrantsResponse {
 | 
				
			||||||
 | 
						int64 count = 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 列出所有认证
 | 
				
			||||||
 | 
					message ListEnabledNodeGrantsRequest {
 | 
				
			||||||
 | 
						int64 offset = 1;
 | 
				
			||||||
 | 
						int64 size = 2;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message ListEnabledNodeGrantsResponse {
 | 
				
			||||||
 | 
						repeated NodeGrant grants = 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,9 +1,5 @@
 | 
				
			|||||||
syntax = "proto3";
 | 
					syntax = "proto3";
 | 
				
			||||||
 | 
					option go_package = "./pb";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package pb;
 | 
					package pb;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
option go_package = "./pb";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
service DnsService {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,9 +1,5 @@
 | 
				
			|||||||
syntax = "proto3";
 | 
					syntax = "proto3";
 | 
				
			||||||
 | 
					option go_package = "./pb";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package pb;
 | 
					package pb;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
option go_package = "./pb";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
service StatService {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,9 +0,0 @@
 | 
				
			|||||||
syntax = "proto3";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package pb;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
option go_package = "./pb";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
service ProviderService {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										50
									
								
								internal/rpc/protos/service_server.proto
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								internal/rpc/protos/service_server.proto
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,50 @@
 | 
				
			|||||||
 | 
					syntax = "proto3";
 | 
				
			||||||
 | 
					option go_package = "./pb";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package pb;
 | 
				
			||||||
 | 
					import "model_server.proto";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					service ServerService {
 | 
				
			||||||
 | 
						// 创建服务
 | 
				
			||||||
 | 
						rpc createServer (CreateServerRequest) returns (CreateServerResponse);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// 计算服务数量
 | 
				
			||||||
 | 
						rpc countAllEnabledServers (CountAllEnabledServersRequest) returns (CountAllEnabledServersResponse);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// 列出单页服务
 | 
				
			||||||
 | 
						rpc listEnabledServers (ListEnabledServersRequest) returns (ListEnabledServersResponse);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 创建服务
 | 
				
			||||||
 | 
					message CreateServerRequest {
 | 
				
			||||||
 | 
						int64 userId = 1;
 | 
				
			||||||
 | 
						int64 adminId = 2;
 | 
				
			||||||
 | 
						int64 clusterId = 6;
 | 
				
			||||||
 | 
						bytes config = 3;
 | 
				
			||||||
 | 
						bytes includeNodesJSON = 4;
 | 
				
			||||||
 | 
						bytes excludeNodesJSON = 5;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message CreateServerResponse {
 | 
				
			||||||
 | 
						int64 serverId = 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 计算服务数量
 | 
				
			||||||
 | 
					message CountAllEnabledServersRequest {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message CountAllEnabledServersResponse {
 | 
				
			||||||
 | 
						int64 count = 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 列出单页服务
 | 
				
			||||||
 | 
					message ListEnabledServersRequest {
 | 
				
			||||||
 | 
						int64 offset = 1;
 | 
				
			||||||
 | 
						int64 size = 2;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message ListEnabledServersResponse {
 | 
				
			||||||
 | 
						repeated Server servers = 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,9 +1,5 @@
 | 
				
			|||||||
syntax = "proto3";
 | 
					syntax = "proto3";
 | 
				
			||||||
 | 
					option go_package = "./pb";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package pb;
 | 
					package pb;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
option go_package = "./pb";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
service MonitorService {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -3,6 +3,3 @@ option go_package = "./pb";
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
package pb;
 | 
					package pb;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
service UserService {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,31 +2,24 @@ package services
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"context"
 | 
						"context"
 | 
				
			||||||
	"encoding/base64"
 | 
					 | 
				
			||||||
	"encoding/json"
 | 
					 | 
				
			||||||
	"errors"
 | 
					 | 
				
			||||||
	teaconst "github.com/TeaOSLab/EdgeAPI/internal/const"
 | 
					 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAPI/internal/db/models"
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/db/models"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAPI/internal/encrypt"
 | 
					 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAPI/internal/rpc/pb"
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/rpc/pb"
 | 
				
			||||||
 | 
						rpcutils "github.com/TeaOSLab/EdgeAPI/internal/rpc/utils"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAPI/internal/utils"
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/utils"
 | 
				
			||||||
	"github.com/iwind/TeaGo/maps"
 | 
					 | 
				
			||||||
	"google.golang.org/grpc/metadata"
 | 
					 | 
				
			||||||
	"time"
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type AdminService struct {
 | 
					type AdminService struct {
 | 
				
			||||||
	debug bool
 | 
						debug bool
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (this *AdminService) Login(ctx context.Context, req *pb.AdminLoginRequest) (*pb.AdminLoginResponse, error) {
 | 
					func (this *AdminService) LoginAdmin(ctx context.Context, req *pb.LoginAdminRequest) (*pb.LoginAdminResponse, error) {
 | 
				
			||||||
	_, err := this.validateRequest(ctx)
 | 
						_, _, err := rpcutils.ValidateRequest(ctx)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if len(req.Username) == 0 || len(req.Password) == 0 {
 | 
						if len(req.Username) == 0 || len(req.Password) == 0 {
 | 
				
			||||||
		return &pb.AdminLoginResponse{
 | 
							return &pb.LoginAdminResponse{
 | 
				
			||||||
			AdminId: 0,
 | 
								AdminId: 0,
 | 
				
			||||||
			IsOk:    false,
 | 
								IsOk:    false,
 | 
				
			||||||
			Message: "请输入正确的用户名密码",
 | 
								Message: "请输入正确的用户名密码",
 | 
				
			||||||
@@ -40,38 +33,38 @@ func (this *AdminService) Login(ctx context.Context, req *pb.AdminLoginRequest)
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if adminId <= 0 {
 | 
						if adminId <= 0 {
 | 
				
			||||||
		return &pb.AdminLoginResponse{
 | 
							return &pb.LoginAdminResponse{
 | 
				
			||||||
			AdminId: 0,
 | 
								AdminId: 0,
 | 
				
			||||||
			IsOk:    false,
 | 
								IsOk:    false,
 | 
				
			||||||
			Message: "请输入正确的用户名密码",
 | 
								Message: "请输入正确的用户名密码",
 | 
				
			||||||
		}, nil
 | 
							}, nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return &pb.AdminLoginResponse{
 | 
						return &pb.LoginAdminResponse{
 | 
				
			||||||
		AdminId: int64(adminId),
 | 
							AdminId: int64(adminId),
 | 
				
			||||||
		IsOk:    true,
 | 
							IsOk:    true,
 | 
				
			||||||
	}, nil
 | 
						}, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (this *AdminService) CreateLog(ctx context.Context, req *pb.AdminCreateLogRequest) (*pb.AdminCreateLogResponse, error) {
 | 
					func (this *AdminService) CreateAdminLog(ctx context.Context, req *pb.CreateAdminLogRequest) (*pb.CreateAdminLogResponse, error) {
 | 
				
			||||||
	adminId, err := this.validateAdminRequest(ctx)
 | 
						_, userId, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	err = models.SharedLogDAO.CreateAdminLog(adminId, req.Level, req.Description, req.Action, req.Ip)
 | 
						err = models.SharedLogDAO.CreateAdminLog(userId, req.Level, req.Description, req.Action, req.Ip)
 | 
				
			||||||
	return &pb.AdminCreateLogResponse{
 | 
						return &pb.CreateAdminLogResponse{
 | 
				
			||||||
		IsOk: err != nil,
 | 
							IsOk: err != nil,
 | 
				
			||||||
	}, err
 | 
						}, err
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (this *AdminService) CheckAdminExists(ctx context.Context, req *pb.AdminCheckAdminExistsRequest) (*pb.AdminCheckAdminExistsResponse, error) {
 | 
					func (this *AdminService) CheckAdminExists(ctx context.Context, req *pb.CheckAdminExistsRequest) (*pb.CheckAdminExistsResponse, error) {
 | 
				
			||||||
	_, err := this.validateRequest(ctx)
 | 
						_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if req.AdminId <= 0 {
 | 
						if req.AdminId <= 0 {
 | 
				
			||||||
		return &pb.AdminCheckAdminExistsResponse{
 | 
							return &pb.CheckAdminExistsResponse{
 | 
				
			||||||
			IsOk: false,
 | 
								IsOk: false,
 | 
				
			||||||
		}, nil
 | 
							}, nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -81,13 +74,13 @@ func (this *AdminService) CheckAdminExists(ctx context.Context, req *pb.AdminChe
 | 
				
			|||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return &pb.AdminCheckAdminExistsResponse{
 | 
						return &pb.CheckAdminExistsResponse{
 | 
				
			||||||
		IsOk: ok,
 | 
							IsOk: ok,
 | 
				
			||||||
	}, nil
 | 
						}, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (this *AdminService) FindAdminFullname(ctx context.Context, req *pb.AdminFindAdminNameRequest) (*pb.AdminFindAdminNameResponse, error) {
 | 
					func (this *AdminService) FindAdminFullname(ctx context.Context, req *pb.FindAdminNameRequest) (*pb.FindAdminNameResponse, error) {
 | 
				
			||||||
	_, err := this.validateRequest(ctx)
 | 
						_, _, err := rpcutils.ValidateRequest(ctx)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -98,173 +91,7 @@ func (this *AdminService) FindAdminFullname(ctx context.Context, req *pb.AdminFi
 | 
				
			|||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return &pb.AdminFindAdminNameResponse{
 | 
						return &pb.FindAdminNameResponse{
 | 
				
			||||||
		Fullname: fullname,
 | 
							Fullname: fullname,
 | 
				
			||||||
	}, nil
 | 
						}, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
func (this *AdminService) FindAllEnabledClusters(ctx context.Context, req *pb.AdminFindAllEnabledClustersRequest) (*pb.AdminFindAllEnabledClustersResponse, error) {
 | 
					 | 
				
			||||||
	_ = req
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	_, err := this.validateAdminRequest(ctx)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	clusters, err := models.SharedNodeClusterDAO.FindAllEnableClusters()
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	result := []*pb.Cluster{}
 | 
					 | 
				
			||||||
	for _, cluster := range clusters {
 | 
					 | 
				
			||||||
		result = append(result, &pb.Cluster{
 | 
					 | 
				
			||||||
			Id:        int64(cluster.Id),
 | 
					 | 
				
			||||||
			Name:      cluster.Name,
 | 
					 | 
				
			||||||
			CreatedAt: int64(cluster.CreatedAt),
 | 
					 | 
				
			||||||
		})
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return &pb.AdminFindAllEnabledClustersResponse{
 | 
					 | 
				
			||||||
		Clusters: result,
 | 
					 | 
				
			||||||
	}, nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (this *AdminService) CreateNode(ctx context.Context, req *pb.AdminCreateNodeRequest) (*pb.AdminCreateNodeResponse, error) {
 | 
					 | 
				
			||||||
	_, err := this.validateAdminRequest(ctx)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	nodeId, err := models.SharedNodeDAO.CreateNode(req.Name, int(req.ClusterId))
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return &pb.AdminCreateNodeResponse{
 | 
					 | 
				
			||||||
		NodeId: int64(nodeId),
 | 
					 | 
				
			||||||
	}, nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (this *AdminService) CountAllEnabledNodes(ctx context.Context, req *pb.AdminCountAllEnabledNodesRequest) (*pb.AdminCountAllEnabledNodesResponse, error) {
 | 
					 | 
				
			||||||
	_, err := this.validateAdminRequest(ctx)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	count, err := models.SharedNodeDAO.CountAllEnabledNodes()
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return &pb.AdminCountAllEnabledNodesResponse{Count: count}, nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (this *AdminService) ListEnabledNodes(ctx context.Context, req *pb.AdminListEnabledNodesRequest) (*pb.AdminListEnabledNodesResponse, error) {
 | 
					 | 
				
			||||||
	_, err := this.validateAdminRequest(ctx)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	nodes, err := models.SharedNodeDAO.ListEnabledNodes(req.Offset, req.Size)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	result := []*pb.Node{}
 | 
					 | 
				
			||||||
	for _, node := range nodes {
 | 
					 | 
				
			||||||
		// 集群信息
 | 
					 | 
				
			||||||
		clusterName, err := models.SharedNodeClusterDAO.FindNodeClusterName(int64(node.ClusterId))
 | 
					 | 
				
			||||||
		if err != nil {
 | 
					 | 
				
			||||||
			return nil, err
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		result = append(result, &pb.Node{
 | 
					 | 
				
			||||||
			Id:   int64(node.Id),
 | 
					 | 
				
			||||||
			Name: node.Name,
 | 
					 | 
				
			||||||
			Cluster: &pb.Cluster{
 | 
					 | 
				
			||||||
				Id:   int64(node.ClusterId),
 | 
					 | 
				
			||||||
				Name: clusterName,
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
		})
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return &pb.AdminListEnabledNodesResponse{
 | 
					 | 
				
			||||||
		Nodes: result,
 | 
					 | 
				
			||||||
	}, nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (this *AdminService) validateRequest(ctx context.Context) (adminId int, err error) {
 | 
					 | 
				
			||||||
	var md metadata.MD
 | 
					 | 
				
			||||||
	var ok bool
 | 
					 | 
				
			||||||
	if this.debug {
 | 
					 | 
				
			||||||
		md, ok = metadata.FromOutgoingContext(ctx)
 | 
					 | 
				
			||||||
	} else {
 | 
					 | 
				
			||||||
		md, ok = metadata.FromIncomingContext(ctx)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if !ok {
 | 
					 | 
				
			||||||
		return 0, errors.New("context: need 'nodeId'")
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	nodeIds := md.Get("nodeid")
 | 
					 | 
				
			||||||
	if len(nodeIds) == 0 || len(nodeIds[0]) == 0 {
 | 
					 | 
				
			||||||
		return 0, errors.New("context: need 'nodeId'")
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	nodeId := nodeIds[0]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// 获取Node信息
 | 
					 | 
				
			||||||
	apiToken, err := models.SharedApiTokenDAO.FindEnabledTokenWithNode(nodeId)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		utils.PrintError(err)
 | 
					 | 
				
			||||||
		return 0, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if apiToken == nil {
 | 
					 | 
				
			||||||
		return 0, errors.New("can not find token from node id: " + err.Error())
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	tokens := md.Get("token")
 | 
					 | 
				
			||||||
	if len(tokens) == 0 || len(tokens[0]) == 0 {
 | 
					 | 
				
			||||||
		return 0, errors.New("context: need 'token'")
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	token := tokens[0]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	data, err := base64.StdEncoding.DecodeString(token)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return 0, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	method, err := encrypt.NewMethodInstance(teaconst.EncryptMethod, apiToken.Secret, nodeId)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		utils.PrintError(err)
 | 
					 | 
				
			||||||
		return 0, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	data, err = method.Decrypt(data)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return 0, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if len(data) == 0 {
 | 
					 | 
				
			||||||
		return 0, errors.New("invalid token")
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	m := maps.Map{}
 | 
					 | 
				
			||||||
	err = json.Unmarshal(data, &m)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return 0, errors.New("decode token error: " + err.Error())
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	timestamp := m.GetInt64("timestamp")
 | 
					 | 
				
			||||||
	if time.Now().Unix()-timestamp > 600 {
 | 
					 | 
				
			||||||
		// 请求超过10分钟认为超时
 | 
					 | 
				
			||||||
		return 0, errors.New("authenticate timeout")
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	adminId = m.GetInt("adminId")
 | 
					 | 
				
			||||||
	return
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (this *AdminService) validateAdminRequest(ctx context.Context) (adminId int, err error) {
 | 
					 | 
				
			||||||
	adminId, err = this.validateRequest(ctx)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return 0, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if adminId <= 0 {
 | 
					 | 
				
			||||||
		return 0, errors.New("invalid admin id")
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +0,0 @@
 | 
				
			|||||||
package services
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
type DNSService struct {
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,4 +0,0 @@
 | 
				
			|||||||
package services
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
type LogService struct {
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,4 +0,0 @@
 | 
				
			|||||||
package services
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
type MonitorService struct {
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -2,16 +2,71 @@ package services
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"context"
 | 
						"context"
 | 
				
			||||||
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/db/models"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAPI/internal/rpc/pb"
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/rpc/pb"
 | 
				
			||||||
	"github.com/iwind/TeaGo/logs"
 | 
						rpcutils "github.com/TeaOSLab/EdgeAPI/internal/rpc/utils"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type NodeService struct {
 | 
					type NodeService struct {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (this *NodeService) Config(ctx context.Context, req *pb.ConfigRequest) (*pb.ConfigResponse, error) {
 | 
					func (this *NodeService) CreateNode(ctx context.Context, req *pb.CreateNodeRequest) (*pb.CreateNodeResponse, error) {
 | 
				
			||||||
	logs.Println("you called me")
 | 
						_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
 | 
				
			||||||
	return &pb.ConfigResponse{
 | 
						if err != nil {
 | 
				
			||||||
		Id: req.NodeId,
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						nodeId, err := models.SharedNodeDAO.CreateNode(req.Name, int(req.ClusterId))
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return &pb.CreateNodeResponse{
 | 
				
			||||||
 | 
							NodeId: int64(nodeId),
 | 
				
			||||||
 | 
						}, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (this *NodeService) CountAllEnabledNodes(ctx context.Context, req *pb.CountAllEnabledNodesRequest) (*pb.CountAllEnabledNodesResponse, error) {
 | 
				
			||||||
 | 
						_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						count, err := models.SharedNodeDAO.CountAllEnabledNodes()
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return &pb.CountAllEnabledNodesResponse{Count: count}, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (this *NodeService) ListEnabledNodes(ctx context.Context, req *pb.ListEnabledNodesRequest) (*pb.ListEnabledNodesResponse, error) {
 | 
				
			||||||
 | 
						_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						nodes, err := models.SharedNodeDAO.ListEnabledNodes(req.Offset, req.Size)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						result := []*pb.Node{}
 | 
				
			||||||
 | 
						for _, node := range nodes {
 | 
				
			||||||
 | 
							// 集群信息
 | 
				
			||||||
 | 
							clusterName, err := models.SharedNodeClusterDAO.FindNodeClusterName(int64(node.ClusterId))
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return nil, err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							result = append(result, &pb.Node{
 | 
				
			||||||
 | 
								Id:   int64(node.Id),
 | 
				
			||||||
 | 
								Name: node.Name,
 | 
				
			||||||
 | 
								Cluster: &pb.NodeCluster{
 | 
				
			||||||
 | 
									Id:   int64(node.ClusterId),
 | 
				
			||||||
 | 
									Name: clusterName,
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return &pb.ListEnabledNodesResponse{
 | 
				
			||||||
 | 
							Nodes: result,
 | 
				
			||||||
	}, nil
 | 
						}, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										38
									
								
								internal/rpc/services/service_node_cluster.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								internal/rpc/services/service_node_cluster.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,38 @@
 | 
				
			|||||||
 | 
					package services
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"context"
 | 
				
			||||||
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/db/models"
 | 
				
			||||||
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/rpc/pb"
 | 
				
			||||||
 | 
						rpcutils "github.com/TeaOSLab/EdgeAPI/internal/rpc/utils"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type NodeClusterService struct {
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (this *NodeClusterService) FindAllEnabledClusters(ctx context.Context, req *pb.FindAllEnabledNodeClustersRequest) (*pb.FindAllEnabledNodeClustersResponse, error) {
 | 
				
			||||||
 | 
						_ = req
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						clusters, err := models.SharedNodeClusterDAO.FindAllEnableClusters()
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						result := []*pb.NodeCluster{}
 | 
				
			||||||
 | 
						for _, cluster := range clusters {
 | 
				
			||||||
 | 
							result = append(result, &pb.NodeCluster{
 | 
				
			||||||
 | 
								Id:        int64(cluster.Id),
 | 
				
			||||||
 | 
								Name:      cluster.Name,
 | 
				
			||||||
 | 
								CreatedAt: int64(cluster.CreatedAt),
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return &pb.FindAllEnabledNodeClustersResponse{
 | 
				
			||||||
 | 
							Clusters: result,
 | 
				
			||||||
 | 
						}, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										89
									
								
								internal/rpc/services/service_node_grant.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								internal/rpc/services/service_node_grant.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,89 @@
 | 
				
			|||||||
 | 
					package services
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"context"
 | 
				
			||||||
 | 
						"errors"
 | 
				
			||||||
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/db/models"
 | 
				
			||||||
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/rpc/pb"
 | 
				
			||||||
 | 
						rpcutils "github.com/TeaOSLab/EdgeAPI/internal/rpc/utils"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type NodeGrantService struct {
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (this *NodeGrantService) CreateNodeGrant(ctx context.Context, req *pb.CreateNodeGrantRequest) (*pb.CreateNodeGrantResponse, error) {
 | 
				
			||||||
 | 
						_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						grantId, err := models.SharedNodeGrantDAO.CreateGrant(req.Name, req.Method, req.Username, req.Password, req.PrivateKey, req.Description, req.NodeId)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return &pb.CreateNodeGrantResponse{
 | 
				
			||||||
 | 
							GrantId: grantId,
 | 
				
			||||||
 | 
						}, err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (this *NodeGrantService) UpdateNodeGrant(ctx context.Context, req *pb.UpdateNodeGrantRequest) (*pb.UpdateNodeGrantResponse, error) {
 | 
				
			||||||
 | 
						_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if req.GrantId <= 0 {
 | 
				
			||||||
 | 
							return nil, errors.New("wrong grantId")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err = models.SharedNodeGrantDAO.UpdateGrant(req.GrantId, req.Name, req.Method, req.Username, req.Password, req.PrivateKey, req.Description, req.NodeId)
 | 
				
			||||||
 | 
						return &pb.UpdateNodeGrantResponse{}, err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (this *NodeGrantService) DisableNodeGrant(ctx context.Context, req *pb.DisableNodeGrantRequest) (*pb.DisableNodeGrantResponse, error) {
 | 
				
			||||||
 | 
						_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err = models.SharedNodeGrantDAO.DisableNodeGrant(req.GrantId)
 | 
				
			||||||
 | 
						return &pb.DisableNodeGrantResponse{}, err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (this *NodeGrantService) CountAllEnabledNodeGrants(ctx context.Context, req *pb.CountAllEnabledNodeGrantsRequest) (*pb.CountAllEnabledNodeGrantsResponse, error) {
 | 
				
			||||||
 | 
						_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						count, err := models.SharedNodeGrantDAO.CountAllEnabledGrants()
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return &pb.CountAllEnabledNodeGrantsResponse{Count: count}, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (this *NodeGrantService) ListEnabledNodeGrants(ctx context.Context, req *pb.ListEnabledNodeGrantsRequest) (*pb.ListEnabledNodeGrantsResponse, error) {
 | 
				
			||||||
 | 
						_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						grants, err := models.SharedNodeGrantDAO.ListEnabledGrants(req.Offset, req.Size)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						result := []*pb.NodeGrant{}
 | 
				
			||||||
 | 
						for _, grant := range grants {
 | 
				
			||||||
 | 
							result = append(result, &pb.NodeGrant{
 | 
				
			||||||
 | 
								Id:          int64(grant.Id),
 | 
				
			||||||
 | 
								Name:        grant.Name,
 | 
				
			||||||
 | 
								Method:      grant.Method,
 | 
				
			||||||
 | 
								Password:    grant.Password,
 | 
				
			||||||
 | 
								Su:          grant.Su == 1,
 | 
				
			||||||
 | 
								PrivateKey:  grant.PrivateKey,
 | 
				
			||||||
 | 
								Description: grant.Description,
 | 
				
			||||||
 | 
								NodeId:      int64(grant.NodeId),
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return &pb.ListEnabledNodeGrantsResponse{Grants: result}, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,4 +0,0 @@
 | 
				
			|||||||
package services
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
type ProviderService struct {
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,4 +0,0 @@
 | 
				
			|||||||
package services
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
type StatService struct {
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,4 +0,0 @@
 | 
				
			|||||||
package services
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
type UserService struct {
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										68
									
								
								internal/rpc/services/servie_server.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								internal/rpc/services/servie_server.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,68 @@
 | 
				
			|||||||
 | 
					package services
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"context"
 | 
				
			||||||
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/db/models"
 | 
				
			||||||
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/rpc/pb"
 | 
				
			||||||
 | 
						rpcutils "github.com/TeaOSLab/EdgeAPI/internal/rpc/utils"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type ServerService struct {
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (this *ServerService) CreateServer(ctx context.Context, req *pb.CreateServerRequest) (*pb.CreateServerResponse, error) {
 | 
				
			||||||
 | 
						_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						serverId, err := models.SharedServerDAO.CreateServer(req.AdminId, req.UserId, req.ClusterId, string(req.Config), string(req.IncludeNodesJSON), string(req.ExcludeNodesJSON))
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return &pb.CreateServerResponse{ServerId: serverId}, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (this *ServerService) CountAllEnabledServers(ctx context.Context, req *pb.CountAllEnabledServersRequest) (*pb.CountAllEnabledServersResponse, error) {
 | 
				
			||||||
 | 
						_ = req
 | 
				
			||||||
 | 
						_, _, err := rpcutils.ValidateRequest(ctx)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						count, err := models.SharedServerDAO.CountAllEnabledServers()
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return &pb.CountAllEnabledServersResponse{Count: count}, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (this *ServerService) ListEnabledServers(ctx context.Context, req *pb.ListEnabledServersRequest) (*pb.ListEnabledServersResponse, error) {
 | 
				
			||||||
 | 
						_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						servers, err := models.SharedServerDAO.ListEnabledServers(req.Offset, req.Size)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						result := []*pb.Server{}
 | 
				
			||||||
 | 
						for _, server := range servers {
 | 
				
			||||||
 | 
							clusterName, err := models.SharedNodeClusterDAO.FindNodeClusterName(int64(server.ClusterId))
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return nil, err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							result = append(result, &pb.Server{
 | 
				
			||||||
 | 
								Id:           int64(server.Id),
 | 
				
			||||||
 | 
								Config:       []byte(server.Config),
 | 
				
			||||||
 | 
								IncludeNodes: []byte(server.IncludeNodes),
 | 
				
			||||||
 | 
								ExcludeNodes: []byte(server.ExcludeNodes),
 | 
				
			||||||
 | 
								CreatedAt:    int64(server.CreatedAt),
 | 
				
			||||||
 | 
								Cluster: &pb.NodeCluster{
 | 
				
			||||||
 | 
									Id:   int64(server.ClusterId),
 | 
				
			||||||
 | 
									Name: clusterName,
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return &pb.ListEnabledServersResponse{Servers: result}, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										96
									
								
								internal/rpc/utils/utils.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										96
									
								
								internal/rpc/utils/utils.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,96 @@
 | 
				
			|||||||
 | 
					package rpcutils
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"context"
 | 
				
			||||||
 | 
						"encoding/base64"
 | 
				
			||||||
 | 
						"encoding/json"
 | 
				
			||||||
 | 
						"errors"
 | 
				
			||||||
 | 
						teaconst "github.com/TeaOSLab/EdgeAPI/internal/const"
 | 
				
			||||||
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/db/models"
 | 
				
			||||||
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/encrypt"
 | 
				
			||||||
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/utils"
 | 
				
			||||||
 | 
						"github.com/iwind/TeaGo/lists"
 | 
				
			||||||
 | 
						"github.com/iwind/TeaGo/maps"
 | 
				
			||||||
 | 
						"google.golang.org/grpc/metadata"
 | 
				
			||||||
 | 
						"time"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type UserType = string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						UserTypeNone     = "none"
 | 
				
			||||||
 | 
						UserTypeAdmin    = "admin"
 | 
				
			||||||
 | 
						UserTypeUser     = "user"
 | 
				
			||||||
 | 
						UserTypeProvider = "provider"
 | 
				
			||||||
 | 
						UserTypeNode     = "node"
 | 
				
			||||||
 | 
						UserTypeMonitor  = "monitor"
 | 
				
			||||||
 | 
						UserTypeStat     = "stat"
 | 
				
			||||||
 | 
						UserTypeDNS      = "dns"
 | 
				
			||||||
 | 
						UserTypeLog      = "log"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 校验请求
 | 
				
			||||||
 | 
					func ValidateRequest(ctx context.Context, userTypes ...UserType) (userType UserType, userId int64, err error) {
 | 
				
			||||||
 | 
						md, ok := metadata.FromIncomingContext(ctx)
 | 
				
			||||||
 | 
						if !ok {
 | 
				
			||||||
 | 
							return UserTypeNone, 0, errors.New("context: need 'nodeId'")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						nodeIds := md.Get("nodeid")
 | 
				
			||||||
 | 
						if len(nodeIds) == 0 || len(nodeIds[0]) == 0 {
 | 
				
			||||||
 | 
							return UserTypeNone, 0, errors.New("context: need 'nodeId'")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						nodeId := nodeIds[0]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// 获取Node信息
 | 
				
			||||||
 | 
						apiToken, err := models.SharedApiTokenDAO.FindEnabledTokenWithNode(nodeId)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							utils.PrintError(err)
 | 
				
			||||||
 | 
							return UserTypeNone, 0, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if apiToken == nil {
 | 
				
			||||||
 | 
							return UserTypeNone, 0, errors.New("can not find token from node id: " + err.Error())
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						tokens := md.Get("token")
 | 
				
			||||||
 | 
						if len(tokens) == 0 || len(tokens[0]) == 0 {
 | 
				
			||||||
 | 
							return UserTypeNone, 0, errors.New("context: need 'token'")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						token := tokens[0]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						data, err := base64.StdEncoding.DecodeString(token)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return UserTypeNone, 0, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						method, err := encrypt.NewMethodInstance(teaconst.EncryptMethod, apiToken.Secret, nodeId)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							utils.PrintError(err)
 | 
				
			||||||
 | 
							return UserTypeNone, 0, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						data, err = method.Decrypt(data)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return UserTypeNone, 0, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if len(data) == 0 {
 | 
				
			||||||
 | 
							return UserTypeNone, 0, errors.New("invalid token")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						m := maps.Map{}
 | 
				
			||||||
 | 
						err = json.Unmarshal(data, &m)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return UserTypeNone, 0, errors.New("decode token error: " + err.Error())
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						timestamp := m.GetInt64("timestamp")
 | 
				
			||||||
 | 
						if time.Now().Unix()-timestamp > 600 {
 | 
				
			||||||
 | 
							// 请求超过10分钟认为超时
 | 
				
			||||||
 | 
							return UserTypeNone, 0, errors.New("authenticate timeout")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						t := m.GetString("type")
 | 
				
			||||||
 | 
						if len(userTypes) > 0 && !lists.ContainsString(userTypes, t) {
 | 
				
			||||||
 | 
							return UserTypeNone, 0, errors.New("not supported user type: '" + userType + "'")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return t, m.GetInt64("userId"), nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user