Commit e3d58e05 authored by vicotor's avatar vicotor

add nodemanager v2

parent 599be72f
This diff is collapsed.
This diff is collapsed.
// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: nodemanager/v2/service.proto
package nodemanagerv2
import (
fmt "fmt"
proto "github.com/gogo/protobuf/proto"
math "math"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
func init() { proto.RegisterFile("nodemanager/v2/service.proto", fileDescriptor_2b1eb586465a8941) }
var fileDescriptor_2b1eb586465a8941 = []byte{
// 316 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x91, 0xc1, 0x4a, 0xc3, 0x40,
0x10, 0x86, 0x9b, 0x08, 0x1e, 0xd6, 0x52, 0x61, 0x8f, 0x41, 0x3d, 0x54, 0x05, 0x2f, 0x66, 0x65,
0xbd, 0xd5, 0x5b, 0x11, 0xbc, 0xd8, 0x5a, 0xaa, 0xd6, 0xa0, 0x05, 0xd9, 0x26, 0xc3, 0x36, 0xd4,
0x64, 0xe3, 0xce, 0x26, 0xe0, 0xeb, 0xf4, 0xe8, 0xa3, 0x88, 0x4f, 0xe1, 0xd1, 0xa7, 0x90, 0x26,
0xa9, 0x24, 0x11, 0x7b, 0xdb, 0xf9, 0xbf, 0x7f, 0xfe, 0xd9, 0x9d, 0x25, 0x7b, 0xb1, 0x0a, 0x20,
0x12, 0xb1, 0x90, 0xa0, 0x59, 0xc6, 0x19, 0x82, 0xce, 0x42, 0x1f, 0xdc, 0x44, 0x2b, 0xa3, 0x68,
0xa7, 0x42, 0xdd, 0x8c, 0x3b, 0xc7, 0x0d, 0xb7, 0x86, 0xd7, 0x14, 0xd0, 0x3c, 0x6b, 0xc0, 0x44,
0xc5, 0x58, 0xb6, 0xf1, 0xa5, 0x4d, 0xe8, 0x50, 0x05, 0x30, 0x28, 0x9c, 0xb7, 0x45, 0x26, 0xbd,
0x27, 0x9d, 0x31, 0xc8, 0x10, 0x0d, 0xe8, 0x07, 0xa5, 0x17, 0xa0, 0xe9, 0xbe, 0x5b, 0x1f, 0xe0,
0x16, 0xfa, 0x00, 0x10, 0x85, 0x04, 0xe7, 0xa0, 0x89, 0xcb, 0xc0, 0x92, 0x77, 0x5b, 0x27, 0xd6,
0x99, 0x45, 0x3d, 0xb2, 0x53, 0xea, 0xd7, 0x21, 0x1a, 0xda, 0xfd, 0xa7, 0x69, 0x05, 0xc7, 0xc5,
0x7d, 0x9d, 0xc3, 0x8d, 0x9e, 0xe2, 0x2d, 0xdd, 0x16, 0x7d, 0x22, 0xed, 0xcb, 0x10, 0x13, 0x61,
0xfc, 0xf9, 0x9d, 0xc0, 0x05, 0xfd, 0xd3, 0x56, 0xa5, 0xeb, 0xec, 0xa3, 0xcd, 0xa6, 0x75, 0x78,
0xff, 0xd3, 0x22, 0xd4, 0x57, 0x51, 0xc3, 0xdd, 0x6f, 0x97, 0xdb, 0x1a, 0xad, 0x36, 0x39, 0xb2,
0x1e, 0x6f, 0x64, 0x68, 0xe6, 0xe9, 0xcc, 0xf5, 0x55, 0xc4, 0x54, 0xf0, 0x86, 0x08, 0x29, 0xfe,
0x1e, 0x4e, 0xf3, 0x7d, 0xfb, 0xea, 0x85, 0x49, 0x88, 0x59, 0x5e, 0x30, 0xa9, 0x58, 0xfd, 0x97,
0x2e, 0x2a, 0x65, 0xc6, 0x97, 0xf6, 0xd6, 0xd0, 0xf3, 0xde, 0xed, 0xce, 0xb0, 0x32, 0x77, 0xc2,
0x3f, 0x6a, 0xc2, 0x74, 0xc2, 0xbf, 0x6c, 0xa7, 0x2e, 0x4c, 0xaf, 0x46, 0xfd, 0x01, 0x18, 0x11,
0x08, 0x23, 0xbe, 0xed, 0xdd, 0x0a, 0xec, 0xf5, 0x26, 0x7c, 0xb6, 0x9d, 0x4f, 0x3f, 0xff, 0x09,
0x00, 0x00, 0xff, 0xff, 0xd4, 0xe7, 0xd3, 0x21, 0x51, 0x02, 0x00, 0x00,
}
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.2.0
// - protoc (unknown)
// source: nodemanager/v2/service.proto
package nodemanagerv2
import (
context "context"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
)
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
// Requires gRPC-Go v1.32.0 or later.
const _ = grpc.SupportPackageIsVersion7
// NodeManagerServiceClient is the client API for NodeManagerService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type NodeManagerServiceClient interface {
RegisterWorker(ctx context.Context, opts ...grpc.CallOption) (NodeManagerService_RegisterWorkerClient, error)
ManagerList(ctx context.Context, in *ManagerListRequest, opts ...grpc.CallOption) (*ManagerListResponse, error)
DispatchTask(ctx context.Context, in *DispatchTaskRequest, opts ...grpc.CallOption) (*DispatchTaskResponse, error)
}
type nodeManagerServiceClient struct {
cc grpc.ClientConnInterface
}
func NewNodeManagerServiceClient(cc grpc.ClientConnInterface) NodeManagerServiceClient {
return &nodeManagerServiceClient{cc}
}
func (c *nodeManagerServiceClient) RegisterWorker(ctx context.Context, opts ...grpc.CallOption) (NodeManagerService_RegisterWorkerClient, error) {
stream, err := c.cc.NewStream(ctx, &NodeManagerService_ServiceDesc.Streams[0], "/nodemanager.v2.NodeManagerService/RegisterWorker", opts...)
if err != nil {
return nil, err
}
x := &nodeManagerServiceRegisterWorkerClient{stream}
return x, nil
}
type NodeManagerService_RegisterWorkerClient interface {
Send(*WorkerMessage) error
Recv() (*ManagerMessage, error)
grpc.ClientStream
}
type nodeManagerServiceRegisterWorkerClient struct {
grpc.ClientStream
}
func (x *nodeManagerServiceRegisterWorkerClient) Send(m *WorkerMessage) error {
return x.ClientStream.SendMsg(m)
}
func (x *nodeManagerServiceRegisterWorkerClient) Recv() (*ManagerMessage, error) {
m := new(ManagerMessage)
if err := x.ClientStream.RecvMsg(m); err != nil {
return nil, err
}
return m, nil
}
func (c *nodeManagerServiceClient) ManagerList(ctx context.Context, in *ManagerListRequest, opts ...grpc.CallOption) (*ManagerListResponse, error) {
out := new(ManagerListResponse)
err := c.cc.Invoke(ctx, "/nodemanager.v2.NodeManagerService/ManagerList", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *nodeManagerServiceClient) DispatchTask(ctx context.Context, in *DispatchTaskRequest, opts ...grpc.CallOption) (*DispatchTaskResponse, error) {
out := new(DispatchTaskResponse)
err := c.cc.Invoke(ctx, "/nodemanager.v2.NodeManagerService/DispatchTask", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// NodeManagerServiceServer is the server API for NodeManagerService service.
// All implementations must embed UnimplementedNodeManagerServiceServer
// for forward compatibility
type NodeManagerServiceServer interface {
RegisterWorker(NodeManagerService_RegisterWorkerServer) error
ManagerList(context.Context, *ManagerListRequest) (*ManagerListResponse, error)
DispatchTask(context.Context, *DispatchTaskRequest) (*DispatchTaskResponse, error)
mustEmbedUnimplementedNodeManagerServiceServer()
}
// UnimplementedNodeManagerServiceServer must be embedded to have forward compatible implementations.
type UnimplementedNodeManagerServiceServer struct {
}
func (UnimplementedNodeManagerServiceServer) RegisterWorker(NodeManagerService_RegisterWorkerServer) error {
return status.Errorf(codes.Unimplemented, "method RegisterWorker not implemented")
}
func (UnimplementedNodeManagerServiceServer) ManagerList(context.Context, *ManagerListRequest) (*ManagerListResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ManagerList not implemented")
}
func (UnimplementedNodeManagerServiceServer) DispatchTask(context.Context, *DispatchTaskRequest) (*DispatchTaskResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method DispatchTask not implemented")
}
func (UnimplementedNodeManagerServiceServer) mustEmbedUnimplementedNodeManagerServiceServer() {}
// UnsafeNodeManagerServiceServer may be embedded to opt out of forward compatibility for this service.
// Use of this interface is not recommended, as added methods to NodeManagerServiceServer will
// result in compilation errors.
type UnsafeNodeManagerServiceServer interface {
mustEmbedUnimplementedNodeManagerServiceServer()
}
func RegisterNodeManagerServiceServer(s grpc.ServiceRegistrar, srv NodeManagerServiceServer) {
s.RegisterService(&NodeManagerService_ServiceDesc, srv)
}
func _NodeManagerService_RegisterWorker_Handler(srv interface{}, stream grpc.ServerStream) error {
return srv.(NodeManagerServiceServer).RegisterWorker(&nodeManagerServiceRegisterWorkerServer{stream})
}
type NodeManagerService_RegisterWorkerServer interface {
Send(*ManagerMessage) error
Recv() (*WorkerMessage, error)
grpc.ServerStream
}
type nodeManagerServiceRegisterWorkerServer struct {
grpc.ServerStream
}
func (x *nodeManagerServiceRegisterWorkerServer) Send(m *ManagerMessage) error {
return x.ServerStream.SendMsg(m)
}
func (x *nodeManagerServiceRegisterWorkerServer) Recv() (*WorkerMessage, error) {
m := new(WorkerMessage)
if err := x.ServerStream.RecvMsg(m); err != nil {
return nil, err
}
return m, nil
}
func _NodeManagerService_ManagerList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ManagerListRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(NodeManagerServiceServer).ManagerList(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/nodemanager.v2.NodeManagerService/ManagerList",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(NodeManagerServiceServer).ManagerList(ctx, req.(*ManagerListRequest))
}
return interceptor(ctx, in, info, handler)
}
func _NodeManagerService_DispatchTask_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(DispatchTaskRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(NodeManagerServiceServer).DispatchTask(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/nodemanager.v2.NodeManagerService/DispatchTask",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(NodeManagerServiceServer).DispatchTask(ctx, req.(*DispatchTaskRequest))
}
return interceptor(ctx, in, info, handler)
}
// NodeManagerService_ServiceDesc is the grpc.ServiceDesc for NodeManagerService service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var NodeManagerService_ServiceDesc = grpc.ServiceDesc{
ServiceName: "nodemanager.v2.NodeManagerService",
HandlerType: (*NodeManagerServiceServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "ManagerList",
Handler: _NodeManagerService_ManagerList_Handler,
},
{
MethodName: "DispatchTask",
Handler: _NodeManagerService_DispatchTask_Handler,
},
},
Streams: []grpc.StreamDesc{
{
StreamName: "RegisterWorker",
Handler: _NodeManagerService_RegisterWorker_Handler,
ServerStreams: true,
ClientStreams: true,
},
},
Metadata: "nodemanager/v2/service.proto",
}
syntax = "proto3";
package nodemanager.v2;
import "base/gogo.proto";
import "base/v1/odysseus.proto";
import "nodemanager/v2/resource.proto";
message WorkerMessage {
oneof message {
HeartbeatResponse heartbeat_response = 1;
GoodbyeMessage goodbye_message = 2;
// node info
NodeInfoResponse node_info = 3;
RegisteMessage registe_message = 4;
// task
SubmitTaskResult submit_task_result = 5;
FetchStandardTask fetch_standard_task = 6;
SubmitTaskAck submit_task_ack = 7;
// hardware info
DeviceInfoMessage device_info = 8;
DeviceUsageResponse device_usage = 9;
GPUUsageResponse gpu_usage = 10;
// model info
ModelsInfo models_info = 11;
AddModelInstalled add_model_installed = 12; // model is add to installed
DelModelInstalled del_model_installed = 13; // model is remove in installed-list.
AddModelRunning add_model_running = 14; // model is add to running
DelModelRunning del_mode_running = 15; // model is remove in running-list.
InstalledModelStatus installed_model_status = 16; // update installed model status
RunningModelStatus running_model_status = 17; // update running model status.
}
}
message AddModelInstalled {
repeated InstalledModel models = 1;
}
message DelModelInstalled {
repeated string model_ids = 1;
}
message AddModelRunning {
repeated RunningModel models = 1;
}
message DelModelRunning {
repeated string model_ids = 1;
}
message ManagerMessage {
oneof message {
HeartbeatRequest heartbeat_request = 1;
NodeInfoRequest node_info_request = 2;
GoodbyeMessage goodbye_message = 3;
// task
PushTaskMessage push_task = 4;
// model image
ModelOperateRequest model_operate_request = 5;
ModelListRequest model_list_request = 9; // response is ModelsInfo
// hardware
DeviceInfoRequest device_info_request = 10; // response is HardwareInfo
DeviceUsageRequest device_usage_request = 11; // response is DeviceUsageResponse
GPUUsageRequest gpu_usage_request = 12; // response is GPUUsageResponse
}
}
message HeartbeatRequest {
uint64 timestamp = 1;
}
message HeartbeatResponse {
uint64 timestamp = 1;
}
message GoodbyeMessage {
string reason = 1;
}
message NodeInfoRequest {
}
message NodeInfoResponse {
NodeInfo info = 1;
HardwareInfo hardware = 2;
ModelsInfo models = 3;
}
message PushTaskMessage {
string task_id = 1;
base.v1.TaskKind task_kind = 2;
uint64 workload = 3;
string task_cmd = 4; //
bytes task_param = 5;
uint64 task_type = 6;
}
message ModelOperateRequest {
// nodemanager 通过此消息通知 worker 安装或者删除模型
repeated ModelOperate model_operates = 1;
}
message ModelListRequest {
}
// message ModelStatusUpdate {
// repeated ModelStatus model_status = 1;
// }
message DeviceUsageRequest {
}
message DeviceUsageResponse {
HardwareUsage usage = 1;
}
message GPUUsageRequest {
}
message GPUUsageResponse {
repeated GPUUsage usages = 1;
}
message DeviceInfoRequest {
}
message DeviceInfoMessage {
HardwareInfo hardware = 1;
bytes device_signature = 2; // 由测试程序对设备信息进行签名
}
message RegisteMessage {
NodeInfo info = 1;
HardwareInfo hardware = 2;
ModelsInfo models = 3;
int64 timestamp = 4;
bytes device_signature = 5;
}
// container_signature = sign(hash(task_id+hash(task_param)+hash(task_result)))
// miner_signature = sign(hash(task_id+hash(task_param)+hash(task_result)))
// manager_signature = sign(hash(task_id+hash(task_param)+hash(task_result)+(reward_address).Bytes()+(miner_address).Bytes()+container_signature+miner_signature+workload))
message SubmitTaskResult {
string task_id = 1;
bytes container_signature = 2; // 容器签名
bytes miner_signature = 3; // worker 签名
bytes task_result_header = 4; // result headyer
bytes task_result_body = 5; // result body.
bool is_successed = 6; // 任务是否成功
uint64 task_execute_duration = 7; // 任务实际执行时间, us 为单位
int32 task_execute_code = 8; // 任务执行结果状态码
string task_execute_error = 9; // 任务执行错误信息
}
message SubmitTaskAck {
string task_id = 1;
bool can_execute = 2;
int64 boot_up_time = 3;
int64 queue_wait_time = 4;
int64 execute_time = 5;
}
message FetchStandardTask {
uint64 task_type = 1; // fetch a standard task with special task_type.
}
// message for scheduler
message DispatchTaskRequest {
base.v1.TaskContent task_data = 1;
string miner = 2;
}
message DispatchTaskResponse {
string task_id = 1;
string miner = 2;
}
message ManagerListRequest {
}
message ManagerListResponse {
repeated NodeManagerInfo managers = 1 ;
}
\ No newline at end of file
syntax = "proto3";
package nodemanager.v2;
message NodeManagerInfo {
string publickey = 1;
string endpoint = 2;
}
message NodeInfo {
string miner_pubkey = 1;
string benefit_address = 2;
}
enum ModelOperateType {
INSTALL = 0;
DELETE = 1;
RUN = 2;
STOP = 3;
}
enum ModelStatusType {
NOTEXIST = 0;
INSTALLED = 1;
DELETED = 2;
RUNNING = 3;
STOPPED = 4;
}
message ModelOperate {
string model_id = 1;
ModelOperateType operate = 2;
}
message ModelStatus {
string model_id = 1;
ModelStatusType status = 2;
}
message ModelsInfo {
repeated InstalledModel installed_models = 1;
repeated RunningModel running_models = 2;
}
message InstalledModel {
string model_id = 1;
int64 disk_size = 2;
int64 installed_time = 3;
int64 last_run_time = 4;
}
message InstalledModelStatus {
string model_id = 1;
int64 last_run_time = 2;
}
message RunningModel {
string model_id = 1;
int32 gpu_seq = 2;
int64 gpu_ram = 3;
int64 started_time = 4;
int64 last_work_time = 5;
int32 total_run_count = 6;
int32 wait_time = 7;
}
message RunningModelStatus {
string model_id = 1;
int64 last_work_time = 2;
int32 total_run_count = 3;
int32 wait_time = 4;
}
message HardwareInfo {
CPUInfo CPU = 1;
repeated GPUInfo GPU = 2;
MemoryInfo RAM = 3;
DiskInfo DISK = 4;
NetInfo NET = 5;
}
message HardwareUsage {
int32 cpu_usage = 1;
int32 ram_usage = 2;
int32 disk_usage = 3;
int32 net_bandwidth = 4;
}
message GPUUsage {
int32 seq = 1;
int64 mem_free = 2;
int32 usage = 3;
int32 temp = 4;
int32 power_rt = 5;
}
message CPUInfo {
string model = 1;
int32 number = 2;
int32 cores = 3;
int32 threads = 4;
int32 usage = 5; // 使用率-百分比
}
message GPUInfo {
int32 seq = 1;
string uuid = 2;
string model = 3;
int32 performance = 4; // 算力
int32 power_rating = 5; // 额定功率
int64 mem_total = 6; // 显存总量-字节
int64 mem_free = 7; // 显存剩余量-字节
int32 usage = 8; // gpu 使用率-百分比
int32 temp = 9; // 温度
int32 power_rt = 10; // 实时功率
}
message MemoryInfo {
int64 total = 1;
int64 free = 2;
}
message DiskInfo {
int64 total = 1;
int64 free = 2;
}
message NetInfo {
string ip = 1;
string mac = 2;
int32 bandwidth = 3;
}
\ No newline at end of file
syntax = "proto3";
package nodemanager.v2;
import "nodemanager/v2/request_response.proto";
service NodeManagerService {
rpc RegisterWorker(stream WorkerMessage) returns (stream ManagerMessage) {}
rpc ManagerList(ManagerListRequest) returns (ManagerListResponse) {}
rpc DispatchTask(DispatchTaskRequest) returns (DispatchTaskResponse) {}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment