mirror of
				https://github.com/TeaOSLab/EdgeCommon.git
				synced 2025-11-04 13:10:24 +08:00 
			
		
		
		
	远程升级API节点时自动上传边缘节点安装文件
This commit is contained in:
		@@ -1103,6 +1103,28 @@
 | 
			
		||||
            "admin"
 | 
			
		||||
          ],
 | 
			
		||||
          "isDeprecated": false
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          "name": "uploadDeployFileToAPINode",
 | 
			
		||||
          "requestMessageName": "UploadDeployFileToAPINodeRequest",
 | 
			
		||||
          "responseMessageName": "RPCSuccess",
 | 
			
		||||
          "code": "rpc uploadDeployFileToAPINode(UploadDeployFileToAPINodeRequest) returns (RPCSuccess);",
 | 
			
		||||
          "doc": "上传节点安装文件",
 | 
			
		||||
          "roles": [
 | 
			
		||||
            "admin"
 | 
			
		||||
          ],
 | 
			
		||||
          "isDeprecated": false
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          "name": "findLatestDeployFiles",
 | 
			
		||||
          "requestMessageName": "FindLatestDeployFilesRequest",
 | 
			
		||||
          "responseMessageName": "FindLatestDeployFilesResponse",
 | 
			
		||||
          "code": "rpc findLatestDeployFiles(FindLatestDeployFilesRequest) returns (FindLatestDeployFilesResponse);",
 | 
			
		||||
          "doc": "查找已有节点安装文件信息",
 | 
			
		||||
          "roles": [
 | 
			
		||||
            "admin"
 | 
			
		||||
          ],
 | 
			
		||||
          "isDeprecated": false
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      "filename": "service_api_node.proto",
 | 
			
		||||
@@ -18171,6 +18193,16 @@
 | 
			
		||||
      "code": "message FindIPLibraryFileResponse {\n\tIPLibraryFile ipLibraryFile = 1;\n}",
 | 
			
		||||
      "doc": ""
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "name": "FindLatestDeployFilesRequest",
 | 
			
		||||
      "code": "message FindLatestDeployFilesRequest {\n\n}",
 | 
			
		||||
      "doc": "查找已有节点安装文件信息"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "name": "FindLatestDeployFilesResponse",
 | 
			
		||||
      "code": "message FindLatestDeployFilesResponse {\n\trepeated DeployFile nodeDeployFiles = 1; // 边缘节点\n\trepeated DeployFile nsNodeDeployFiles = 2; // NS节点\n\n\n\tmessage DeployFile {\n\t\tstring os = 1; // 操作系统代号\n\t\tstring arch = 2; // 架构\n\t\tstring version = 3; // 版本号\n\t}\n}",
 | 
			
		||||
      "doc": ""
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "name": "FindLatestIPLibraryWithTypeRequest",
 | 
			
		||||
      "code": "message FindLatestIPLibraryWithTypeRequest {\n\tstring type = 1;\n}",
 | 
			
		||||
@@ -22031,6 +22063,11 @@
 | 
			
		||||
      "code": "message UploadAPINodeFileResponse {\n\n}",
 | 
			
		||||
      "doc": ""
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "name": "UploadDeployFileToAPINodeRequest",
 | 
			
		||||
      "code": "message UploadDeployFileToAPINodeRequest {\n\tstring filename = 1; // 文件名\n\tstring sum = 2; // 整个文件的SUM值\n\tbytes chunkData = 3; // 片段数据\n\tbool isFirstChunk = 4; // 是否为第一个片段\n\tbool isLastChunk = 5; // 是否为最后一个片段\n}",
 | 
			
		||||
      "doc": "上传节点安装文件"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "name": "UploadMetricStatsRequest",
 | 
			
		||||
      "code": "message UploadMetricStatsRequest {\n\tint64 serverId = 1;\n\tstring time = 2;\n\tint64 count = 3;\n\tfloat total = 4;\n\tint32 version = 5;\n\tint64 itemId = 6;\n\trepeated UploadingMetricStat metricStats = 7;\n}",
 | 
			
		||||
 
 | 
			
		||||
@@ -1128,6 +1128,243 @@ func (*UploadAPINodeFileResponse) Descriptor() ([]byte, []int) {
 | 
			
		||||
	return file_service_api_node_proto_rawDescGZIP(), []int{19}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 上传节点安装文件
 | 
			
		||||
type UploadDeployFileToAPINodeRequest struct {
 | 
			
		||||
	state         protoimpl.MessageState
 | 
			
		||||
	sizeCache     protoimpl.SizeCache
 | 
			
		||||
	unknownFields protoimpl.UnknownFields
 | 
			
		||||
 | 
			
		||||
	Filename     string `protobuf:"bytes,1,opt,name=filename,proto3" json:"filename,omitempty"`          // 文件名
 | 
			
		||||
	Sum          string `protobuf:"bytes,2,opt,name=sum,proto3" json:"sum,omitempty"`                    // 整个文件的SUM值
 | 
			
		||||
	ChunkData    []byte `protobuf:"bytes,3,opt,name=chunkData,proto3" json:"chunkData,omitempty"`        // 片段数据
 | 
			
		||||
	IsFirstChunk bool   `protobuf:"varint,4,opt,name=isFirstChunk,proto3" json:"isFirstChunk,omitempty"` // 是否为第一个片段
 | 
			
		||||
	IsLastChunk  bool   `protobuf:"varint,5,opt,name=isLastChunk,proto3" json:"isLastChunk,omitempty"`   // 是否为最后一个片段
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (x *UploadDeployFileToAPINodeRequest) Reset() {
 | 
			
		||||
	*x = UploadDeployFileToAPINodeRequest{}
 | 
			
		||||
	if protoimpl.UnsafeEnabled {
 | 
			
		||||
		mi := &file_service_api_node_proto_msgTypes[20]
 | 
			
		||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
			
		||||
		ms.StoreMessageInfo(mi)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (x *UploadDeployFileToAPINodeRequest) String() string {
 | 
			
		||||
	return protoimpl.X.MessageStringOf(x)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (*UploadDeployFileToAPINodeRequest) ProtoMessage() {}
 | 
			
		||||
 | 
			
		||||
func (x *UploadDeployFileToAPINodeRequest) ProtoReflect() protoreflect.Message {
 | 
			
		||||
	mi := &file_service_api_node_proto_msgTypes[20]
 | 
			
		||||
	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 UploadDeployFileToAPINodeRequest.ProtoReflect.Descriptor instead.
 | 
			
		||||
func (*UploadDeployFileToAPINodeRequest) Descriptor() ([]byte, []int) {
 | 
			
		||||
	return file_service_api_node_proto_rawDescGZIP(), []int{20}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (x *UploadDeployFileToAPINodeRequest) GetFilename() string {
 | 
			
		||||
	if x != nil {
 | 
			
		||||
		return x.Filename
 | 
			
		||||
	}
 | 
			
		||||
	return ""
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (x *UploadDeployFileToAPINodeRequest) GetSum() string {
 | 
			
		||||
	if x != nil {
 | 
			
		||||
		return x.Sum
 | 
			
		||||
	}
 | 
			
		||||
	return ""
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (x *UploadDeployFileToAPINodeRequest) GetChunkData() []byte {
 | 
			
		||||
	if x != nil {
 | 
			
		||||
		return x.ChunkData
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (x *UploadDeployFileToAPINodeRequest) GetIsFirstChunk() bool {
 | 
			
		||||
	if x != nil {
 | 
			
		||||
		return x.IsFirstChunk
 | 
			
		||||
	}
 | 
			
		||||
	return false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (x *UploadDeployFileToAPINodeRequest) GetIsLastChunk() bool {
 | 
			
		||||
	if x != nil {
 | 
			
		||||
		return x.IsLastChunk
 | 
			
		||||
	}
 | 
			
		||||
	return false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 查找已有节点安装文件信息
 | 
			
		||||
type FindLatestDeployFilesRequest struct {
 | 
			
		||||
	state         protoimpl.MessageState
 | 
			
		||||
	sizeCache     protoimpl.SizeCache
 | 
			
		||||
	unknownFields protoimpl.UnknownFields
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (x *FindLatestDeployFilesRequest) Reset() {
 | 
			
		||||
	*x = FindLatestDeployFilesRequest{}
 | 
			
		||||
	if protoimpl.UnsafeEnabled {
 | 
			
		||||
		mi := &file_service_api_node_proto_msgTypes[21]
 | 
			
		||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
			
		||||
		ms.StoreMessageInfo(mi)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (x *FindLatestDeployFilesRequest) String() string {
 | 
			
		||||
	return protoimpl.X.MessageStringOf(x)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (*FindLatestDeployFilesRequest) ProtoMessage() {}
 | 
			
		||||
 | 
			
		||||
func (x *FindLatestDeployFilesRequest) ProtoReflect() protoreflect.Message {
 | 
			
		||||
	mi := &file_service_api_node_proto_msgTypes[21]
 | 
			
		||||
	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 FindLatestDeployFilesRequest.ProtoReflect.Descriptor instead.
 | 
			
		||||
func (*FindLatestDeployFilesRequest) Descriptor() ([]byte, []int) {
 | 
			
		||||
	return file_service_api_node_proto_rawDescGZIP(), []int{21}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type FindLatestDeployFilesResponse struct {
 | 
			
		||||
	state         protoimpl.MessageState
 | 
			
		||||
	sizeCache     protoimpl.SizeCache
 | 
			
		||||
	unknownFields protoimpl.UnknownFields
 | 
			
		||||
 | 
			
		||||
	NodeDeployFiles   []*FindLatestDeployFilesResponse_DeployFile `protobuf:"bytes,1,rep,name=nodeDeployFiles,proto3" json:"nodeDeployFiles,omitempty"`     // 边缘节点
 | 
			
		||||
	NsNodeDeployFiles []*FindLatestDeployFilesResponse_DeployFile `protobuf:"bytes,2,rep,name=nsNodeDeployFiles,proto3" json:"nsNodeDeployFiles,omitempty"` // NS节点
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (x *FindLatestDeployFilesResponse) Reset() {
 | 
			
		||||
	*x = FindLatestDeployFilesResponse{}
 | 
			
		||||
	if protoimpl.UnsafeEnabled {
 | 
			
		||||
		mi := &file_service_api_node_proto_msgTypes[22]
 | 
			
		||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
			
		||||
		ms.StoreMessageInfo(mi)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (x *FindLatestDeployFilesResponse) String() string {
 | 
			
		||||
	return protoimpl.X.MessageStringOf(x)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (*FindLatestDeployFilesResponse) ProtoMessage() {}
 | 
			
		||||
 | 
			
		||||
func (x *FindLatestDeployFilesResponse) ProtoReflect() protoreflect.Message {
 | 
			
		||||
	mi := &file_service_api_node_proto_msgTypes[22]
 | 
			
		||||
	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 FindLatestDeployFilesResponse.ProtoReflect.Descriptor instead.
 | 
			
		||||
func (*FindLatestDeployFilesResponse) Descriptor() ([]byte, []int) {
 | 
			
		||||
	return file_service_api_node_proto_rawDescGZIP(), []int{22}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (x *FindLatestDeployFilesResponse) GetNodeDeployFiles() []*FindLatestDeployFilesResponse_DeployFile {
 | 
			
		||||
	if x != nil {
 | 
			
		||||
		return x.NodeDeployFiles
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (x *FindLatestDeployFilesResponse) GetNsNodeDeployFiles() []*FindLatestDeployFilesResponse_DeployFile {
 | 
			
		||||
	if x != nil {
 | 
			
		||||
		return x.NsNodeDeployFiles
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type FindLatestDeployFilesResponse_DeployFile struct {
 | 
			
		||||
	state         protoimpl.MessageState
 | 
			
		||||
	sizeCache     protoimpl.SizeCache
 | 
			
		||||
	unknownFields protoimpl.UnknownFields
 | 
			
		||||
 | 
			
		||||
	Os      string `protobuf:"bytes,1,opt,name=os,proto3" json:"os,omitempty"`           // 操作系统代号
 | 
			
		||||
	Arch    string `protobuf:"bytes,2,opt,name=arch,proto3" json:"arch,omitempty"`       // 架构
 | 
			
		||||
	Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` // 版本号
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (x *FindLatestDeployFilesResponse_DeployFile) Reset() {
 | 
			
		||||
	*x = FindLatestDeployFilesResponse_DeployFile{}
 | 
			
		||||
	if protoimpl.UnsafeEnabled {
 | 
			
		||||
		mi := &file_service_api_node_proto_msgTypes[23]
 | 
			
		||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
			
		||||
		ms.StoreMessageInfo(mi)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (x *FindLatestDeployFilesResponse_DeployFile) String() string {
 | 
			
		||||
	return protoimpl.X.MessageStringOf(x)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (*FindLatestDeployFilesResponse_DeployFile) ProtoMessage() {}
 | 
			
		||||
 | 
			
		||||
func (x *FindLatestDeployFilesResponse_DeployFile) ProtoReflect() protoreflect.Message {
 | 
			
		||||
	mi := &file_service_api_node_proto_msgTypes[23]
 | 
			
		||||
	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 FindLatestDeployFilesResponse_DeployFile.ProtoReflect.Descriptor instead.
 | 
			
		||||
func (*FindLatestDeployFilesResponse_DeployFile) Descriptor() ([]byte, []int) {
 | 
			
		||||
	return file_service_api_node_proto_rawDescGZIP(), []int{22, 0}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (x *FindLatestDeployFilesResponse_DeployFile) GetOs() string {
 | 
			
		||||
	if x != nil {
 | 
			
		||||
		return x.Os
 | 
			
		||||
	}
 | 
			
		||||
	return ""
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (x *FindLatestDeployFilesResponse_DeployFile) GetArch() string {
 | 
			
		||||
	if x != nil {
 | 
			
		||||
		return x.Arch
 | 
			
		||||
	}
 | 
			
		||||
	return ""
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (x *FindLatestDeployFilesResponse_DeployFile) GetVersion() string {
 | 
			
		||||
	if x != nil {
 | 
			
		||||
		return x.Version
 | 
			
		||||
	}
 | 
			
		||||
	return ""
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var File_service_api_node_proto protoreflect.FileDescriptor
 | 
			
		||||
 | 
			
		||||
var file_service_api_node_proto_rawDesc = []byte{
 | 
			
		||||
@@ -1247,77 +1484,120 @@ var file_service_api_node_proto_rawDesc = []byte{
 | 
			
		||||
	0x0a, 0x0b, 0x69, 0x73, 0x4c, 0x61, 0x73, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x18, 0x05, 0x20,
 | 
			
		||||
	0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x4c, 0x61, 0x73, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b,
 | 
			
		||||
	0x22, 0x1b, 0x0a, 0x19, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64,
 | 
			
		||||
	0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xc7, 0x08,
 | 
			
		||||
	0x0a, 0x0e, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
 | 
			
		||||
	0x12, 0x44, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64,
 | 
			
		||||
	0x65, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49,
 | 
			
		||||
	0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x70, 0x62,
 | 
			
		||||
	0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65,
 | 
			
		||||
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
 | 
			
		||||
	0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64,
 | 
			
		||||
	0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
 | 
			
		||||
	0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73,
 | 
			
		||||
	0x73, 0x12, 0x39, 0x0a, 0x0d, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4e, 0x6f,
 | 
			
		||||
	0x64, 0x65, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50,
 | 
			
		||||
	0x49, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70,
 | 
			
		||||
	0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x5f, 0x0a, 0x16,
 | 
			
		||||
	0x66, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50,
 | 
			
		||||
	0x49, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x21, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64,
 | 
			
		||||
	0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64,
 | 
			
		||||
	0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x70, 0x62, 0x2e, 0x46,
 | 
			
		||||
	0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49,
 | 
			
		||||
	0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a,
 | 
			
		||||
	0x17, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64,
 | 
			
		||||
	0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x22, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f,
 | 
			
		||||
	0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49,
 | 
			
		||||
	0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x70,
 | 
			
		||||
	0x62, 0x2e, 0x52, 0x50, 0x43, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
 | 
			
		||||
	0x73, 0x65, 0x12, 0x5d, 0x0a, 0x1c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x6e,
 | 
			
		||||
	0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x6e, 0x64, 0x4f, 0x6e, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64,
 | 
			
		||||
	0x65, 0x73, 0x12, 0x27, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c,
 | 
			
		||||
	0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x6e, 0x64, 0x4f, 0x6e, 0x41, 0x50, 0x49, 0x4e,
 | 
			
		||||
	0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x70, 0x62,
 | 
			
		||||
	0x2e, 0x52, 0x50, 0x43, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
 | 
			
		||||
	0x65, 0x12, 0x56, 0x0a, 0x13, 0x6c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64,
 | 
			
		||||
	0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69,
 | 
			
		||||
	0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65,
 | 
			
		||||
	0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69,
 | 
			
		||||
	0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65,
 | 
			
		||||
	0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x12, 0x66, 0x69, 0x6e,
 | 
			
		||||
	0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x12,
 | 
			
		||||
	0x1d, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64,
 | 
			
		||||
	0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e,
 | 
			
		||||
	0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41,
 | 
			
		||||
	0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x68,
 | 
			
		||||
	0x0a, 0x19, 0x66, 0x69, 0x6e, 0x64, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x41, 0x50, 0x49,
 | 
			
		||||
	0x4e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x2e, 0x70, 0x62,
 | 
			
		||||
	0x2e, 0x46, 0x69, 0x6e, 0x64, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x41, 0x50, 0x49, 0x4e,
 | 
			
		||||
	0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
 | 
			
		||||
	0x74, 0x1a, 0x25, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x43, 0x75, 0x72, 0x72, 0x65,
 | 
			
		||||
	0x6e, 0x74, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
 | 
			
		||||
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x12, 0x66, 0x69, 0x6e, 0x64,
 | 
			
		||||
	0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1d,
 | 
			
		||||
	0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x41,
 | 
			
		||||
	0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e,
 | 
			
		||||
	0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x41, 0x50,
 | 
			
		||||
	0x49, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6d, 0x0a,
 | 
			
		||||
	0x24, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64,
 | 
			
		||||
	0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x57, 0x69, 0x74, 0x68, 0x53, 0x53, 0x4c, 0x43,
 | 
			
		||||
	0x65, 0x72, 0x74, 0x49, 0x64, 0x12, 0x2f, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74,
 | 
			
		||||
	0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64,
 | 
			
		||||
	0x65, 0x73, 0x57, 0x69, 0x74, 0x68, 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x49, 0x64, 0x52,
 | 
			
		||||
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x43,
 | 
			
		||||
	0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x0c,
 | 
			
		||||
	0x64, 0x65, 0x62, 0x75, 0x67, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x2e, 0x70,
 | 
			
		||||
	0x62, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65,
 | 
			
		||||
	0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb4, 0x01,
 | 
			
		||||
	0x0a, 0x20, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x46, 0x69,
 | 
			
		||||
	0x6c, 0x65, 0x54, 0x6f, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
 | 
			
		||||
	0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
 | 
			
		||||
	0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10,
 | 
			
		||||
	0x0a, 0x03, 0x73, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x75, 0x6d,
 | 
			
		||||
	0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20,
 | 
			
		||||
	0x01, 0x28, 0x0c, 0x52, 0x09, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x22,
 | 
			
		||||
	0x0a, 0x0c, 0x69, 0x73, 0x46, 0x69, 0x72, 0x73, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x18, 0x04,
 | 
			
		||||
	0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x46, 0x69, 0x72, 0x73, 0x74, 0x43, 0x68, 0x75,
 | 
			
		||||
	0x6e, 0x6b, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x73, 0x4c, 0x61, 0x73, 0x74, 0x43, 0x68, 0x75, 0x6e,
 | 
			
		||||
	0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x4c, 0x61, 0x73, 0x74, 0x43,
 | 
			
		||||
	0x68, 0x75, 0x6e, 0x6b, 0x22, 0x1e, 0x0a, 0x1c, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65,
 | 
			
		||||
	0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71,
 | 
			
		||||
	0x75, 0x65, 0x73, 0x74, 0x22, 0x9f, 0x02, 0x0a, 0x1d, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x61, 0x74,
 | 
			
		||||
	0x65, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65,
 | 
			
		||||
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x44, 0x65,
 | 
			
		||||
	0x70, 0x6c, 0x6f, 0x79, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
 | 
			
		||||
	0x2c, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x44,
 | 
			
		||||
	0x65, 0x70, 0x6c, 0x6f, 0x79, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
 | 
			
		||||
	0x73, 0x65, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x0f, 0x6e,
 | 
			
		||||
	0x6f, 0x64, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x5a,
 | 
			
		||||
	0x0a, 0x11, 0x6e, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x46, 0x69,
 | 
			
		||||
	0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x70, 0x62, 0x2e, 0x46,
 | 
			
		||||
	0x69, 0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x46,
 | 
			
		||||
	0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x44, 0x65, 0x70,
 | 
			
		||||
	0x6c, 0x6f, 0x79, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x11, 0x6e, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x44,
 | 
			
		||||
	0x65, 0x70, 0x6c, 0x6f, 0x79, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x1a, 0x4a, 0x0a, 0x0a, 0x44, 0x65,
 | 
			
		||||
	0x70, 0x6c, 0x6f, 0x79, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x73, 0x18, 0x01,
 | 
			
		||||
	0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x6f, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x63, 0x68,
 | 
			
		||||
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x63, 0x68, 0x12, 0x18, 0x0a, 0x07,
 | 
			
		||||
	0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76,
 | 
			
		||||
	0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x32, 0xf8, 0x09, 0x0a, 0x0e, 0x41, 0x50, 0x49, 0x4e, 0x6f,
 | 
			
		||||
	0x64, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x44, 0x0a, 0x0d, 0x63, 0x72, 0x65,
 | 
			
		||||
	0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x2e,
 | 
			
		||||
	0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71,
 | 
			
		||||
	0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
 | 
			
		||||
	0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
 | 
			
		||||
	0x39, 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65,
 | 
			
		||||
	0x12, 0x18, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4e,
 | 
			
		||||
	0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e,
 | 
			
		||||
	0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x39, 0x0a, 0x0d, 0x64, 0x65,
 | 
			
		||||
	0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x2e, 0x70, 0x62,
 | 
			
		||||
	0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65,
 | 
			
		||||
	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75,
 | 
			
		||||
	0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x50, 0x0a, 0x11, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x41,
 | 
			
		||||
	0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x2e,
 | 
			
		||||
	0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x46, 0x69, 0x6c,
 | 
			
		||||
	0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70,
 | 
			
		||||
	0x6c, 0x6f, 0x61, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52,
 | 
			
		||||
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62,
 | 
			
		||||
	0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 | 
			
		||||
	0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x5f, 0x0a, 0x16, 0x66, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c,
 | 
			
		||||
	0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12,
 | 
			
		||||
	0x21, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62,
 | 
			
		||||
	0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
 | 
			
		||||
	0x73, 0x74, 0x1a, 0x22, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x45,
 | 
			
		||||
	0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65,
 | 
			
		||||
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x17, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41,
 | 
			
		||||
	0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65,
 | 
			
		||||
	0x73, 0x12, 0x22, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c, 0x45,
 | 
			
		||||
	0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65,
 | 
			
		||||
	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x43, 0x6f,
 | 
			
		||||
	0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x1c, 0x63,
 | 
			
		||||
	0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x6e,
 | 
			
		||||
	0x64, 0x4f, 0x6e, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x27, 0x2e, 0x70, 0x62,
 | 
			
		||||
	0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64,
 | 
			
		||||
	0x41, 0x6e, 0x64, 0x4f, 0x6e, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71,
 | 
			
		||||
	0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x43, 0x6f, 0x75,
 | 
			
		||||
	0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x13, 0x6c, 0x69,
 | 
			
		||||
	0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65,
 | 
			
		||||
	0x73, 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c,
 | 
			
		||||
	0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
 | 
			
		||||
	0x74, 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c,
 | 
			
		||||
	0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
 | 
			
		||||
	0x73, 0x65, 0x12, 0x53, 0x0a, 0x12, 0x66, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65,
 | 
			
		||||
	0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1d, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69,
 | 
			
		||||
	0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65,
 | 
			
		||||
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e,
 | 
			
		||||
	0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x52,
 | 
			
		||||
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x68, 0x0a, 0x19, 0x66, 0x69, 0x6e, 0x64, 0x43,
 | 
			
		||||
	0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72,
 | 
			
		||||
	0x73, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x43, 0x75,
 | 
			
		||||
	0x72, 0x72, 0x65, 0x6e, 0x74, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73,
 | 
			
		||||
	0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x70, 0x62, 0x2e,
 | 
			
		||||
	0x46, 0x69, 0x6e, 0x64, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x41, 0x50, 0x49, 0x4e, 0x6f,
 | 
			
		||||
	0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
 | 
			
		||||
	0x65, 0x12, 0x53, 0x0a, 0x12, 0x66, 0x69, 0x6e, 0x64, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74,
 | 
			
		||||
	0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1d, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e,
 | 
			
		||||
	0x64, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x52,
 | 
			
		||||
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64,
 | 
			
		||||
	0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65,
 | 
			
		||||
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6d, 0x0a, 0x24, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41,
 | 
			
		||||
	0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65,
 | 
			
		||||
	0x73, 0x57, 0x69, 0x74, 0x68, 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x49, 0x64, 0x12, 0x2f,
 | 
			
		||||
	0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62,
 | 
			
		||||
	0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x57, 0x69, 0x74, 0x68, 0x53,
 | 
			
		||||
	0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
 | 
			
		||||
	0x14, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73,
 | 
			
		||||
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x0c, 0x64, 0x65, 0x62, 0x75, 0x67, 0x41, 0x50,
 | 
			
		||||
	0x49, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67,
 | 
			
		||||
	0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e,
 | 
			
		||||
	0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x50,
 | 
			
		||||
	0x0a, 0x11, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x46,
 | 
			
		||||
	0x69, 0x6c, 0x65, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x41,
 | 
			
		||||
	0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
 | 
			
		||||
	0x74, 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x50, 0x49,
 | 
			
		||||
	0x4e, 0x6f, 0x64, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
 | 
			
		||||
	0x12, 0x51, 0x0a, 0x19, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79,
 | 
			
		||||
	0x46, 0x69, 0x6c, 0x65, 0x54, 0x6f, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x24, 0x2e,
 | 
			
		||||
	0x70, 0x62, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x46,
 | 
			
		||||
	0x69, 0x6c, 0x65, 0x54, 0x6f, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75,
 | 
			
		||||
	0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63,
 | 
			
		||||
	0x65, 0x73, 0x73, 0x12, 0x5c, 0x0a, 0x15, 0x66, 0x69, 0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65, 0x73,
 | 
			
		||||
	0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x20, 0x2e, 0x70,
 | 
			
		||||
	0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c,
 | 
			
		||||
	0x6f, 0x79, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21,
 | 
			
		||||
	0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x44, 0x65,
 | 
			
		||||
	0x70, 0x6c, 0x6f, 0x79, 0x46, 0x69, 0x6c, 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 (
 | 
			
		||||
@@ -1332,7 +1612,7 @@ func file_service_api_node_proto_rawDescGZIP() []byte {
 | 
			
		||||
	return file_service_api_node_proto_rawDescData
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var file_service_api_node_proto_msgTypes = make([]protoimpl.MessageInfo, 20)
 | 
			
		||||
var file_service_api_node_proto_msgTypes = make([]protoimpl.MessageInfo, 24)
 | 
			
		||||
var file_service_api_node_proto_goTypes = []interface{}{
 | 
			
		||||
	(*CreateAPINodeRequest)(nil),                        // 0: pb.CreateAPINodeRequest
 | 
			
		||||
	(*CreateAPINodeResponse)(nil),                       // 1: pb.CreateAPINodeResponse
 | 
			
		||||
@@ -1354,46 +1634,56 @@ var file_service_api_node_proto_goTypes = []interface{}{
 | 
			
		||||
	(*DebugAPINodeRequest)(nil),                         // 17: pb.DebugAPINodeRequest
 | 
			
		||||
	(*UploadAPINodeFileRequest)(nil),                    // 18: pb.UploadAPINodeFileRequest
 | 
			
		||||
	(*UploadAPINodeFileResponse)(nil),                   // 19: pb.UploadAPINodeFileResponse
 | 
			
		||||
	(*APINode)(nil),                                     // 20: pb.APINode
 | 
			
		||||
	(*RPCSuccess)(nil),                                  // 21: pb.RPCSuccess
 | 
			
		||||
	(*RPCCountResponse)(nil),                            // 22: pb.RPCCountResponse
 | 
			
		||||
	(*UploadDeployFileToAPINodeRequest)(nil),            // 20: pb.UploadDeployFileToAPINodeRequest
 | 
			
		||||
	(*FindLatestDeployFilesRequest)(nil),                // 21: pb.FindLatestDeployFilesRequest
 | 
			
		||||
	(*FindLatestDeployFilesResponse)(nil),               // 22: pb.FindLatestDeployFilesResponse
 | 
			
		||||
	(*FindLatestDeployFilesResponse_DeployFile)(nil),    // 23: pb.FindLatestDeployFilesResponse.DeployFile
 | 
			
		||||
	(*APINode)(nil),                                     // 24: pb.APINode
 | 
			
		||||
	(*RPCSuccess)(nil),                                  // 25: pb.RPCSuccess
 | 
			
		||||
	(*RPCCountResponse)(nil),                            // 26: pb.RPCCountResponse
 | 
			
		||||
}
 | 
			
		||||
var file_service_api_node_proto_depIdxs = []int32{
 | 
			
		||||
	20, // 0: pb.FindAllEnabledAPINodesResponse.apiNodes:type_name -> pb.APINode
 | 
			
		||||
	20, // 1: pb.ListEnabledAPINodesResponse.apiNodes:type_name -> pb.APINode
 | 
			
		||||
	20, // 2: pb.FindEnabledAPINodeResponse.apiNode:type_name -> pb.APINode
 | 
			
		||||
	20, // 3: pb.FindCurrentAPINodeResponse.apiNode:type_name -> pb.APINode
 | 
			
		||||
	0,  // 4: pb.APINodeService.createAPINode:input_type -> pb.CreateAPINodeRequest
 | 
			
		||||
	2,  // 5: pb.APINodeService.updateAPINode:input_type -> pb.UpdateAPINodeRequest
 | 
			
		||||
	3,  // 6: pb.APINodeService.deleteAPINode:input_type -> pb.DeleteAPINodeRequest
 | 
			
		||||
	4,  // 7: pb.APINodeService.findAllEnabledAPINodes:input_type -> pb.FindAllEnabledAPINodesRequest
 | 
			
		||||
	6,  // 8: pb.APINodeService.countAllEnabledAPINodes:input_type -> pb.CountAllEnabledAPINodesRequest
 | 
			
		||||
	7,  // 9: pb.APINodeService.countAllEnabledAndOnAPINodes:input_type -> pb.CountAllEnabledAndOnAPINodesRequest
 | 
			
		||||
	8,  // 10: pb.APINodeService.listEnabledAPINodes:input_type -> pb.ListEnabledAPINodesRequest
 | 
			
		||||
	10, // 11: pb.APINodeService.findEnabledAPINode:input_type -> pb.FindEnabledAPINodeRequest
 | 
			
		||||
	12, // 12: pb.APINodeService.findCurrentAPINodeVersion:input_type -> pb.FindCurrentAPINodeVersionRequest
 | 
			
		||||
	14, // 13: pb.APINodeService.findCurrentAPINode:input_type -> pb.FindCurrentAPINodeRequest
 | 
			
		||||
	16, // 14: pb.APINodeService.countAllEnabledAPINodesWithSSLCertId:input_type -> pb.CountAllEnabledAPINodesWithSSLCertIdRequest
 | 
			
		||||
	17, // 15: pb.APINodeService.debugAPINode:input_type -> pb.DebugAPINodeRequest
 | 
			
		||||
	18, // 16: pb.APINodeService.uploadAPINodeFile:input_type -> pb.UploadAPINodeFileRequest
 | 
			
		||||
	1,  // 17: pb.APINodeService.createAPINode:output_type -> pb.CreateAPINodeResponse
 | 
			
		||||
	21, // 18: pb.APINodeService.updateAPINode:output_type -> pb.RPCSuccess
 | 
			
		||||
	21, // 19: pb.APINodeService.deleteAPINode:output_type -> pb.RPCSuccess
 | 
			
		||||
	5,  // 20: pb.APINodeService.findAllEnabledAPINodes:output_type -> pb.FindAllEnabledAPINodesResponse
 | 
			
		||||
	22, // 21: pb.APINodeService.countAllEnabledAPINodes:output_type -> pb.RPCCountResponse
 | 
			
		||||
	22, // 22: pb.APINodeService.countAllEnabledAndOnAPINodes:output_type -> pb.RPCCountResponse
 | 
			
		||||
	9,  // 23: pb.APINodeService.listEnabledAPINodes:output_type -> pb.ListEnabledAPINodesResponse
 | 
			
		||||
	11, // 24: pb.APINodeService.findEnabledAPINode:output_type -> pb.FindEnabledAPINodeResponse
 | 
			
		||||
	13, // 25: pb.APINodeService.findCurrentAPINodeVersion:output_type -> pb.FindCurrentAPINodeVersionResponse
 | 
			
		||||
	15, // 26: pb.APINodeService.findCurrentAPINode:output_type -> pb.FindCurrentAPINodeResponse
 | 
			
		||||
	22, // 27: pb.APINodeService.countAllEnabledAPINodesWithSSLCertId:output_type -> pb.RPCCountResponse
 | 
			
		||||
	21, // 28: pb.APINodeService.debugAPINode:output_type -> pb.RPCSuccess
 | 
			
		||||
	19, // 29: pb.APINodeService.uploadAPINodeFile:output_type -> pb.UploadAPINodeFileResponse
 | 
			
		||||
	17, // [17:30] is the sub-list for method output_type
 | 
			
		||||
	4,  // [4:17] is the sub-list for method input_type
 | 
			
		||||
	4,  // [4:4] is the sub-list for extension type_name
 | 
			
		||||
	4,  // [4:4] is the sub-list for extension extendee
 | 
			
		||||
	0,  // [0:4] is the sub-list for field type_name
 | 
			
		||||
	24, // 0: pb.FindAllEnabledAPINodesResponse.apiNodes:type_name -> pb.APINode
 | 
			
		||||
	24, // 1: pb.ListEnabledAPINodesResponse.apiNodes:type_name -> pb.APINode
 | 
			
		||||
	24, // 2: pb.FindEnabledAPINodeResponse.apiNode:type_name -> pb.APINode
 | 
			
		||||
	24, // 3: pb.FindCurrentAPINodeResponse.apiNode:type_name -> pb.APINode
 | 
			
		||||
	23, // 4: pb.FindLatestDeployFilesResponse.nodeDeployFiles:type_name -> pb.FindLatestDeployFilesResponse.DeployFile
 | 
			
		||||
	23, // 5: pb.FindLatestDeployFilesResponse.nsNodeDeployFiles:type_name -> pb.FindLatestDeployFilesResponse.DeployFile
 | 
			
		||||
	0,  // 6: pb.APINodeService.createAPINode:input_type -> pb.CreateAPINodeRequest
 | 
			
		||||
	2,  // 7: pb.APINodeService.updateAPINode:input_type -> pb.UpdateAPINodeRequest
 | 
			
		||||
	3,  // 8: pb.APINodeService.deleteAPINode:input_type -> pb.DeleteAPINodeRequest
 | 
			
		||||
	4,  // 9: pb.APINodeService.findAllEnabledAPINodes:input_type -> pb.FindAllEnabledAPINodesRequest
 | 
			
		||||
	6,  // 10: pb.APINodeService.countAllEnabledAPINodes:input_type -> pb.CountAllEnabledAPINodesRequest
 | 
			
		||||
	7,  // 11: pb.APINodeService.countAllEnabledAndOnAPINodes:input_type -> pb.CountAllEnabledAndOnAPINodesRequest
 | 
			
		||||
	8,  // 12: pb.APINodeService.listEnabledAPINodes:input_type -> pb.ListEnabledAPINodesRequest
 | 
			
		||||
	10, // 13: pb.APINodeService.findEnabledAPINode:input_type -> pb.FindEnabledAPINodeRequest
 | 
			
		||||
	12, // 14: pb.APINodeService.findCurrentAPINodeVersion:input_type -> pb.FindCurrentAPINodeVersionRequest
 | 
			
		||||
	14, // 15: pb.APINodeService.findCurrentAPINode:input_type -> pb.FindCurrentAPINodeRequest
 | 
			
		||||
	16, // 16: pb.APINodeService.countAllEnabledAPINodesWithSSLCertId:input_type -> pb.CountAllEnabledAPINodesWithSSLCertIdRequest
 | 
			
		||||
	17, // 17: pb.APINodeService.debugAPINode:input_type -> pb.DebugAPINodeRequest
 | 
			
		||||
	18, // 18: pb.APINodeService.uploadAPINodeFile:input_type -> pb.UploadAPINodeFileRequest
 | 
			
		||||
	20, // 19: pb.APINodeService.uploadDeployFileToAPINode:input_type -> pb.UploadDeployFileToAPINodeRequest
 | 
			
		||||
	21, // 20: pb.APINodeService.findLatestDeployFiles:input_type -> pb.FindLatestDeployFilesRequest
 | 
			
		||||
	1,  // 21: pb.APINodeService.createAPINode:output_type -> pb.CreateAPINodeResponse
 | 
			
		||||
	25, // 22: pb.APINodeService.updateAPINode:output_type -> pb.RPCSuccess
 | 
			
		||||
	25, // 23: pb.APINodeService.deleteAPINode:output_type -> pb.RPCSuccess
 | 
			
		||||
	5,  // 24: pb.APINodeService.findAllEnabledAPINodes:output_type -> pb.FindAllEnabledAPINodesResponse
 | 
			
		||||
	26, // 25: pb.APINodeService.countAllEnabledAPINodes:output_type -> pb.RPCCountResponse
 | 
			
		||||
	26, // 26: pb.APINodeService.countAllEnabledAndOnAPINodes:output_type -> pb.RPCCountResponse
 | 
			
		||||
	9,  // 27: pb.APINodeService.listEnabledAPINodes:output_type -> pb.ListEnabledAPINodesResponse
 | 
			
		||||
	11, // 28: pb.APINodeService.findEnabledAPINode:output_type -> pb.FindEnabledAPINodeResponse
 | 
			
		||||
	13, // 29: pb.APINodeService.findCurrentAPINodeVersion:output_type -> pb.FindCurrentAPINodeVersionResponse
 | 
			
		||||
	15, // 30: pb.APINodeService.findCurrentAPINode:output_type -> pb.FindCurrentAPINodeResponse
 | 
			
		||||
	26, // 31: pb.APINodeService.countAllEnabledAPINodesWithSSLCertId:output_type -> pb.RPCCountResponse
 | 
			
		||||
	25, // 32: pb.APINodeService.debugAPINode:output_type -> pb.RPCSuccess
 | 
			
		||||
	19, // 33: pb.APINodeService.uploadAPINodeFile:output_type -> pb.UploadAPINodeFileResponse
 | 
			
		||||
	25, // 34: pb.APINodeService.uploadDeployFileToAPINode:output_type -> pb.RPCSuccess
 | 
			
		||||
	22, // 35: pb.APINodeService.findLatestDeployFiles:output_type -> pb.FindLatestDeployFilesResponse
 | 
			
		||||
	21, // [21:36] is the sub-list for method output_type
 | 
			
		||||
	6,  // [6:21] is the sub-list for method input_type
 | 
			
		||||
	6,  // [6:6] is the sub-list for extension type_name
 | 
			
		||||
	6,  // [6:6] is the sub-list for extension extendee
 | 
			
		||||
	0,  // [0:6] is the sub-list for field type_name
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func init() { file_service_api_node_proto_init() }
 | 
			
		||||
@@ -1644,6 +1934,54 @@ func file_service_api_node_proto_init() {
 | 
			
		||||
				return nil
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		file_service_api_node_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
 | 
			
		||||
			switch v := v.(*UploadDeployFileToAPINodeRequest); i {
 | 
			
		||||
			case 0:
 | 
			
		||||
				return &v.state
 | 
			
		||||
			case 1:
 | 
			
		||||
				return &v.sizeCache
 | 
			
		||||
			case 2:
 | 
			
		||||
				return &v.unknownFields
 | 
			
		||||
			default:
 | 
			
		||||
				return nil
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		file_service_api_node_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
 | 
			
		||||
			switch v := v.(*FindLatestDeployFilesRequest); i {
 | 
			
		||||
			case 0:
 | 
			
		||||
				return &v.state
 | 
			
		||||
			case 1:
 | 
			
		||||
				return &v.sizeCache
 | 
			
		||||
			case 2:
 | 
			
		||||
				return &v.unknownFields
 | 
			
		||||
			default:
 | 
			
		||||
				return nil
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		file_service_api_node_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
 | 
			
		||||
			switch v := v.(*FindLatestDeployFilesResponse); i {
 | 
			
		||||
			case 0:
 | 
			
		||||
				return &v.state
 | 
			
		||||
			case 1:
 | 
			
		||||
				return &v.sizeCache
 | 
			
		||||
			case 2:
 | 
			
		||||
				return &v.unknownFields
 | 
			
		||||
			default:
 | 
			
		||||
				return nil
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		file_service_api_node_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
 | 
			
		||||
			switch v := v.(*FindLatestDeployFilesResponse_DeployFile); 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{
 | 
			
		||||
@@ -1651,7 +1989,7 @@ func file_service_api_node_proto_init() {
 | 
			
		||||
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 | 
			
		||||
			RawDescriptor: file_service_api_node_proto_rawDesc,
 | 
			
		||||
			NumEnums:      0,
 | 
			
		||||
			NumMessages:   20,
 | 
			
		||||
			NumMessages:   24,
 | 
			
		||||
			NumExtensions: 0,
 | 
			
		||||
			NumServices:   1,
 | 
			
		||||
		},
 | 
			
		||||
@@ -1703,6 +2041,10 @@ type APINodeServiceClient interface {
 | 
			
		||||
	DebugAPINode(ctx context.Context, in *DebugAPINodeRequest, opts ...grpc.CallOption) (*RPCSuccess, error)
 | 
			
		||||
	// 上传新版API节点文件
 | 
			
		||||
	UploadAPINodeFile(ctx context.Context, in *UploadAPINodeFileRequest, opts ...grpc.CallOption) (*UploadAPINodeFileResponse, error)
 | 
			
		||||
	// 上传节点安装文件
 | 
			
		||||
	UploadDeployFileToAPINode(ctx context.Context, in *UploadDeployFileToAPINodeRequest, opts ...grpc.CallOption) (*RPCSuccess, error)
 | 
			
		||||
	// 查找已有节点安装文件信息
 | 
			
		||||
	FindLatestDeployFiles(ctx context.Context, in *FindLatestDeployFilesRequest, opts ...grpc.CallOption) (*FindLatestDeployFilesResponse, error)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type aPINodeServiceClient struct {
 | 
			
		||||
@@ -1830,6 +2172,24 @@ func (c *aPINodeServiceClient) UploadAPINodeFile(ctx context.Context, in *Upload
 | 
			
		||||
	return out, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c *aPINodeServiceClient) UploadDeployFileToAPINode(ctx context.Context, in *UploadDeployFileToAPINodeRequest, opts ...grpc.CallOption) (*RPCSuccess, error) {
 | 
			
		||||
	out := new(RPCSuccess)
 | 
			
		||||
	err := c.cc.Invoke(ctx, "/pb.APINodeService/uploadDeployFileToAPINode", in, out, opts...)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	return out, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c *aPINodeServiceClient) FindLatestDeployFiles(ctx context.Context, in *FindLatestDeployFilesRequest, opts ...grpc.CallOption) (*FindLatestDeployFilesResponse, error) {
 | 
			
		||||
	out := new(FindLatestDeployFilesResponse)
 | 
			
		||||
	err := c.cc.Invoke(ctx, "/pb.APINodeService/findLatestDeployFiles", in, out, opts...)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	return out, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// APINodeServiceServer is the server API for APINodeService service.
 | 
			
		||||
type APINodeServiceServer interface {
 | 
			
		||||
	// 创建API节点
 | 
			
		||||
@@ -1858,6 +2218,10 @@ type APINodeServiceServer interface {
 | 
			
		||||
	DebugAPINode(context.Context, *DebugAPINodeRequest) (*RPCSuccess, error)
 | 
			
		||||
	// 上传新版API节点文件
 | 
			
		||||
	UploadAPINodeFile(context.Context, *UploadAPINodeFileRequest) (*UploadAPINodeFileResponse, error)
 | 
			
		||||
	// 上传节点安装文件
 | 
			
		||||
	UploadDeployFileToAPINode(context.Context, *UploadDeployFileToAPINodeRequest) (*RPCSuccess, error)
 | 
			
		||||
	// 查找已有节点安装文件信息
 | 
			
		||||
	FindLatestDeployFiles(context.Context, *FindLatestDeployFilesRequest) (*FindLatestDeployFilesResponse, error)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// UnimplementedAPINodeServiceServer can be embedded to have forward compatible implementations.
 | 
			
		||||
@@ -1903,6 +2267,12 @@ func (*UnimplementedAPINodeServiceServer) DebugAPINode(context.Context, *DebugAP
 | 
			
		||||
func (*UnimplementedAPINodeServiceServer) UploadAPINodeFile(context.Context, *UploadAPINodeFileRequest) (*UploadAPINodeFileResponse, error) {
 | 
			
		||||
	return nil, status.Errorf(codes.Unimplemented, "method UploadAPINodeFile not implemented")
 | 
			
		||||
}
 | 
			
		||||
func (*UnimplementedAPINodeServiceServer) UploadDeployFileToAPINode(context.Context, *UploadDeployFileToAPINodeRequest) (*RPCSuccess, error) {
 | 
			
		||||
	return nil, status.Errorf(codes.Unimplemented, "method UploadDeployFileToAPINode not implemented")
 | 
			
		||||
}
 | 
			
		||||
func (*UnimplementedAPINodeServiceServer) FindLatestDeployFiles(context.Context, *FindLatestDeployFilesRequest) (*FindLatestDeployFilesResponse, error) {
 | 
			
		||||
	return nil, status.Errorf(codes.Unimplemented, "method FindLatestDeployFiles not implemented")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func RegisterAPINodeServiceServer(s *grpc.Server, srv APINodeServiceServer) {
 | 
			
		||||
	s.RegisterService(&_APINodeService_serviceDesc, srv)
 | 
			
		||||
@@ -2142,6 +2512,42 @@ func _APINodeService_UploadAPINodeFile_Handler(srv interface{}, ctx context.Cont
 | 
			
		||||
	return interceptor(ctx, in, info, handler)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func _APINodeService_UploadDeployFileToAPINode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 | 
			
		||||
	in := new(UploadDeployFileToAPINodeRequest)
 | 
			
		||||
	if err := dec(in); err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	if interceptor == nil {
 | 
			
		||||
		return srv.(APINodeServiceServer).UploadDeployFileToAPINode(ctx, in)
 | 
			
		||||
	}
 | 
			
		||||
	info := &grpc.UnaryServerInfo{
 | 
			
		||||
		Server:     srv,
 | 
			
		||||
		FullMethod: "/pb.APINodeService/UploadDeployFileToAPINode",
 | 
			
		||||
	}
 | 
			
		||||
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
			
		||||
		return srv.(APINodeServiceServer).UploadDeployFileToAPINode(ctx, req.(*UploadDeployFileToAPINodeRequest))
 | 
			
		||||
	}
 | 
			
		||||
	return interceptor(ctx, in, info, handler)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func _APINodeService_FindLatestDeployFiles_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 | 
			
		||||
	in := new(FindLatestDeployFilesRequest)
 | 
			
		||||
	if err := dec(in); err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	if interceptor == nil {
 | 
			
		||||
		return srv.(APINodeServiceServer).FindLatestDeployFiles(ctx, in)
 | 
			
		||||
	}
 | 
			
		||||
	info := &grpc.UnaryServerInfo{
 | 
			
		||||
		Server:     srv,
 | 
			
		||||
		FullMethod: "/pb.APINodeService/FindLatestDeployFiles",
 | 
			
		||||
	}
 | 
			
		||||
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
			
		||||
		return srv.(APINodeServiceServer).FindLatestDeployFiles(ctx, req.(*FindLatestDeployFilesRequest))
 | 
			
		||||
	}
 | 
			
		||||
	return interceptor(ctx, in, info, handler)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var _APINodeService_serviceDesc = grpc.ServiceDesc{
 | 
			
		||||
	ServiceName: "pb.APINodeService",
 | 
			
		||||
	HandlerType: (*APINodeServiceServer)(nil),
 | 
			
		||||
@@ -2198,6 +2604,14 @@ var _APINodeService_serviceDesc = grpc.ServiceDesc{
 | 
			
		||||
			MethodName: "uploadAPINodeFile",
 | 
			
		||||
			Handler:    _APINodeService_UploadAPINodeFile_Handler,
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			MethodName: "uploadDeployFileToAPINode",
 | 
			
		||||
			Handler:    _APINodeService_UploadDeployFileToAPINode_Handler,
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			MethodName: "findLatestDeployFiles",
 | 
			
		||||
			Handler:    _APINodeService_FindLatestDeployFiles_Handler,
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
	Streams:  []grpc.StreamDesc{},
 | 
			
		||||
	Metadata: "service_api_node.proto",
 | 
			
		||||
 
 | 
			
		||||
@@ -45,6 +45,12 @@ service APINodeService {
 | 
			
		||||
 | 
			
		||||
	// 上传新版API节点文件
 | 
			
		||||
	rpc uploadAPINodeFile(UploadAPINodeFileRequest) returns (UploadAPINodeFileResponse);
 | 
			
		||||
 | 
			
		||||
	// 上传节点安装文件
 | 
			
		||||
	rpc uploadDeployFileToAPINode(UploadDeployFileToAPINodeRequest) returns (RPCSuccess);
 | 
			
		||||
 | 
			
		||||
	// 查找已有节点安装文件信息
 | 
			
		||||
	rpc findLatestDeployFiles(FindLatestDeployFilesRequest) returns (FindLatestDeployFilesResponse);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 创建API节点
 | 
			
		||||
@@ -162,4 +168,29 @@ message UploadAPINodeFileRequest {
 | 
			
		||||
 | 
			
		||||
message UploadAPINodeFileResponse {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 上传节点安装文件
 | 
			
		||||
message UploadDeployFileToAPINodeRequest {
 | 
			
		||||
	string filename = 1; // 文件名
 | 
			
		||||
	string sum = 2; // 整个文件的SUM值
 | 
			
		||||
	bytes chunkData = 3; // 片段数据
 | 
			
		||||
	bool isFirstChunk = 4; // 是否为第一个片段
 | 
			
		||||
	bool isLastChunk = 5; // 是否为最后一个片段
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 查找已有节点安装文件信息
 | 
			
		||||
message FindLatestDeployFilesRequest {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
message FindLatestDeployFilesResponse {
 | 
			
		||||
	repeated DeployFile nodeDeployFiles = 1; // 边缘节点
 | 
			
		||||
	repeated DeployFile nsNodeDeployFiles = 2; // NS节点
 | 
			
		||||
 | 
			
		||||
	message DeployFile {
 | 
			
		||||
		string os = 1; // 操作系统代号
 | 
			
		||||
		string arch = 2; // 架构
 | 
			
		||||
		string version = 3; // 版本号
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user