From 198d1508ae3493171133e64bf03a7124983f4947 Mon Sep 17 00:00:00 2001 From: zhouqunjie Date: Fri, 14 Jul 2023 09:15:32 +0800 Subject: [PATCH] init --- Makefile | 2 + etc/hpcth.yaml | 13 + go.mod | 3 + hpcTH/hpcTH.pb.go | 2772 +++++++++++++++++++++++++ hpcTH/hpcTH_grpc.pb.go | 183 ++ hpcth.go | 65 + hpcthclient/hpcth.go | 64 + internal/config/config.go | 12 + internal/logic/cronlogic.go | 82 + internal/logic/listhistoryjoblogic.go | 154 ++ internal/logic/listjoblogic.go | 200 ++ internal/logic/submitjoblogic.go | 402 ++++ internal/server/hpcthserver.go | 41 + internal/svc/servicecontext.go | 21 + pb/hpcTH.proto | 287 +++ 15 files changed, 4301 insertions(+) create mode 100644 Makefile create mode 100644 etc/hpcth.yaml create mode 100644 go.mod create mode 100644 hpcTH/hpcTH.pb.go create mode 100644 hpcTH/hpcTH_grpc.pb.go create mode 100644 hpcth.go create mode 100644 hpcthclient/hpcth.go create mode 100644 internal/config/config.go create mode 100644 internal/logic/cronlogic.go create mode 100644 internal/logic/listhistoryjoblogic.go create mode 100644 internal/logic/listjoblogic.go create mode 100644 internal/logic/submitjoblogic.go create mode 100644 internal/server/hpcthserver.go create mode 100644 internal/svc/servicecontext.go create mode 100644 pb/hpcTH.proto diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..ca998c4 --- /dev/null +++ b/Makefile @@ -0,0 +1,2 @@ +rpc-gen: + goctl rpc protoc ./pb/*.proto --go_out=./ --go-grpc_out=./ --zrpc_out=. \ No newline at end of file diff --git a/etc/hpcth.yaml b/etc/hpcth.yaml new file mode 100644 index 0000000..f23a6ff --- /dev/null +++ b/etc/hpcth.yaml @@ -0,0 +1,13 @@ +NacosConfig: + DataId: pcm-th-rpc.yaml + Group: DEFAULT_GROUP + ServerConfigs: + - IpAddr: nacos.jcce.dev + Port: 8848 + ClientConfig: + NamespaceId: test + TimeoutMs: 5000 + NotLoadCacheAtStart: true + LogDir: + CacheDir: + LogLevel: debug \ No newline at end of file diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..94ebd0f --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module gitlink.org.cn/jcce-pcm/pcm-participant-slurm + +go 1.19 diff --git a/hpcTH/hpcTH.pb.go b/hpcTH/hpcTH.pb.go new file mode 100644 index 0000000..f7f8e2e --- /dev/null +++ b/hpcTH/hpcTH.pb.go @@ -0,0 +1,2772 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.19.4 +// source: hpcTH.proto + +package hpcTH + +import ( + 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) +) + +// *****************Job Start************************ +type Job struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Account string `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"` // @gotags: copier:"Account" + AllocNode string `protobuf:"bytes,2,opt,name=alloc_node,json=allocNode,proto3" json:"alloc_node,omitempty"` // @gotags: copier:"AllocNode" + AllocSid uint32 `protobuf:"varint,3,opt,name=alloc_sid,json=allocSid,proto3" json:"alloc_sid,omitempty"` // @gotags: copier:"AllocSid" + ArrayJobId uint32 `protobuf:"varint,4,opt,name=array_job_id,json=arrayJobId,proto3" json:"array_job_id,omitempty"` // @gotags: copier:"ArrayJobId" + ArrayTaskId uint32 `protobuf:"varint,5,opt,name=array_task_id,json=arrayTaskId,proto3" json:"array_task_id,omitempty"` // @gotags: copier:"ArrayTaskId" + AssocId uint32 `protobuf:"varint,6,opt,name=assoc_id,json=assocId,proto3" json:"assoc_id,omitempty"` // @gotags: copier:"AssocId" + BatchFlag uint32 `protobuf:"varint,7,opt,name=batch_flag,json=batchFlag,proto3" json:"batch_flag,omitempty"` // @gotags: copier:"BatchFlag" + BatchHost string `protobuf:"bytes,8,opt,name=batch_host,json=batchHost,proto3" json:"batch_host,omitempty"` // @gotags: copier:"BatchHost" + BatchScript string `protobuf:"bytes,9,opt,name=batch_script,json=batchScript,proto3" json:"batch_script,omitempty"` // @gotags: copier:"BatchScript" + Command string `protobuf:"bytes,10,opt,name=command,proto3" json:"command,omitempty"` // @gotags: copier:"Command" + Comment string `protobuf:"bytes,11,opt,name=comment,proto3" json:"comment,omitempty"` // @gotags: copier:"Comment" + Contiguous uint32 `protobuf:"varint,12,opt,name=contiguous,proto3" json:"contiguous,omitempty"` // @gotags: copier:"Contiguous" + CpusPerTask uint32 `protobuf:"varint,13,opt,name=cpus_per_task,json=cpusPerTask,proto3" json:"cpus_per_task,omitempty"` // @gotags: copier:"CpusPerTask" + Dependency string `protobuf:"bytes,14,opt,name=dependency,proto3" json:"dependency,omitempty"` // @gotags: copier:"Dependency" + DerivedEc uint32 `protobuf:"varint,15,opt,name=derived_ec,json=derivedEc,proto3" json:"derived_ec,omitempty"` // @gotags: copier:"DerivedEc" + EligibleTime int64 `protobuf:"varint,16,opt,name=eligible_time,json=eligibleTime,proto3" json:"eligible_time,omitempty"` // @gotags: copier:"EligibleTime" + EndTime int64 `protobuf:"varint,17,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` // @gotags: copier:"EndTime" + ExcNodes string `protobuf:"bytes,18,opt,name=exc_nodes,json=excNodes,proto3" json:"exc_nodes,omitempty"` // @gotags: copier:"ExcNodes" + ExcNodeInx int32 `protobuf:"varint,19,opt,name=exc_node_inx,json=excNodeInx,proto3" json:"exc_node_inx,omitempty"` // @gotags: copier:"ExcNodeInx" + ExitCode uint32 `protobuf:"varint,20,opt,name=exit_code,json=exitCode,proto3" json:"exit_code,omitempty"` // @gotags: copier:"ExitCode" + Features string `protobuf:"bytes,21,opt,name=features,proto3" json:"features,omitempty"` // @gotags: copier:"Features" + Gres string `protobuf:"bytes,22,opt,name=gres,proto3" json:"gres,omitempty"` // @gotags: copier:"Gres" + GroupId uint32 `protobuf:"varint,23,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` // @gotags: copier:"GroupId" + JobId uint32 `protobuf:"varint,24,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"` // @gotags: copier:"JobId" + JobState uint32 `protobuf:"varint,25,opt,name=job_state,json=jobState,proto3" json:"job_state,omitempty"` // @gotags: copier:"JobState" + Licenses string `protobuf:"bytes,26,opt,name=licenses,proto3" json:"licenses,omitempty"` // @gotags: copier:"Licenses" + MaxCpus uint32 `protobuf:"varint,27,opt,name=max_cpus,json=maxCpus,proto3" json:"max_cpus,omitempty"` // @gotags: copier:"MaxCpus" + MaxNodes uint32 `protobuf:"varint,28,opt,name=max_nodes,json=maxNodes,proto3" json:"max_nodes,omitempty"` // @gotags: copier:"MaxNodes" + BoardsPerNode uint32 `protobuf:"varint,29,opt,name=boards_per_node,json=boardsPerNode,proto3" json:"boards_per_node,omitempty"` // @gotags: copier:"BoardsPerNode" + SocketsPerBoard uint32 `protobuf:"varint,30,opt,name=sockets_per_board,json=socketsPerBoard,proto3" json:"sockets_per_board,omitempty"` // @gotags: copier:"SocketsPerBoard" + SocketsPerNode uint32 `protobuf:"varint,31,opt,name=sockets_per_node,json=socketsPerNode,proto3" json:"sockets_per_node,omitempty"` // @gotags: copier:"SocketsPerNode" + CoresPerSocket uint32 `protobuf:"varint,32,opt,name=cores_per_socket,json=coresPerSocket,proto3" json:"cores_per_socket,omitempty"` // @gotags: copier:"CoresPerSocket" + ThreadsPerCore uint32 `protobuf:"varint,33,opt,name=threads_per_core,json=threadsPerCore,proto3" json:"threads_per_core,omitempty"` // @gotags: copier:"ThreadsPerCore" + Name string `protobuf:"bytes,34,opt,name=name,proto3" json:"name,omitempty"` // @gotags: copier:"Name" + Network string `protobuf:"bytes,35,opt,name=network,proto3" json:"network,omitempty"` // @gotags: copier:"Network" + Nodes string `protobuf:"bytes,36,opt,name=nodes,proto3" json:"nodes,omitempty"` // @gotags: copier:"Nodes" + Nice uint32 `protobuf:"varint,37,opt,name=nice,proto3" json:"nice,omitempty"` // @gotags: copier:"Nice" + NodeInx int32 `protobuf:"varint,38,opt,name=node_inx,json=nodeInx,proto3" json:"node_inx,omitempty"` // @gotags: copier:"NodeInx" + NtasksPerCore uint32 `protobuf:"varint,39,opt,name=ntasks_per_core,json=ntasksPerCore,proto3" json:"ntasks_per_core,omitempty"` // @gotags: copier:"NtasksPerCore" + NtasksPerNode uint32 `protobuf:"varint,40,opt,name=ntasks_per_node,json=ntasksPerNode,proto3" json:"ntasks_per_node,omitempty"` // @gotags: copier:"NtasksPerNode" + NtasksPerSocket uint32 `protobuf:"varint,41,opt,name=ntasks_per_socket,json=ntasksPerSocket,proto3" json:"ntasks_per_socket,omitempty"` // @gotags: copier:"NtasksPerSocket" + NtasksPerBoard uint32 `protobuf:"varint,42,opt,name=ntasks_per_board,json=ntasksPerBoard,proto3" json:"ntasks_per_board,omitempty"` // @gotags: copier:"NtasksPerBoard" + NumNodes uint32 `protobuf:"varint,43,opt,name=num_nodes,json=numNodes,proto3" json:"num_nodes,omitempty"` // @gotags: copier:"NumNodes" + NumCpus uint32 `protobuf:"varint,44,opt,name=num_cpus,json=numCpus,proto3" json:"num_cpus,omitempty"` // @gotags: copier:"NumCpus" + Partition string `protobuf:"bytes,45,opt,name=partition,proto3" json:"partition,omitempty"` // @gotags: copier:"Partition" + PnMinMemory uint32 `protobuf:"varint,46,opt,name=pn_min_memory,json=pnMinMemory,proto3" json:"pn_min_memory,omitempty"` // @gotags: copier:"PnMinMemory" + PnMinCpus uint32 `protobuf:"varint,47,opt,name=pn_min_cpus,json=pnMinCpus,proto3" json:"pn_min_cpus,omitempty"` // @gotags: copier:"PnMinCpus" + PnMinTmpDisk uint32 `protobuf:"varint,48,opt,name=pn_min_tmp_disk,json=pnMinTmpDisk,proto3" json:"pn_min_tmp_disk,omitempty"` // @gotags: copier:"PnMinTmpDisk" + PreSusTime int64 `protobuf:"varint,49,opt,name=pre_sus_time,json=preSusTime,proto3" json:"pre_sus_time,omitempty"` // @gotags: copier:"PreSusTime" + Priority uint32 `protobuf:"varint,50,opt,name=priority,proto3" json:"priority,omitempty"` // @gotags: copier:"Priority" + Profile uint32 `protobuf:"varint,51,opt,name=profile,proto3" json:"profile,omitempty"` // @gotags: copier:"Profile" + Qos string `protobuf:"bytes,52,opt,name=qos,proto3" json:"qos,omitempty"` // @gotags: copier:"Qos" + ReqNodes string `protobuf:"bytes,53,opt,name=req_nodes,json=reqNodes,proto3" json:"req_nodes,omitempty"` // @gotags: copier:"ReqNodes" + ReqNodeInx int32 `protobuf:"varint,54,opt,name=req_node_inx,json=reqNodeInx,proto3" json:"req_node_inx,omitempty"` // @gotags: copier:"ReqNodeInx" + ReqSwitch uint32 `protobuf:"varint,55,opt,name=req_switch,json=reqSwitch,proto3" json:"req_switch,omitempty"` // @gotags: copier:"ReqSwitch" + Requeue uint32 `protobuf:"varint,56,opt,name=requeue,proto3" json:"requeue,omitempty"` // @gotags: copier:"Requeue" + ResizeTime int64 `protobuf:"varint,57,opt,name=resize_time,json=resizeTime,proto3" json:"resize_time,omitempty"` // @gotags: copier:"ResizeTime" + RestartCnt uint32 `protobuf:"varint,58,opt,name=restart_cnt,json=restartCnt,proto3" json:"restart_cnt,omitempty"` // @gotags: copier:"RestartCnt" + ResvName string `protobuf:"bytes,59,opt,name=resv_name,json=resvName,proto3" json:"resv_name,omitempty"` // @gotags: copier:"ResvName" + Shared uint32 `protobuf:"varint,60,opt,name=shared,proto3" json:"shared,omitempty"` // @gotags: copier:"Shared" + ShowFlags uint32 `protobuf:"varint,61,opt,name=show_flags,json=showFlags,proto3" json:"show_flags,omitempty"` // @gotags: copier:"ShowFlags" + StartTime int64 `protobuf:"varint,62,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` // @gotags: copier:"StartTime" + StateDesc string `protobuf:"bytes,63,opt,name=state_desc,json=stateDesc,proto3" json:"state_desc,omitempty"` // @gotags: copier:"StateDesc" + StateReason uint32 `protobuf:"varint,64,opt,name=state_reason,json=stateReason,proto3" json:"state_reason,omitempty"` // @gotags: copier:"StateReason" + SubmitTime int64 `protobuf:"varint,65,opt,name=submit_time,json=submitTime,proto3" json:"submit_time,omitempty"` // @gotags: copier:"SubmitTime" + SuspendTime int64 `protobuf:"varint,66,opt,name=suspend_time,json=suspendTime,proto3" json:"suspend_time,omitempty"` // @gotags: copier:"SuspendTime" + TimeLimit uint32 `protobuf:"varint,67,opt,name=time_limit,json=timeLimit,proto3" json:"time_limit,omitempty"` // @gotags: copier:"TimeLimit" + TimeMin uint32 `protobuf:"varint,68,opt,name=time_min,json=timeMin,proto3" json:"time_min,omitempty"` // @gotags: copier:"TimeMin" + UserId uint32 `protobuf:"varint,69,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` // @gotags: copier:"UserId" + PreemptTime int64 `protobuf:"varint,70,opt,name=preempt_time,json=preemptTime,proto3" json:"preempt_time,omitempty"` // @gotags: copier:"PreemptTime" + Wait4Switch uint32 `protobuf:"varint,71,opt,name=wait4switch,proto3" json:"wait4switch,omitempty"` // @gotags: copier:"Wait4Switch" + Wckey string `protobuf:"bytes,72,opt,name=wckey,proto3" json:"wckey,omitempty"` // @gotags: copier:"Wckey" + WorkDir string `protobuf:"bytes,73,opt,name=work_dir,json=workDir,proto3" json:"work_dir,omitempty"` // @gotags: copier:"WorkDir" +} + +func (x *Job) Reset() { + *x = Job{} + if protoimpl.UnsafeEnabled { + mi := &file_hpcTH_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Job) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Job) ProtoMessage() {} + +func (x *Job) ProtoReflect() protoreflect.Message { + mi := &file_hpcTH_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 Job.ProtoReflect.Descriptor instead. +func (*Job) Descriptor() ([]byte, []int) { + return file_hpcTH_proto_rawDescGZIP(), []int{0} +} + +func (x *Job) GetAccount() string { + if x != nil { + return x.Account + } + return "" +} + +func (x *Job) GetAllocNode() string { + if x != nil { + return x.AllocNode + } + return "" +} + +func (x *Job) GetAllocSid() uint32 { + if x != nil { + return x.AllocSid + } + return 0 +} + +func (x *Job) GetArrayJobId() uint32 { + if x != nil { + return x.ArrayJobId + } + return 0 +} + +func (x *Job) GetArrayTaskId() uint32 { + if x != nil { + return x.ArrayTaskId + } + return 0 +} + +func (x *Job) GetAssocId() uint32 { + if x != nil { + return x.AssocId + } + return 0 +} + +func (x *Job) GetBatchFlag() uint32 { + if x != nil { + return x.BatchFlag + } + return 0 +} + +func (x *Job) GetBatchHost() string { + if x != nil { + return x.BatchHost + } + return "" +} + +func (x *Job) GetBatchScript() string { + if x != nil { + return x.BatchScript + } + return "" +} + +func (x *Job) GetCommand() string { + if x != nil { + return x.Command + } + return "" +} + +func (x *Job) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *Job) GetContiguous() uint32 { + if x != nil { + return x.Contiguous + } + return 0 +} + +func (x *Job) GetCpusPerTask() uint32 { + if x != nil { + return x.CpusPerTask + } + return 0 +} + +func (x *Job) GetDependency() string { + if x != nil { + return x.Dependency + } + return "" +} + +func (x *Job) GetDerivedEc() uint32 { + if x != nil { + return x.DerivedEc + } + return 0 +} + +func (x *Job) GetEligibleTime() int64 { + if x != nil { + return x.EligibleTime + } + return 0 +} + +func (x *Job) GetEndTime() int64 { + if x != nil { + return x.EndTime + } + return 0 +} + +func (x *Job) GetExcNodes() string { + if x != nil { + return x.ExcNodes + } + return "" +} + +func (x *Job) GetExcNodeInx() int32 { + if x != nil { + return x.ExcNodeInx + } + return 0 +} + +func (x *Job) GetExitCode() uint32 { + if x != nil { + return x.ExitCode + } + return 0 +} + +func (x *Job) GetFeatures() string { + if x != nil { + return x.Features + } + return "" +} + +func (x *Job) GetGres() string { + if x != nil { + return x.Gres + } + return "" +} + +func (x *Job) GetGroupId() uint32 { + if x != nil { + return x.GroupId + } + return 0 +} + +func (x *Job) GetJobId() uint32 { + if x != nil { + return x.JobId + } + return 0 +} + +func (x *Job) GetJobState() uint32 { + if x != nil { + return x.JobState + } + return 0 +} + +func (x *Job) GetLicenses() string { + if x != nil { + return x.Licenses + } + return "" +} + +func (x *Job) GetMaxCpus() uint32 { + if x != nil { + return x.MaxCpus + } + return 0 +} + +func (x *Job) GetMaxNodes() uint32 { + if x != nil { + return x.MaxNodes + } + return 0 +} + +func (x *Job) GetBoardsPerNode() uint32 { + if x != nil { + return x.BoardsPerNode + } + return 0 +} + +func (x *Job) GetSocketsPerBoard() uint32 { + if x != nil { + return x.SocketsPerBoard + } + return 0 +} + +func (x *Job) GetSocketsPerNode() uint32 { + if x != nil { + return x.SocketsPerNode + } + return 0 +} + +func (x *Job) GetCoresPerSocket() uint32 { + if x != nil { + return x.CoresPerSocket + } + return 0 +} + +func (x *Job) GetThreadsPerCore() uint32 { + if x != nil { + return x.ThreadsPerCore + } + return 0 +} + +func (x *Job) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Job) GetNetwork() string { + if x != nil { + return x.Network + } + return "" +} + +func (x *Job) GetNodes() string { + if x != nil { + return x.Nodes + } + return "" +} + +func (x *Job) GetNice() uint32 { + if x != nil { + return x.Nice + } + return 0 +} + +func (x *Job) GetNodeInx() int32 { + if x != nil { + return x.NodeInx + } + return 0 +} + +func (x *Job) GetNtasksPerCore() uint32 { + if x != nil { + return x.NtasksPerCore + } + return 0 +} + +func (x *Job) GetNtasksPerNode() uint32 { + if x != nil { + return x.NtasksPerNode + } + return 0 +} + +func (x *Job) GetNtasksPerSocket() uint32 { + if x != nil { + return x.NtasksPerSocket + } + return 0 +} + +func (x *Job) GetNtasksPerBoard() uint32 { + if x != nil { + return x.NtasksPerBoard + } + return 0 +} + +func (x *Job) GetNumNodes() uint32 { + if x != nil { + return x.NumNodes + } + return 0 +} + +func (x *Job) GetNumCpus() uint32 { + if x != nil { + return x.NumCpus + } + return 0 +} + +func (x *Job) GetPartition() string { + if x != nil { + return x.Partition + } + return "" +} + +func (x *Job) GetPnMinMemory() uint32 { + if x != nil { + return x.PnMinMemory + } + return 0 +} + +func (x *Job) GetPnMinCpus() uint32 { + if x != nil { + return x.PnMinCpus + } + return 0 +} + +func (x *Job) GetPnMinTmpDisk() uint32 { + if x != nil { + return x.PnMinTmpDisk + } + return 0 +} + +func (x *Job) GetPreSusTime() int64 { + if x != nil { + return x.PreSusTime + } + return 0 +} + +func (x *Job) GetPriority() uint32 { + if x != nil { + return x.Priority + } + return 0 +} + +func (x *Job) GetProfile() uint32 { + if x != nil { + return x.Profile + } + return 0 +} + +func (x *Job) GetQos() string { + if x != nil { + return x.Qos + } + return "" +} + +func (x *Job) GetReqNodes() string { + if x != nil { + return x.ReqNodes + } + return "" +} + +func (x *Job) GetReqNodeInx() int32 { + if x != nil { + return x.ReqNodeInx + } + return 0 +} + +func (x *Job) GetReqSwitch() uint32 { + if x != nil { + return x.ReqSwitch + } + return 0 +} + +func (x *Job) GetRequeue() uint32 { + if x != nil { + return x.Requeue + } + return 0 +} + +func (x *Job) GetResizeTime() int64 { + if x != nil { + return x.ResizeTime + } + return 0 +} + +func (x *Job) GetRestartCnt() uint32 { + if x != nil { + return x.RestartCnt + } + return 0 +} + +func (x *Job) GetResvName() string { + if x != nil { + return x.ResvName + } + return "" +} + +func (x *Job) GetShared() uint32 { + if x != nil { + return x.Shared + } + return 0 +} + +func (x *Job) GetShowFlags() uint32 { + if x != nil { + return x.ShowFlags + } + return 0 +} + +func (x *Job) GetStartTime() int64 { + if x != nil { + return x.StartTime + } + return 0 +} + +func (x *Job) GetStateDesc() string { + if x != nil { + return x.StateDesc + } + return "" +} + +func (x *Job) GetStateReason() uint32 { + if x != nil { + return x.StateReason + } + return 0 +} + +func (x *Job) GetSubmitTime() int64 { + if x != nil { + return x.SubmitTime + } + return 0 +} + +func (x *Job) GetSuspendTime() int64 { + if x != nil { + return x.SuspendTime + } + return 0 +} + +func (x *Job) GetTimeLimit() uint32 { + if x != nil { + return x.TimeLimit + } + return 0 +} + +func (x *Job) GetTimeMin() uint32 { + if x != nil { + return x.TimeMin + } + return 0 +} + +func (x *Job) GetUserId() uint32 { + if x != nil { + return x.UserId + } + return 0 +} + +func (x *Job) GetPreemptTime() int64 { + if x != nil { + return x.PreemptTime + } + return 0 +} + +func (x *Job) GetWait4Switch() uint32 { + if x != nil { + return x.Wait4Switch + } + return 0 +} + +func (x *Job) GetWckey() string { + if x != nil { + return x.Wckey + } + return "" +} + +func (x *Job) GetWorkDir() string { + if x != nil { + return x.WorkDir + } + return "" +} + +type ListJobReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ListJobReq) Reset() { + *x = ListJobReq{} + if protoimpl.UnsafeEnabled { + mi := &file_hpcTH_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListJobReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListJobReq) ProtoMessage() {} + +func (x *ListJobReq) ProtoReflect() protoreflect.Message { + mi := &file_hpcTH_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 ListJobReq.ProtoReflect.Descriptor instead. +func (*ListJobReq) Descriptor() ([]byte, []int) { + return file_hpcTH_proto_rawDescGZIP(), []int{1} +} + +type ListJobResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Code uint32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` // @gotags: copier:"Code" + Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` // @gotags: copier:"Msg" + RecordCount uint32 `protobuf:"varint,3,opt,name=record_count,json=recordCount,proto3" json:"record_count,omitempty"` // @gotags: copier:"RecordCount" + Jobs []*Job `protobuf:"bytes,4,rep,name=jobs,proto3" json:"jobs,omitempty"` // @gotags: copier:"Jobs" +} + +func (x *ListJobResp) Reset() { + *x = ListJobResp{} + if protoimpl.UnsafeEnabled { + mi := &file_hpcTH_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListJobResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListJobResp) ProtoMessage() {} + +func (x *ListJobResp) ProtoReflect() protoreflect.Message { + mi := &file_hpcTH_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 ListJobResp.ProtoReflect.Descriptor instead. +func (*ListJobResp) Descriptor() ([]byte, []int) { + return file_hpcTH_proto_rawDescGZIP(), []int{2} +} + +func (x *ListJobResp) GetCode() uint32 { + if x != nil { + return x.Code + } + return 0 +} + +func (x *ListJobResp) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +func (x *ListJobResp) GetRecordCount() uint32 { + if x != nil { + return x.RecordCount + } + return 0 +} + +func (x *ListJobResp) GetJobs() []*Job { + if x != nil { + return x.Jobs + } + return nil +} + +// *****************History Job Start************************ +type HistoryJob struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AllocCpu uint32 `protobuf:"varint,1,opt,name=alloc_cpu,json=allocCpu,proto3" json:"alloc_cpu,omitempty"` // @gotags: copier:"AllocCPU" + AllocNodes uint32 `protobuf:"varint,2,opt,name=alloc_nodes,json=allocNodes,proto3" json:"alloc_nodes,omitempty"` // @gotags: copier:"AllocNodes" + Account string `protobuf:"bytes,3,opt,name=account,proto3" json:"account,omitempty"` // @gotags: copier:"Account" + Associd uint32 `protobuf:"varint,4,opt,name=associd,proto3" json:"associd,omitempty"` // @gotags: copier:"AssocId" + Blockid string `protobuf:"bytes,5,opt,name=blockid,proto3" json:"blockid,omitempty"` // @gotags: copier:"BlockId" + Cluster string `protobuf:"bytes,6,opt,name=cluster,proto3" json:"cluster,omitempty"` // @gotags: copier:"Cluster" + DerivedEc uint32 `protobuf:"varint,7,opt,name=derived_ec,json=derivedEc,proto3" json:"derived_ec,omitempty"` // @gotags: copier:"DerivedEc" + DerivedEs string `protobuf:"bytes,8,opt,name=derived_es,json=derivedEs,proto3" json:"derived_es,omitempty"` // @gotags: copier:"DerivedEs" + Elapsed uint32 `protobuf:"varint,9,opt,name=elapsed,proto3" json:"elapsed,omitempty"` // @gotags: copier:"Elapsed" + Eligible int64 `protobuf:"varint,10,opt,name=eligible,proto3" json:"eligible,omitempty"` // @gotags: copier:"Eligible" + End int64 `protobuf:"varint,11,opt,name=end,proto3" json:"end,omitempty"` // @gotags: copier:"End" + Exitcode uint32 `protobuf:"varint,12,opt,name=exitcode,proto3" json:"exitcode,omitempty"` // @gotags: copier:"ExitCode" + Gid uint32 `protobuf:"varint,13,opt,name=gid,proto3" json:"gid,omitempty"` // @gotags: copier:"Gid" + Jobid uint32 `protobuf:"varint,14,opt,name=jobid,proto3" json:"jobid,omitempty"` // @gotags: copier:"JobId" + Jobname string `protobuf:"bytes,15,opt,name=jobname,proto3" json:"jobname,omitempty"` // @gotags: copier:"JobName" + Lft uint32 `protobuf:"varint,16,opt,name=lft,proto3" json:"lft,omitempty"` // @gotags: copier:"Lft" + Partition string `protobuf:"bytes,17,opt,name=partition,proto3" json:"partition,omitempty"` // @gotags: copier:"Partition" + Nodes string `protobuf:"bytes,18,opt,name=nodes,proto3" json:"nodes,omitempty"` // @gotags: copier:"Nodes" + Priority uint32 `protobuf:"varint,19,opt,name=priority,proto3" json:"priority,omitempty"` // @gotags: copier:"Priority" + Qosid uint32 `protobuf:"varint,20,opt,name=qosid,proto3" json:"qosid,omitempty"` // @gotags: copier:"Qosid" + ReqCpus uint32 `protobuf:"varint,21,opt,name=req_cpus,json=reqCpus,proto3" json:"req_cpus,omitempty"` // @gotags: copier:"ReqCpus" + ReqMem uint32 `protobuf:"varint,22,opt,name=req_mem,json=reqMem,proto3" json:"req_mem,omitempty"` // @gotags: copier:"ReqMem" + Requid uint32 `protobuf:"varint,23,opt,name=requid,proto3" json:"requid,omitempty"` // @gotags: copier:"Requid" + Resvid uint32 `protobuf:"varint,24,opt,name=resvid,proto3" json:"resvid,omitempty"` // @gotags: copier:"Resvid" + ShowFull uint32 `protobuf:"varint,25,opt,name=show_full,json=showFull,proto3" json:"show_full,omitempty"` // @gotags: copier:"ShowFull" + Start int64 `protobuf:"varint,26,opt,name=start,proto3" json:"start,omitempty"` // @gotags: copier:"Start" + State uint32 `protobuf:"varint,27,opt,name=state,proto3" json:"state,omitempty"` // @gotags: copier:"State" + Submit int64 `protobuf:"varint,28,opt,name=submit,proto3" json:"submit,omitempty"` // @gotags: copier:"Submit" + Suspended uint32 `protobuf:"varint,29,opt,name=suspended,proto3" json:"suspended,omitempty"` // @gotags: copier:"Suspended" + SysCpuSec uint32 `protobuf:"varint,30,opt,name=sys_cpu_sec,json=sysCpuSec,proto3" json:"sys_cpu_sec,omitempty"` // @gotags: copier:"SysCpuSec" + SysCpuUsec uint32 `protobuf:"varint,31,opt,name=sys_cpu_usec,json=sysCpuUsec,proto3" json:"sys_cpu_usec,omitempty"` // @gotags: copier:"SysCpuUsec" + Timelimit uint32 `protobuf:"varint,32,opt,name=timelimit,proto3" json:"timelimit,omitempty"` // @gotags: copier:"Timelimit" + TotCpuSec uint32 `protobuf:"varint,33,opt,name=tot_cpu_sec,json=totCpuSec,proto3" json:"tot_cpu_sec,omitempty"` // @gotags: copier:"TotCpuSec" + TotCpuUsec uint32 `protobuf:"varint,34,opt,name=tot_cpu_usec,json=totCpuUsec,proto3" json:"tot_cpu_usec,omitempty"` // @gotags: copier:"TotCpuUsec" + TrackSteps uint32 `protobuf:"varint,35,opt,name=track_steps,json=trackSteps,proto3" json:"track_steps,omitempty"` // @gotags: copier:"TrackSteps" + Uid uint32 `protobuf:"varint,36,opt,name=uid,proto3" json:"uid,omitempty"` // @gotags: copier:"Uid" + User string `protobuf:"bytes,37,opt,name=user,proto3" json:"user,omitempty"` // @gotags: copier:"User" + UserCpuSec uint32 `protobuf:"varint,38,opt,name=user_cpu_sec,json=userCpuSec,proto3" json:"user_cpu_sec,omitempty"` // @gotags: copier:"UserCpuSec" + UserCpuUsec uint32 `protobuf:"varint,39,opt,name=user_cpu_usec,json=userCpuUsec,proto3" json:"user_cpu_usec,omitempty"` // @gotags: copier:"UserCpuUsec" + Wckey string `protobuf:"bytes,40,opt,name=wckey,proto3" json:"wckey,omitempty"` // @gotags: copier:"Wckey" + Wckeyid uint32 `protobuf:"varint,41,opt,name=wckeyid,proto3" json:"wckeyid,omitempty"` // @gotags: copier:"Wckeyid" +} + +func (x *HistoryJob) Reset() { + *x = HistoryJob{} + if protoimpl.UnsafeEnabled { + mi := &file_hpcTH_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *HistoryJob) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HistoryJob) ProtoMessage() {} + +func (x *HistoryJob) ProtoReflect() protoreflect.Message { + mi := &file_hpcTH_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 HistoryJob.ProtoReflect.Descriptor instead. +func (*HistoryJob) Descriptor() ([]byte, []int) { + return file_hpcTH_proto_rawDescGZIP(), []int{3} +} + +func (x *HistoryJob) GetAllocCpu() uint32 { + if x != nil { + return x.AllocCpu + } + return 0 +} + +func (x *HistoryJob) GetAllocNodes() uint32 { + if x != nil { + return x.AllocNodes + } + return 0 +} + +func (x *HistoryJob) GetAccount() string { + if x != nil { + return x.Account + } + return "" +} + +func (x *HistoryJob) GetAssocid() uint32 { + if x != nil { + return x.Associd + } + return 0 +} + +func (x *HistoryJob) GetBlockid() string { + if x != nil { + return x.Blockid + } + return "" +} + +func (x *HistoryJob) GetCluster() string { + if x != nil { + return x.Cluster + } + return "" +} + +func (x *HistoryJob) GetDerivedEc() uint32 { + if x != nil { + return x.DerivedEc + } + return 0 +} + +func (x *HistoryJob) GetDerivedEs() string { + if x != nil { + return x.DerivedEs + } + return "" +} + +func (x *HistoryJob) GetElapsed() uint32 { + if x != nil { + return x.Elapsed + } + return 0 +} + +func (x *HistoryJob) GetEligible() int64 { + if x != nil { + return x.Eligible + } + return 0 +} + +func (x *HistoryJob) GetEnd() int64 { + if x != nil { + return x.End + } + return 0 +} + +func (x *HistoryJob) GetExitcode() uint32 { + if x != nil { + return x.Exitcode + } + return 0 +} + +func (x *HistoryJob) GetGid() uint32 { + if x != nil { + return x.Gid + } + return 0 +} + +func (x *HistoryJob) GetJobid() uint32 { + if x != nil { + return x.Jobid + } + return 0 +} + +func (x *HistoryJob) GetJobname() string { + if x != nil { + return x.Jobname + } + return "" +} + +func (x *HistoryJob) GetLft() uint32 { + if x != nil { + return x.Lft + } + return 0 +} + +func (x *HistoryJob) GetPartition() string { + if x != nil { + return x.Partition + } + return "" +} + +func (x *HistoryJob) GetNodes() string { + if x != nil { + return x.Nodes + } + return "" +} + +func (x *HistoryJob) GetPriority() uint32 { + if x != nil { + return x.Priority + } + return 0 +} + +func (x *HistoryJob) GetQosid() uint32 { + if x != nil { + return x.Qosid + } + return 0 +} + +func (x *HistoryJob) GetReqCpus() uint32 { + if x != nil { + return x.ReqCpus + } + return 0 +} + +func (x *HistoryJob) GetReqMem() uint32 { + if x != nil { + return x.ReqMem + } + return 0 +} + +func (x *HistoryJob) GetRequid() uint32 { + if x != nil { + return x.Requid + } + return 0 +} + +func (x *HistoryJob) GetResvid() uint32 { + if x != nil { + return x.Resvid + } + return 0 +} + +func (x *HistoryJob) GetShowFull() uint32 { + if x != nil { + return x.ShowFull + } + return 0 +} + +func (x *HistoryJob) GetStart() int64 { + if x != nil { + return x.Start + } + return 0 +} + +func (x *HistoryJob) GetState() uint32 { + if x != nil { + return x.State + } + return 0 +} + +func (x *HistoryJob) GetSubmit() int64 { + if x != nil { + return x.Submit + } + return 0 +} + +func (x *HistoryJob) GetSuspended() uint32 { + if x != nil { + return x.Suspended + } + return 0 +} + +func (x *HistoryJob) GetSysCpuSec() uint32 { + if x != nil { + return x.SysCpuSec + } + return 0 +} + +func (x *HistoryJob) GetSysCpuUsec() uint32 { + if x != nil { + return x.SysCpuUsec + } + return 0 +} + +func (x *HistoryJob) GetTimelimit() uint32 { + if x != nil { + return x.Timelimit + } + return 0 +} + +func (x *HistoryJob) GetTotCpuSec() uint32 { + if x != nil { + return x.TotCpuSec + } + return 0 +} + +func (x *HistoryJob) GetTotCpuUsec() uint32 { + if x != nil { + return x.TotCpuUsec + } + return 0 +} + +func (x *HistoryJob) GetTrackSteps() uint32 { + if x != nil { + return x.TrackSteps + } + return 0 +} + +func (x *HistoryJob) GetUid() uint32 { + if x != nil { + return x.Uid + } + return 0 +} + +func (x *HistoryJob) GetUser() string { + if x != nil { + return x.User + } + return "" +} + +func (x *HistoryJob) GetUserCpuSec() uint32 { + if x != nil { + return x.UserCpuSec + } + return 0 +} + +func (x *HistoryJob) GetUserCpuUsec() uint32 { + if x != nil { + return x.UserCpuUsec + } + return 0 +} + +func (x *HistoryJob) GetWckey() string { + if x != nil { + return x.Wckey + } + return "" +} + +func (x *HistoryJob) GetWckeyid() uint32 { + if x != nil { + return x.Wckeyid + } + return 0 +} + +type ListHistoryJobReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ListHistoryJobReq) Reset() { + *x = ListHistoryJobReq{} + if protoimpl.UnsafeEnabled { + mi := &file_hpcTH_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListHistoryJobReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListHistoryJobReq) ProtoMessage() {} + +func (x *ListHistoryJobReq) ProtoReflect() protoreflect.Message { + mi := &file_hpcTH_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 ListHistoryJobReq.ProtoReflect.Descriptor instead. +func (*ListHistoryJobReq) Descriptor() ([]byte, []int) { + return file_hpcTH_proto_rawDescGZIP(), []int{4} +} + +type ListHistoryJobResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Code uint32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` // @gotags: copier:"Code" + Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` // @gotags: copier:"Msg" + RecordCount uint32 `protobuf:"varint,3,opt,name=record_count,json=recordCount,proto3" json:"record_count,omitempty"` // @gotags: copier:"RecordCount" + HistoryJobs []*HistoryJob `protobuf:"bytes,4,rep,name=history_jobs,json=historyJobs,proto3" json:"history_jobs,omitempty"` // @gotags: copier:"HistoryJobs" +} + +func (x *ListHistoryJobResp) Reset() { + *x = ListHistoryJobResp{} + if protoimpl.UnsafeEnabled { + mi := &file_hpcTH_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListHistoryJobResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListHistoryJobResp) ProtoMessage() {} + +func (x *ListHistoryJobResp) ProtoReflect() protoreflect.Message { + mi := &file_hpcTH_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 ListHistoryJobResp.ProtoReflect.Descriptor instead. +func (*ListHistoryJobResp) Descriptor() ([]byte, []int) { + return file_hpcTH_proto_rawDescGZIP(), []int{5} +} + +func (x *ListHistoryJobResp) GetCode() uint32 { + if x != nil { + return x.Code + } + return 0 +} + +func (x *ListHistoryJobResp) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +func (x *ListHistoryJobResp) GetRecordCount() uint32 { + if x != nil { + return x.RecordCount + } + return 0 +} + +func (x *ListHistoryJobResp) GetHistoryJobs() []*HistoryJob { + if x != nil { + return x.HistoryJobs + } + return nil +} + +// *****************Job(Submit) Start************************ +type SubmitJobReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Account string `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"` // @gotags: copier:"account" /* charge to specified account */ + AcctgFreq string `protobuf:"bytes,2,opt,name=acctg_freq,json=acctgFreq,proto3" json:"acctg_freq,omitempty"` // @gotags: copier:"acctg_freq" /* accounting polling intervals (seconds) */ + AllocNode string `protobuf:"bytes,3,opt,name=alloc_node,json=allocNode,proto3" json:"alloc_node,omitempty"` // @gotags: copier:"alloc_node" /* node making resource allocation request * NOTE: Normally set by slurm_submit* or * slurm_allocate* function */ + AllocRespPort uint32 `protobuf:"varint,4,opt,name=alloc_resp_port,json=allocRespPort,proto3" json:"alloc_resp_port,omitempty"` // @gotags: copier:"alloc_resp_port" /* port to send allocation confirmation to */ + AllocSid uint32 `protobuf:"varint,5,opt,name=alloc_sid,json=allocSid,proto3" json:"alloc_sid,omitempty"` // @gotags: copier:"alloc_sid" /* local sid making resource allocation request * NOTE: Normally set by slurm_submit* or * slurm_allocate* function * NOTE: Also used for update flags, see * ALLOC_SID_* flags */ + Argc uint32 `protobuf:"varint,6,opt,name=argc,proto3" json:"argc,omitempty"` // @gotags: copier:"argc" /* number of arguments to the script */ + Argv []*Argv `protobuf:"bytes,7,rep,name=argv,proto3" json:"argv,omitempty"` // @gotags: copier:"Argv" /* arguments to the script */ + ArrayInx string `protobuf:"bytes,8,opt,name=array_inx,json=arrayInx,proto3" json:"array_inx,omitempty"` // @gotags: copier:"array_inx" /* job array index values */ //void *array_bitmap; /* NOTE: Set by slurmctld */ + BeginTime int64 `protobuf:"varint,9,opt,name=begin_time,json=beginTime,proto3" json:"begin_time,omitempty"` // @gotags: copier:"begin_time" /* delay initiation until this time */ + CkptInterval uint32 `protobuf:"varint,10,opt,name=ckpt_interval,json=ckptInterval,proto3" json:"ckpt_interval,omitempty"` // @gotags: copier:"ckpt_interval" /* periodically checkpoint this job */ + CkptDir string `protobuf:"bytes,11,opt,name=ckpt_dir,json=ckptDir,proto3" json:"ckpt_dir,omitempty"` // @gotags: copier:"ckpt_dir" /* directory to store checkpoint images */ + Comment string `protobuf:"bytes,12,opt,name=comment,proto3" json:"comment,omitempty"` // @gotags: copier:"comment" /* arbitrary comment (used by Moab scheduler) */ + Contiguous uint32 `protobuf:"varint,13,opt,name=contiguous,proto3" json:"contiguous,omitempty"` // @gotags: copier:"contiguous" /* 1 if job requires contiguous nodes,* 0 otherwise,default=0 */ + CpuBind string `protobuf:"bytes,14,opt,name=cpu_bind,json=cpuBind,proto3" json:"cpu_bind,omitempty"` // @gotags: copier:"cpu_bind" /* binding map for map/mask_cpu */ + CpuBindType uint32 `protobuf:"varint,15,opt,name=cpu_bind_type,json=cpuBindType,proto3" json:"cpu_bind_type,omitempty"` // @gotags: copier:"cpu_bind_type" /* see cpu_bind_type_t */ + Dependency string `protobuf:"bytes,16,opt,name=dependency,proto3" json:"dependency,omitempty"` // @gotags: copier:"dependency" /* synchronize job execution with other jobs */ + EndTime int64 `protobuf:"varint,17,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` // @gotags: copier:"end_time" /* time by which job must complete, used for * job update only now, possible deadline * scheduling in the future */ + Environment []*Environment `protobuf:"bytes,18,rep,name=environment,proto3" json:"environment,omitempty"` // @gotags: copier:"Environment" /* environment variables to set for job, * name=value pairs, one per line */ + EnvSize uint32 `protobuf:"varint,19,opt,name=env_size,json=envSize,proto3" json:"env_size,omitempty"` // @gotags: copier:"env_size" /* element count in environment */ + ExcNodes string `protobuf:"bytes,20,opt,name=exc_nodes,json=excNodes,proto3" json:"exc_nodes,omitempty"` // @gotags: copier:"exc_nodes" /* comma separated list of nodes excluded * from job's allocation, default NONE */ + Features string `protobuf:"bytes,21,opt,name=features,proto3" json:"features,omitempty"` // @gotags: copier:"features" /* comma separated list of required features, * default NONE */ + Gres string `protobuf:"bytes,22,opt,name=gres,proto3" json:"gres,omitempty"` // @gotags: copier:"gres" /* comma separated list of required generic * resources, default NONE */ + GroupId uint32 `protobuf:"varint,23,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` // @gotags: copier:"group_id" /* group to assume, if run as root. */ + Immediate uint32 `protobuf:"varint,24,opt,name=immediate,proto3" json:"immediate,omitempty"` // @gotags: copier:"immediate" /* 1 if allocate to run or fail immediately, * 0 if to be queued awaiting resources */ + JobId uint32 `protobuf:"varint,25,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"` // @gotags: copier:"job_id" /* job ID, default set by SLURM */ + KillOnNodeFail uint32 `protobuf:"varint,26,opt,name=kill_on_node_fail,json=killOnNodeFail,proto3" json:"kill_on_node_fail,omitempty"` // @gotags: copier:"kill_on_node_fail" /* 1 if node failure to kill job, * 0 otherwise,default=1 */ + Licenses string `protobuf:"bytes,27,opt,name=licenses,proto3" json:"licenses,omitempty"` // @gotags: copier:"licenses" /* licenses required by the job */ + MailType uint32 `protobuf:"varint,28,opt,name=mail_type,json=mailType,proto3" json:"mail_type,omitempty"` // @gotags: copier:"mail_type" /* see MAIL_JOB_ definitions above */ + MailUser string `protobuf:"bytes,29,opt,name=mail_user,json=mailUser,proto3" json:"mail_user,omitempty"` // @gotags: copier:"mail_user" /* user to receive notification */ + MemBind string `protobuf:"bytes,30,opt,name=mem_bind,json=memBind,proto3" json:"mem_bind,omitempty"` // @gotags: copier:"mem_bind" /* binding map for map/mask_cpu */ + MemBindType uint32 `protobuf:"varint,31,opt,name=mem_bind_type,json=memBindType,proto3" json:"mem_bind_type,omitempty"` // @gotags: copier:"mem_bind_type" /* see mem_bind_type_t */ + Name string `protobuf:"bytes,32,opt,name=name,proto3" json:"name,omitempty"` // @gotags: copier:"name" /* name of the job, default "" */ + Network string `protobuf:"bytes,33,opt,name=network,proto3" json:"network,omitempty"` // @gotags: copier:"network" /* network use spec */ + Nice uint32 `protobuf:"varint,34,opt,name=nice,proto3" json:"nice,omitempty"` // @gotags: copier:"nice" /* requested priority change, * NICE_OFFSET == no change */ + NumTasks uint32 `protobuf:"varint,35,opt,name=num_tasks,json=numTasks,proto3" json:"num_tasks,omitempty"` // @gotags: copier:"num_tasks" /* number of tasks to be started, * for batch only */ + OpenMode uint32 `protobuf:"varint,36,opt,name=open_mode,json=openMode,proto3" json:"open_mode,omitempty"` // @gotags: copier:"open_mode" /* out/err open mode truncate or append, * see OPEN_MODE_* */ + OtherPort uint32 `protobuf:"varint,37,opt,name=other_port,json=otherPort,proto3" json:"other_port,omitempty"` // @gotags: copier:"other_port" /* port to send various notification msg to */ + Overcommit uint32 `protobuf:"varint,38,opt,name=overcommit,proto3" json:"overcommit,omitempty"` // @gotags: copier:"overcommit" /* over subscribe resources, for batch only */ + Partition string `protobuf:"bytes,39,opt,name=partition,proto3" json:"partition,omitempty"` // @gotags: copier:"partition" /* name of requested partition, * default in SLURM config */ + PlaneSize uint32 `protobuf:"varint,40,opt,name=plane_size,json=planeSize,proto3" json:"plane_size,omitempty"` // @gotags: copier:"plane_size" /* plane size when task_dist = SLURM_DIST_PLANE */ + Priority uint32 `protobuf:"varint,41,opt,name=priority,proto3" json:"priority,omitempty"` // @gotags: copier:"priority" /* relative priority of the job, * explicitly set only for user root, * 0 == held (don't initiate) */ + Profile uint32 `protobuf:"varint,42,opt,name=profile,proto3" json:"profile,omitempty"` // @gotags: copier:"profile" /* Level of acct_gather_profile {all | none} */ + Qos string `protobuf:"bytes,43,opt,name=qos,proto3" json:"qos,omitempty"` // @gotags: copier:"qos" /* Quality of Service */ + RespHost string `protobuf:"bytes,44,opt,name=resp_host,json=respHost,proto3" json:"resp_host,omitempty"` // @gotags: copier:"resp_host" /* NOTE: Set by slurmctld */ + ReqNodes string `protobuf:"bytes,45,opt,name=req_nodes,json=reqNodes,proto3" json:"req_nodes,omitempty"` // @gotags: copier:"req_nodes" /* comma separated list of required nodes * default NONE */ + Requeue uint32 `protobuf:"varint,46,opt,name=requeue,proto3" json:"requeue,omitempty"` // @gotags: copier:"requeue" /* enable or disable job requeue option */ + Reservation string `protobuf:"bytes,47,opt,name=reservation,proto3" json:"reservation,omitempty"` // @gotags: copier:"reservation" /* name of reservation to use */ + Script string `protobuf:"bytes,48,opt,name=script,proto3" json:"script,omitempty"` // @gotags: copier:"script" /* the actual job script, default NONE */ + Shared uint32 `protobuf:"varint,49,opt,name=shared,proto3" json:"shared,omitempty"` // @gotags: copier:"shared" /* 1 if job can share nodes with other jobs, * 0 if job needs exclusive access to the node, * or NO_VAL to accept the system default. * SHARED_FORCE to eliminate user control. */ //char **spank_job_env; environment variables for job prolog/epilog // * scripts as set by SPANK plugins + SpankJobEnvSize uint32 `protobuf:"varint,50,opt,name=spank_job_env_size,json=spankJobEnvSize,proto3" json:"spank_job_env_size,omitempty"` // @gotags: copier:"spank_job_env_size" /* element count in spank_env */ + TaskDist uint32 `protobuf:"varint,51,opt,name=task_dist,json=taskDist,proto3" json:"task_dist,omitempty"` // @gotags: copier:"task_dist" /* see enum task_dist_state */ + TimeLimit uint32 `protobuf:"varint,52,opt,name=time_limit,json=timeLimit,proto3" json:"time_limit,omitempty"` // @gotags: copier:"time_limit" /* maximum run time in minutes, default is * partition limit */ + TimeMin uint32 `protobuf:"varint,53,opt,name=time_min,json=timeMin,proto3" json:"time_min,omitempty"` // @gotags: copier:"time_min" /* minimum run time in minutes, default is * time_limit */ + UserId uint32 `protobuf:"varint,54,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` // @gotags: copier:"user_id" /* set only if different from current UID, * can only be explicitly set by user root */ + WaitAllNodes uint32 `protobuf:"varint,55,opt,name=wait_all_nodes,json=waitAllNodes,proto3" json:"wait_all_nodes,omitempty"` // @gotags: copier:"wait_all_nodes" /* 0 to start job immediately after allocation * 1 to start job after all nodes booted * or NO_VAL to use system default */ + WarnSignal uint32 `protobuf:"varint,56,opt,name=warn_signal,json=warnSignal,proto3" json:"warn_signal,omitempty"` // @gotags: copier:"warn_signal" /* signal to send when approaching end time */ + WarnTime uint32 `protobuf:"varint,57,opt,name=warn_time,json=warnTime,proto3" json:"warn_time,omitempty"` // @gotags: copier:"warn_time" /* time before end to send signal (seconds) */ + WorkDir string `protobuf:"bytes,58,opt,name=work_dir,json=workDir,proto3" json:"work_dir,omitempty"` // @gotags: copier:"work_dir" /* pathname of working directory */ /* job constraints: */ + CpusPerTask uint32 `protobuf:"varint,59,opt,name=cpus_per_task,json=cpusPerTask,proto3" json:"cpus_per_task,omitempty"` // @gotags: copier:"cpus_per_task" /* number of processors required for * each task */ + MinCpus uint32 `protobuf:"varint,60,opt,name=min_cpus,json=minCpus,proto3" json:"min_cpus,omitempty"` // @gotags: copier:"min_cpus" /* minimum number of processors required, * default=0 */ + MaxCpus uint32 `protobuf:"varint,61,opt,name=max_cpus,json=maxCpus,proto3" json:"max_cpus,omitempty"` // @gotags: copier:"max_cpus" /* maximum number of processors required, * default=0 */ + MinNodes uint32 `protobuf:"varint,62,opt,name=min_nodes,json=minNodes,proto3" json:"min_nodes,omitempty"` // @gotags: copier:"min_nodes" /* minimum number of nodes required by job, * default=0 */ + MaxNodes uint32 `protobuf:"varint,63,opt,name=max_nodes,json=maxNodes,proto3" json:"max_nodes,omitempty"` // @gotags: copier:"max_nodes" /* maximum number of nodes usable by job, * default=0 */ + BoardsPerNode uint32 `protobuf:"varint,64,opt,name=boards_per_node,json=boardsPerNode,proto3" json:"boards_per_node,omitempty"` // @gotags: copier:"boards_per_node" /* boards per node required by job */ + SocketsPerBoard uint32 `protobuf:"varint,65,opt,name=sockets_per_board,json=socketsPerBoard,proto3" json:"sockets_per_board,omitempty"` // @gotags: copier:"sockets_per_board" /* sockets per board required by job */ + SocketsPerNode uint32 `protobuf:"varint,66,opt,name=sockets_per_node,json=socketsPerNode,proto3" json:"sockets_per_node,omitempty"` // @gotags: copier:"sockets_per_node" /* sockets per node required by job */ + CoresPerSocket uint32 `protobuf:"varint,67,opt,name=cores_per_socket,json=coresPerSocket,proto3" json:"cores_per_socket,omitempty"` // @gotags: copier:"cores_per_socket" /* cores per socket required by job */ + ThreadsPerCore uint32 `protobuf:"varint,68,opt,name=threads_per_core,json=threadsPerCore,proto3" json:"threads_per_core,omitempty"` // @gotags: copier:"threads_per_core" /* threads per core required by job */ + NtasksPerNode uint32 `protobuf:"varint,69,opt,name=ntasks_per_node,json=ntasksPerNode,proto3" json:"ntasks_per_node,omitempty"` // @gotags: copier:"ntasks_per_node" /* number of tasks to invoke on each node */ + NtasksPerSocket uint32 `protobuf:"varint,70,opt,name=ntasks_per_socket,json=ntasksPerSocket,proto3" json:"ntasks_per_socket,omitempty"` // @gotags: copier:"ntasks_per_socket" /* number of tasks to invoke on * each socket */ + NtasksPerCore uint32 `protobuf:"varint,71,opt,name=ntasks_per_core,json=ntasksPerCore,proto3" json:"ntasks_per_core,omitempty"` // @gotags: copier:"ntasks_per_core" /* number of tasks to invoke on each core */ + NtasksPerBoard uint32 `protobuf:"varint,72,opt,name=ntasks_per_board,json=ntasksPerBoard,proto3" json:"ntasks_per_board,omitempty"` // @gotags: copier:"ntasks_per_board" /* number of tasks to invoke on each board */ + PnMinCpus uint32 `protobuf:"varint,73,opt,name=pn_min_cpus,json=pnMinCpus,proto3" json:"pn_min_cpus,omitempty"` // @gotags: copier:"pn_min_cpus" /* minimum # CPUs per node, default=0 */ + PnMinMemory uint32 `protobuf:"varint,74,opt,name=pn_min_memory,json=pnMinMemory,proto3" json:"pn_min_memory,omitempty"` // @gotags: copier:"pn_min_memory" /* minimum real memory per node OR * real memory per CPU | MEM_PER_CPU, * default=0 (no limit) */ + PnMinTmpDisk uint32 `protobuf:"varint,75,opt,name=pn_min_tmp_disk,json=pnMinTmpDisk,proto3" json:"pn_min_tmp_disk,omitempty"` // @gotags: copier:"pn_min_tmp_disk" /* minimum tmp disk per node, * default=0 */ + // uint16_t geometry[HIGHEST_DIMENSIONS]; node count in various // * dimensions, e.g. X, Y, and Z + // uint16_t conn_type[HIGHEST_DIMENSIONS]; see enum connection_type + Reboot uint32 `protobuf:"varint,76,opt,name=reboot,proto3" json:"reboot,omitempty"` // @gotags: copier:"reboot" /* force node reboot before startup */ + Rotate uint32 `protobuf:"varint,77,opt,name=rotate,proto3" json:"rotate,omitempty"` // @gotags: copier:"rotate" /* permit geometry rotation if set */ + ReqSwitch uint32 `protobuf:"varint,78,opt,name=req_switch,json=reqSwitch,proto3" json:"req_switch,omitempty"` // @gotags: copier:"req_switch" /* Minimum number of switches */ //dynamic_plugin_data_t *select_jobinfo; /* opaque data type, // * SLURM internal use only */ + StdErr string `protobuf:"bytes,79,opt,name=std_err,json=stdErr,proto3" json:"std_err,omitempty"` // @gotags: copier:"std_err" /* pathname of stderr */ + StdIn string `protobuf:"bytes,80,opt,name=std_in,json=stdIn,proto3" json:"std_in,omitempty"` // @gotags: copier:"std_in" /* pathname of stdin */ + StdOut string `protobuf:"bytes,81,opt,name=std_out,json=stdOut,proto3" json:"std_out,omitempty"` // @gotags: copier:"std_out" /* pathname of stdout */ + Wait4Switch uint32 `protobuf:"varint,82,opt,name=wait4switch,proto3" json:"wait4switch,omitempty"` // @gotags: copier:"wait4switch" /* Maximum time to wait for minimum switches */ + Wckey string `protobuf:"bytes,83,opt,name=wckey,proto3" json:"wckey,omitempty"` // @gotags: copier:"wckey" /* wckey for job */ +} + +func (x *SubmitJobReq) Reset() { + *x = SubmitJobReq{} + if protoimpl.UnsafeEnabled { + mi := &file_hpcTH_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SubmitJobReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubmitJobReq) ProtoMessage() {} + +func (x *SubmitJobReq) ProtoReflect() protoreflect.Message { + mi := &file_hpcTH_proto_msgTypes[6] + 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 SubmitJobReq.ProtoReflect.Descriptor instead. +func (*SubmitJobReq) Descriptor() ([]byte, []int) { + return file_hpcTH_proto_rawDescGZIP(), []int{6} +} + +func (x *SubmitJobReq) GetAccount() string { + if x != nil { + return x.Account + } + return "" +} + +func (x *SubmitJobReq) GetAcctgFreq() string { + if x != nil { + return x.AcctgFreq + } + return "" +} + +func (x *SubmitJobReq) GetAllocNode() string { + if x != nil { + return x.AllocNode + } + return "" +} + +func (x *SubmitJobReq) GetAllocRespPort() uint32 { + if x != nil { + return x.AllocRespPort + } + return 0 +} + +func (x *SubmitJobReq) GetAllocSid() uint32 { + if x != nil { + return x.AllocSid + } + return 0 +} + +func (x *SubmitJobReq) GetArgc() uint32 { + if x != nil { + return x.Argc + } + return 0 +} + +func (x *SubmitJobReq) GetArgv() []*Argv { + if x != nil { + return x.Argv + } + return nil +} + +func (x *SubmitJobReq) GetArrayInx() string { + if x != nil { + return x.ArrayInx + } + return "" +} + +func (x *SubmitJobReq) GetBeginTime() int64 { + if x != nil { + return x.BeginTime + } + return 0 +} + +func (x *SubmitJobReq) GetCkptInterval() uint32 { + if x != nil { + return x.CkptInterval + } + return 0 +} + +func (x *SubmitJobReq) GetCkptDir() string { + if x != nil { + return x.CkptDir + } + return "" +} + +func (x *SubmitJobReq) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *SubmitJobReq) GetContiguous() uint32 { + if x != nil { + return x.Contiguous + } + return 0 +} + +func (x *SubmitJobReq) GetCpuBind() string { + if x != nil { + return x.CpuBind + } + return "" +} + +func (x *SubmitJobReq) GetCpuBindType() uint32 { + if x != nil { + return x.CpuBindType + } + return 0 +} + +func (x *SubmitJobReq) GetDependency() string { + if x != nil { + return x.Dependency + } + return "" +} + +func (x *SubmitJobReq) GetEndTime() int64 { + if x != nil { + return x.EndTime + } + return 0 +} + +func (x *SubmitJobReq) GetEnvironment() []*Environment { + if x != nil { + return x.Environment + } + return nil +} + +func (x *SubmitJobReq) GetEnvSize() uint32 { + if x != nil { + return x.EnvSize + } + return 0 +} + +func (x *SubmitJobReq) GetExcNodes() string { + if x != nil { + return x.ExcNodes + } + return "" +} + +func (x *SubmitJobReq) GetFeatures() string { + if x != nil { + return x.Features + } + return "" +} + +func (x *SubmitJobReq) GetGres() string { + if x != nil { + return x.Gres + } + return "" +} + +func (x *SubmitJobReq) GetGroupId() uint32 { + if x != nil { + return x.GroupId + } + return 0 +} + +func (x *SubmitJobReq) GetImmediate() uint32 { + if x != nil { + return x.Immediate + } + return 0 +} + +func (x *SubmitJobReq) GetJobId() uint32 { + if x != nil { + return x.JobId + } + return 0 +} + +func (x *SubmitJobReq) GetKillOnNodeFail() uint32 { + if x != nil { + return x.KillOnNodeFail + } + return 0 +} + +func (x *SubmitJobReq) GetLicenses() string { + if x != nil { + return x.Licenses + } + return "" +} + +func (x *SubmitJobReq) GetMailType() uint32 { + if x != nil { + return x.MailType + } + return 0 +} + +func (x *SubmitJobReq) GetMailUser() string { + if x != nil { + return x.MailUser + } + return "" +} + +func (x *SubmitJobReq) GetMemBind() string { + if x != nil { + return x.MemBind + } + return "" +} + +func (x *SubmitJobReq) GetMemBindType() uint32 { + if x != nil { + return x.MemBindType + } + return 0 +} + +func (x *SubmitJobReq) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *SubmitJobReq) GetNetwork() string { + if x != nil { + return x.Network + } + return "" +} + +func (x *SubmitJobReq) GetNice() uint32 { + if x != nil { + return x.Nice + } + return 0 +} + +func (x *SubmitJobReq) GetNumTasks() uint32 { + if x != nil { + return x.NumTasks + } + return 0 +} + +func (x *SubmitJobReq) GetOpenMode() uint32 { + if x != nil { + return x.OpenMode + } + return 0 +} + +func (x *SubmitJobReq) GetOtherPort() uint32 { + if x != nil { + return x.OtherPort + } + return 0 +} + +func (x *SubmitJobReq) GetOvercommit() uint32 { + if x != nil { + return x.Overcommit + } + return 0 +} + +func (x *SubmitJobReq) GetPartition() string { + if x != nil { + return x.Partition + } + return "" +} + +func (x *SubmitJobReq) GetPlaneSize() uint32 { + if x != nil { + return x.PlaneSize + } + return 0 +} + +func (x *SubmitJobReq) GetPriority() uint32 { + if x != nil { + return x.Priority + } + return 0 +} + +func (x *SubmitJobReq) GetProfile() uint32 { + if x != nil { + return x.Profile + } + return 0 +} + +func (x *SubmitJobReq) GetQos() string { + if x != nil { + return x.Qos + } + return "" +} + +func (x *SubmitJobReq) GetRespHost() string { + if x != nil { + return x.RespHost + } + return "" +} + +func (x *SubmitJobReq) GetReqNodes() string { + if x != nil { + return x.ReqNodes + } + return "" +} + +func (x *SubmitJobReq) GetRequeue() uint32 { + if x != nil { + return x.Requeue + } + return 0 +} + +func (x *SubmitJobReq) GetReservation() string { + if x != nil { + return x.Reservation + } + return "" +} + +func (x *SubmitJobReq) GetScript() string { + if x != nil { + return x.Script + } + return "" +} + +func (x *SubmitJobReq) GetShared() uint32 { + if x != nil { + return x.Shared + } + return 0 +} + +func (x *SubmitJobReq) GetSpankJobEnvSize() uint32 { + if x != nil { + return x.SpankJobEnvSize + } + return 0 +} + +func (x *SubmitJobReq) GetTaskDist() uint32 { + if x != nil { + return x.TaskDist + } + return 0 +} + +func (x *SubmitJobReq) GetTimeLimit() uint32 { + if x != nil { + return x.TimeLimit + } + return 0 +} + +func (x *SubmitJobReq) GetTimeMin() uint32 { + if x != nil { + return x.TimeMin + } + return 0 +} + +func (x *SubmitJobReq) GetUserId() uint32 { + if x != nil { + return x.UserId + } + return 0 +} + +func (x *SubmitJobReq) GetWaitAllNodes() uint32 { + if x != nil { + return x.WaitAllNodes + } + return 0 +} + +func (x *SubmitJobReq) GetWarnSignal() uint32 { + if x != nil { + return x.WarnSignal + } + return 0 +} + +func (x *SubmitJobReq) GetWarnTime() uint32 { + if x != nil { + return x.WarnTime + } + return 0 +} + +func (x *SubmitJobReq) GetWorkDir() string { + if x != nil { + return x.WorkDir + } + return "" +} + +func (x *SubmitJobReq) GetCpusPerTask() uint32 { + if x != nil { + return x.CpusPerTask + } + return 0 +} + +func (x *SubmitJobReq) GetMinCpus() uint32 { + if x != nil { + return x.MinCpus + } + return 0 +} + +func (x *SubmitJobReq) GetMaxCpus() uint32 { + if x != nil { + return x.MaxCpus + } + return 0 +} + +func (x *SubmitJobReq) GetMinNodes() uint32 { + if x != nil { + return x.MinNodes + } + return 0 +} + +func (x *SubmitJobReq) GetMaxNodes() uint32 { + if x != nil { + return x.MaxNodes + } + return 0 +} + +func (x *SubmitJobReq) GetBoardsPerNode() uint32 { + if x != nil { + return x.BoardsPerNode + } + return 0 +} + +func (x *SubmitJobReq) GetSocketsPerBoard() uint32 { + if x != nil { + return x.SocketsPerBoard + } + return 0 +} + +func (x *SubmitJobReq) GetSocketsPerNode() uint32 { + if x != nil { + return x.SocketsPerNode + } + return 0 +} + +func (x *SubmitJobReq) GetCoresPerSocket() uint32 { + if x != nil { + return x.CoresPerSocket + } + return 0 +} + +func (x *SubmitJobReq) GetThreadsPerCore() uint32 { + if x != nil { + return x.ThreadsPerCore + } + return 0 +} + +func (x *SubmitJobReq) GetNtasksPerNode() uint32 { + if x != nil { + return x.NtasksPerNode + } + return 0 +} + +func (x *SubmitJobReq) GetNtasksPerSocket() uint32 { + if x != nil { + return x.NtasksPerSocket + } + return 0 +} + +func (x *SubmitJobReq) GetNtasksPerCore() uint32 { + if x != nil { + return x.NtasksPerCore + } + return 0 +} + +func (x *SubmitJobReq) GetNtasksPerBoard() uint32 { + if x != nil { + return x.NtasksPerBoard + } + return 0 +} + +func (x *SubmitJobReq) GetPnMinCpus() uint32 { + if x != nil { + return x.PnMinCpus + } + return 0 +} + +func (x *SubmitJobReq) GetPnMinMemory() uint32 { + if x != nil { + return x.PnMinMemory + } + return 0 +} + +func (x *SubmitJobReq) GetPnMinTmpDisk() uint32 { + if x != nil { + return x.PnMinTmpDisk + } + return 0 +} + +func (x *SubmitJobReq) GetReboot() uint32 { + if x != nil { + return x.Reboot + } + return 0 +} + +func (x *SubmitJobReq) GetRotate() uint32 { + if x != nil { + return x.Rotate + } + return 0 +} + +func (x *SubmitJobReq) GetReqSwitch() uint32 { + if x != nil { + return x.ReqSwitch + } + return 0 +} + +func (x *SubmitJobReq) GetStdErr() string { + if x != nil { + return x.StdErr + } + return "" +} + +func (x *SubmitJobReq) GetStdIn() string { + if x != nil { + return x.StdIn + } + return "" +} + +func (x *SubmitJobReq) GetStdOut() string { + if x != nil { + return x.StdOut + } + return "" +} + +func (x *SubmitJobReq) GetWait4Switch() uint32 { + if x != nil { + return x.Wait4Switch + } + return 0 +} + +func (x *SubmitJobReq) GetWckey() string { + if x != nil { + return x.Wckey + } + return "" +} + +type SubmitJobResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SubmitResponseMsg []*SubmitResponseMsg `protobuf:"bytes,1,rep,name=submit_response_msg,json=submitResponseMsg,proto3" json:"submit_response_msg,omitempty"` +} + +func (x *SubmitJobResp) Reset() { + *x = SubmitJobResp{} + if protoimpl.UnsafeEnabled { + mi := &file_hpcTH_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SubmitJobResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubmitJobResp) ProtoMessage() {} + +func (x *SubmitJobResp) ProtoReflect() protoreflect.Message { + mi := &file_hpcTH_proto_msgTypes[7] + 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 SubmitJobResp.ProtoReflect.Descriptor instead. +func (*SubmitJobResp) Descriptor() ([]byte, []int) { + return file_hpcTH_proto_rawDescGZIP(), []int{7} +} + +func (x *SubmitJobResp) GetSubmitResponseMsg() []*SubmitResponseMsg { + if x != nil { + return x.SubmitResponseMsg + } + return nil +} + +type SubmitResponseMsg struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + JobId uint32 `protobuf:"varint,1,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"` + StepId uint32 `protobuf:"varint,2,opt,name=step_id,json=stepId,proto3" json:"step_id,omitempty"` + ErrorCode uint32 `protobuf:"varint,3,opt,name=error_code,json=errorCode,proto3" json:"error_code,omitempty"` +} + +func (x *SubmitResponseMsg) Reset() { + *x = SubmitResponseMsg{} + if protoimpl.UnsafeEnabled { + mi := &file_hpcTH_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SubmitResponseMsg) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubmitResponseMsg) ProtoMessage() {} + +func (x *SubmitResponseMsg) ProtoReflect() protoreflect.Message { + mi := &file_hpcTH_proto_msgTypes[8] + 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 SubmitResponseMsg.ProtoReflect.Descriptor instead. +func (*SubmitResponseMsg) Descriptor() ([]byte, []int) { + return file_hpcTH_proto_rawDescGZIP(), []int{8} +} + +func (x *SubmitResponseMsg) GetJobId() uint32 { + if x != nil { + return x.JobId + } + return 0 +} + +func (x *SubmitResponseMsg) GetStepId() uint32 { + if x != nil { + return x.StepId + } + return 0 +} + +func (x *SubmitResponseMsg) GetErrorCode() uint32 { + if x != nil { + return x.ErrorCode + } + return 0 +} + +type Argv struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Argv string `protobuf:"bytes,1,opt,name=argv,proto3" json:"argv,omitempty"` // @gotags: copier:"argv" +} + +func (x *Argv) Reset() { + *x = Argv{} + if protoimpl.UnsafeEnabled { + mi := &file_hpcTH_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Argv) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Argv) ProtoMessage() {} + +func (x *Argv) ProtoReflect() protoreflect.Message { + mi := &file_hpcTH_proto_msgTypes[9] + 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 Argv.ProtoReflect.Descriptor instead. +func (*Argv) Descriptor() ([]byte, []int) { + return file_hpcTH_proto_rawDescGZIP(), []int{9} +} + +func (x *Argv) GetArgv() string { + if x != nil { + return x.Argv + } + return "" +} + +type Environment struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Environment string `protobuf:"bytes,1,opt,name=environment,proto3" json:"environment,omitempty"` // @gotags: copier:"environment" +} + +func (x *Environment) Reset() { + *x = Environment{} + if protoimpl.UnsafeEnabled { + mi := &file_hpcTH_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Environment) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Environment) ProtoMessage() {} + +func (x *Environment) ProtoReflect() protoreflect.Message { + mi := &file_hpcTH_proto_msgTypes[10] + 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 Environment.ProtoReflect.Descriptor instead. +func (*Environment) Descriptor() ([]byte, []int) { + return file_hpcTH_proto_rawDescGZIP(), []int{10} +} + +func (x *Environment) GetEnvironment() string { + if x != nil { + return x.Environment + } + return "" +} + +var File_hpcTH_proto protoreflect.FileDescriptor + +var file_hpcTH_proto_rawDesc = []byte{ + 0x0a, 0x0b, 0x68, 0x70, 0x63, 0x54, 0x48, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x68, + 0x70, 0x63, 0x54, 0x48, 0x22, 0xd5, 0x11, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x12, 0x18, 0x0a, 0x07, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x5f, + 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, 0x6c, 0x6f, + 0x63, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x5f, 0x73, + 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x53, + 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, + 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x61, 0x72, 0x72, 0x61, 0x79, 0x4a, + 0x6f, 0x62, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5f, 0x74, 0x61, + 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x61, 0x72, 0x72, + 0x61, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x6f, + 0x63, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x61, 0x73, 0x73, 0x6f, + 0x63, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x66, 0x6c, 0x61, + 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, 0x46, 0x6c, + 0x61, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x68, 0x6f, 0x73, 0x74, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, 0x48, 0x6f, 0x73, + 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x61, 0x74, 0x63, 0x68, 0x53, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x18, + 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, + 0x69, 0x67, 0x75, 0x6f, 0x75, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x63, 0x6f, + 0x6e, 0x74, 0x69, 0x67, 0x75, 0x6f, 0x75, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x63, 0x70, 0x75, 0x73, + 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x0b, 0x63, 0x70, 0x75, 0x73, 0x50, 0x65, 0x72, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x1e, 0x0a, 0x0a, + 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x1d, 0x0a, 0x0a, + 0x64, 0x65, 0x72, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x65, 0x63, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x09, 0x64, 0x65, 0x72, 0x69, 0x76, 0x65, 0x64, 0x45, 0x63, 0x12, 0x23, 0x0a, 0x0d, 0x65, + 0x6c, 0x69, 0x67, 0x69, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0c, 0x65, 0x6c, 0x69, 0x67, 0x69, 0x62, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x65, + 0x78, 0x63, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x65, 0x78, 0x63, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0c, 0x65, 0x78, 0x63, 0x5f, + 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x6e, 0x78, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, + 0x65, 0x78, 0x63, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x78, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x78, + 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x65, + 0x78, 0x69, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x67, 0x72, 0x65, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x67, 0x72, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x5f, 0x69, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x18, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6a, 0x6f, 0x62, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6a, 0x6f, + 0x62, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, + 0x65, 0x73, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, + 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x70, 0x75, 0x73, 0x18, 0x1b, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x43, 0x70, 0x75, 0x73, 0x12, 0x1b, 0x0a, + 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x08, 0x6d, 0x61, 0x78, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x62, 0x6f, + 0x61, 0x72, 0x64, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x1d, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x73, 0x50, 0x65, 0x72, 0x4e, 0x6f, + 0x64, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x5f, 0x70, 0x65, + 0x72, 0x5f, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x73, + 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x50, 0x65, 0x72, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x12, 0x28, + 0x0a, 0x10, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x6e, 0x6f, + 0x64, 0x65, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, + 0x73, 0x50, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x6f, 0x72, 0x65, + 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x20, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x0e, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x50, 0x65, 0x72, 0x53, 0x6f, 0x63, 0x6b, + 0x65, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x5f, 0x70, 0x65, + 0x72, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x74, 0x68, + 0x72, 0x65, 0x61, 0x64, 0x73, 0x50, 0x65, 0x72, 0x43, 0x6f, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x22, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x23, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, + 0x64, 0x65, 0x73, 0x18, 0x24, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x69, 0x63, 0x65, 0x18, 0x25, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, + 0x6e, 0x69, 0x63, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x6e, 0x78, + 0x18, 0x26, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x78, 0x12, + 0x26, 0x0a, 0x0f, 0x6e, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x6f, + 0x72, 0x65, 0x18, 0x27, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x6e, 0x74, 0x61, 0x73, 0x6b, 0x73, + 0x50, 0x65, 0x72, 0x43, 0x6f, 0x72, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x74, 0x61, 0x73, 0x6b, + 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0d, 0x6e, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x50, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x12, + 0x2a, 0x0a, 0x11, 0x6e, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x6f, + 0x63, 0x6b, 0x65, 0x74, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x6e, 0x74, 0x61, 0x73, + 0x6b, 0x73, 0x50, 0x65, 0x72, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x6e, + 0x74, 0x61, 0x73, 0x6b, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x18, + 0x2a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6e, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x50, 0x65, 0x72, + 0x42, 0x6f, 0x61, 0x72, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x75, 0x6d, 0x5f, 0x6e, 0x6f, 0x64, + 0x65, 0x73, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6e, 0x75, 0x6d, 0x4e, 0x6f, 0x64, + 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x70, 0x75, 0x73, 0x18, 0x2c, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x6e, 0x75, 0x6d, 0x43, 0x70, 0x75, 0x73, 0x12, 0x1c, 0x0a, + 0x09, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0d, 0x70, + 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x2e, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x0b, 0x70, 0x6e, 0x4d, 0x69, 0x6e, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, + 0x1e, 0x0a, 0x0b, 0x70, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x70, 0x75, 0x73, 0x18, 0x2f, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x70, 0x6e, 0x4d, 0x69, 0x6e, 0x43, 0x70, 0x75, 0x73, 0x12, + 0x25, 0x0a, 0x0f, 0x70, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x6d, 0x70, 0x5f, 0x64, 0x69, + 0x73, 0x6b, 0x18, 0x30, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x70, 0x6e, 0x4d, 0x69, 0x6e, 0x54, + 0x6d, 0x70, 0x44, 0x69, 0x73, 0x6b, 0x12, 0x20, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x5f, 0x73, 0x75, + 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x31, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x70, 0x72, + 0x65, 0x53, 0x75, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, + 0x33, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x10, + 0x0a, 0x03, 0x71, 0x6f, 0x73, 0x18, 0x34, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x71, 0x6f, 0x73, + 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x35, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x71, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x20, 0x0a, + 0x0c, 0x72, 0x65, 0x71, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x6e, 0x78, 0x18, 0x36, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0a, 0x72, 0x65, 0x71, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x78, 0x12, + 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x37, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x09, 0x72, 0x65, 0x71, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x18, + 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x75, 0x65, 0x18, 0x38, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x69, + 0x7a, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x39, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x72, + 0x65, 0x73, 0x69, 0x7a, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x3a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, + 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, + 0x73, 0x76, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x3b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, + 0x65, 0x73, 0x76, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, + 0x64, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x12, + 0x1d, 0x0a, 0x0a, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x3d, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x09, 0x73, 0x68, 0x6f, 0x77, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x1d, + 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x3e, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, + 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x18, 0x3f, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x65, 0x44, 0x65, 0x73, 0x63, 0x12, 0x21, 0x0a, 0x0c, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x40, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, + 0x1f, 0x0a, 0x0b, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x41, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x42, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x18, 0x43, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x44, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x4d, 0x69, 0x6e, 0x12, 0x17, 0x0a, + 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x45, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, + 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x65, 0x6d, 0x70, + 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x46, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x70, 0x72, + 0x65, 0x65, 0x6d, 0x70, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x77, 0x61, 0x69, + 0x74, 0x34, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x47, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, + 0x77, 0x61, 0x69, 0x74, 0x34, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x77, + 0x63, 0x6b, 0x65, 0x79, 0x18, 0x48, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x77, 0x63, 0x6b, 0x65, + 0x79, 0x12, 0x19, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x64, 0x69, 0x72, 0x18, 0x49, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x69, 0x72, 0x22, 0x0c, 0x0a, 0x0a, + 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x22, 0x76, 0x0a, 0x0b, 0x4c, 0x69, + 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, + 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x04, 0x6a, 0x6f, 0x62, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x0a, 0x2e, 0x68, 0x70, 0x63, 0x54, 0x48, 0x2e, 0x6a, 0x6f, 0x62, 0x52, 0x04, 0x6a, 0x6f, + 0x62, 0x73, 0x22, 0xd0, 0x08, 0x0a, 0x0a, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, + 0x62, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x5f, 0x63, 0x70, 0x75, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x43, 0x70, 0x75, 0x12, 0x1f, + 0x0a, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, + 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x73, 0x73, + 0x6f, 0x63, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x61, 0x73, 0x73, 0x6f, + 0x63, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x64, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x64, 0x12, 0x18, 0x0a, + 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x65, 0x72, 0x69, 0x76, + 0x65, 0x64, 0x5f, 0x65, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x64, 0x65, 0x72, + 0x69, 0x76, 0x65, 0x64, 0x45, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x65, 0x72, 0x69, 0x76, 0x65, + 0x64, 0x5f, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x65, 0x72, 0x69, + 0x76, 0x65, 0x64, 0x45, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x12, + 0x1a, 0x0a, 0x08, 0x65, 0x6c, 0x69, 0x67, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x08, 0x65, 0x6c, 0x69, 0x67, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x65, + 0x6e, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x65, 0x78, 0x69, 0x74, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x08, 0x65, 0x78, 0x69, 0x74, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x69, 0x64, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x67, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6a, + 0x6f, 0x62, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x69, + 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6a, 0x6f, 0x62, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x6a, 0x6f, 0x62, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6c, + 0x66, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6c, 0x66, 0x74, 0x12, 0x1c, 0x0a, + 0x09, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6e, + 0x6f, 0x64, 0x65, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, + 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x13, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x71, 0x6f, 0x73, 0x69, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x71, 0x6f, + 0x73, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x5f, 0x63, 0x70, 0x75, 0x73, 0x18, + 0x15, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x72, 0x65, 0x71, 0x43, 0x70, 0x75, 0x73, 0x12, 0x17, + 0x0a, 0x07, 0x72, 0x65, 0x71, 0x5f, 0x6d, 0x65, 0x6d, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x06, 0x72, 0x65, 0x71, 0x4d, 0x65, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x71, 0x75, 0x69, + 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x72, 0x65, 0x71, 0x75, 0x69, 0x64, 0x12, + 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x76, 0x69, 0x64, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x06, 0x72, 0x65, 0x73, 0x76, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x68, 0x6f, 0x77, 0x5f, + 0x66, 0x75, 0x6c, 0x6c, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x77, + 0x46, 0x75, 0x6c, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x1a, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x06, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x75, 0x73, 0x70, + 0x65, 0x6e, 0x64, 0x65, 0x64, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x73, 0x75, 0x73, + 0x70, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x5f, 0x63, 0x70, + 0x75, 0x5f, 0x73, 0x65, 0x63, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x73, 0x79, 0x73, + 0x43, 0x70, 0x75, 0x53, 0x65, 0x63, 0x12, 0x20, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x5f, 0x63, 0x70, + 0x75, 0x5f, 0x75, 0x73, 0x65, 0x63, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x73, 0x79, + 0x73, 0x43, 0x70, 0x75, 0x55, 0x73, 0x65, 0x63, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x74, 0x69, 0x6d, + 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1e, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x5f, 0x63, 0x70, + 0x75, 0x5f, 0x73, 0x65, 0x63, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x74, 0x6f, 0x74, + 0x43, 0x70, 0x75, 0x53, 0x65, 0x63, 0x12, 0x20, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x5f, 0x63, 0x70, + 0x75, 0x5f, 0x75, 0x73, 0x65, 0x63, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x6f, + 0x74, 0x43, 0x70, 0x75, 0x55, 0x73, 0x65, 0x63, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x63, + 0x6b, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x73, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, + 0x72, 0x61, 0x63, 0x6b, 0x53, 0x74, 0x65, 0x70, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, + 0x18, 0x24, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x75, + 0x73, 0x65, 0x72, 0x18, 0x25, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, + 0x20, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x73, 0x65, 0x63, 0x18, + 0x26, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x43, 0x70, 0x75, 0x53, 0x65, + 0x63, 0x12, 0x22, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x73, + 0x65, 0x63, 0x18, 0x27, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x43, 0x70, + 0x75, 0x55, 0x73, 0x65, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x63, 0x6b, 0x65, 0x79, 0x18, 0x28, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x77, 0x63, 0x6b, 0x65, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x77, + 0x63, 0x6b, 0x65, 0x79, 0x69, 0x64, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x77, 0x63, + 0x6b, 0x65, 0x79, 0x69, 0x64, 0x22, 0x13, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x69, 0x73, + 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x22, 0x93, 0x01, 0x0a, 0x12, 0x4c, + 0x69, 0x73, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x72, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x0c, 0x68, 0x69, + 0x73, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6a, 0x6f, 0x62, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x11, 0x2e, 0x68, 0x70, 0x63, 0x54, 0x48, 0x2e, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, + 0x4a, 0x6f, 0x62, 0x52, 0x0b, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x73, + 0x22, 0x87, 0x14, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, + 0x71, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x61, + 0x63, 0x63, 0x74, 0x67, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x61, 0x63, 0x63, 0x74, 0x67, 0x46, 0x72, 0x65, 0x71, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x6c, + 0x6c, 0x6f, 0x63, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x61, 0x6c, 0x6c, + 0x6f, 0x63, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x52, 0x65, 0x73, 0x70, 0x50, 0x6f, 0x72, + 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x5f, 0x73, 0x69, 0x64, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x53, 0x69, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x61, 0x72, 0x67, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x61, 0x72, + 0x67, 0x63, 0x12, 0x1f, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x76, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x0b, 0x2e, 0x68, 0x70, 0x63, 0x54, 0x48, 0x2e, 0x41, 0x72, 0x67, 0x76, 0x52, 0x04, 0x61, + 0x72, 0x67, 0x76, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5f, 0x69, 0x6e, 0x78, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x72, 0x72, 0x61, 0x79, 0x49, 0x6e, 0x78, + 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x23, 0x0a, 0x0d, 0x63, 0x6b, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x63, 0x6b, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x65, + 0x72, 0x76, 0x61, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x6b, 0x70, 0x74, 0x5f, 0x64, 0x69, 0x72, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6b, 0x70, 0x74, 0x44, 0x69, 0x72, 0x12, + 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, + 0x74, 0x69, 0x67, 0x75, 0x6f, 0x75, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x63, + 0x6f, 0x6e, 0x74, 0x69, 0x67, 0x75, 0x6f, 0x75, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x70, 0x75, + 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x70, 0x75, + 0x42, 0x69, 0x6e, 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x63, 0x70, 0x75, 0x5f, 0x62, 0x69, 0x6e, 0x64, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x63, 0x70, 0x75, + 0x42, 0x69, 0x6e, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x65, + 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, + 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x0b, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x68, 0x70, 0x63, 0x54, 0x48, + 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x65, 0x6e, + 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x76, + 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x65, 0x6e, 0x76, + 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x78, 0x63, 0x5f, 0x6e, 0x6f, 0x64, 0x65, + 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x4e, 0x6f, 0x64, 0x65, + 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x15, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x12, 0x0a, + 0x04, 0x67, 0x72, 0x65, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x67, 0x72, 0x65, + 0x73, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x17, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, + 0x69, 0x6d, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x09, 0x69, 0x6d, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x6a, 0x6f, + 0x62, 0x5f, 0x69, 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, + 0x64, 0x12, 0x29, 0x0a, 0x11, 0x6b, 0x69, 0x6c, 0x6c, 0x5f, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x64, + 0x65, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6b, 0x69, + 0x6c, 0x6c, 0x4f, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x12, 0x1a, 0x0a, 0x08, + 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x69, 0x6c, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6d, 0x61, 0x69, + 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x75, 0x73, + 0x65, 0x72, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x69, 0x6c, 0x55, 0x73, + 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x65, 0x6d, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x18, 0x1e, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x42, 0x69, 0x6e, 0x64, 0x12, 0x22, 0x0a, + 0x0d, 0x6d, 0x65, 0x6d, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x1f, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x6d, 0x65, 0x6d, 0x42, 0x69, 0x6e, 0x64, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x20, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x18, 0x21, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x69, 0x63, 0x65, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x6e, + 0x69, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x73, + 0x18, 0x23, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6e, 0x75, 0x6d, 0x54, 0x61, 0x73, 0x6b, 0x73, + 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x24, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1d, 0x0a, + 0x0a, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x25, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x09, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1e, 0x0a, 0x0a, + 0x6f, 0x76, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x26, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0a, 0x6f, 0x76, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x1c, 0x0a, 0x09, + 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x27, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x70, 0x72, 0x69, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x18, 0x2a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, + 0x10, 0x0a, 0x03, 0x71, 0x6f, 0x73, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x71, 0x6f, + 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x70, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x2c, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x1b, + 0x0a, 0x09, 0x72, 0x65, 0x71, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x2d, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x72, 0x65, 0x71, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x75, 0x65, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x75, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x65, + 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x18, 0x30, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x18, 0x31, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x12, 0x2b, 0x0a, 0x12, 0x73, 0x70, 0x61, 0x6e, 0x6b, + 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x65, 0x6e, 0x76, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x32, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x73, 0x70, 0x61, 0x6e, 0x6b, 0x4a, 0x6f, 0x62, 0x45, 0x6e, 0x76, + 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x64, 0x69, 0x73, + 0x74, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x44, 0x69, 0x73, + 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, + 0x34, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, + 0x12, 0x19, 0x0a, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x35, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x4d, 0x69, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x75, + 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x36, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x75, 0x73, + 0x65, 0x72, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x61, 0x6c, 0x6c, + 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x37, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x77, 0x61, + 0x69, 0x74, 0x41, 0x6c, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x61, + 0x72, 0x6e, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x18, 0x38, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x0a, 0x77, 0x61, 0x72, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x77, + 0x61, 0x72, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x39, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, + 0x77, 0x61, 0x72, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, + 0x5f, 0x64, 0x69, 0x72, 0x18, 0x3a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x77, 0x6f, 0x72, 0x6b, + 0x44, 0x69, 0x72, 0x12, 0x22, 0x0a, 0x0d, 0x63, 0x70, 0x75, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, + 0x74, 0x61, 0x73, 0x6b, 0x18, 0x3b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x63, 0x70, 0x75, 0x73, + 0x50, 0x65, 0x72, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x69, 0x6e, 0x5f, 0x63, + 0x70, 0x75, 0x73, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x6d, 0x69, 0x6e, 0x43, 0x70, + 0x75, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x70, 0x75, 0x73, 0x18, 0x3d, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x43, 0x70, 0x75, 0x73, 0x12, 0x1b, 0x0a, + 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, + 0x78, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x3f, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6d, + 0x61, 0x78, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x62, 0x6f, 0x61, 0x72, 0x64, + 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x40, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0d, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x73, 0x50, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x12, + 0x2a, 0x0a, 0x11, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x62, + 0x6f, 0x61, 0x72, 0x64, 0x18, 0x41, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x73, 0x6f, 0x63, 0x6b, + 0x65, 0x74, 0x73, 0x50, 0x65, 0x72, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x73, + 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, + 0x42, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x50, 0x65, + 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x5f, 0x70, + 0x65, 0x72, 0x5f, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x43, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x0e, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x50, 0x65, 0x72, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x12, + 0x28, 0x0a, 0x10, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x63, + 0x6f, 0x72, 0x65, 0x18, 0x44, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x74, 0x68, 0x72, 0x65, 0x61, + 0x64, 0x73, 0x50, 0x65, 0x72, 0x43, 0x6f, 0x72, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x74, 0x61, + 0x73, 0x6b, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x45, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x0d, 0x6e, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x50, 0x65, 0x72, 0x4e, 0x6f, 0x64, + 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x6e, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, + 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x46, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x6e, 0x74, + 0x61, 0x73, 0x6b, 0x73, 0x50, 0x65, 0x72, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x26, 0x0a, + 0x0f, 0x6e, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x72, 0x65, + 0x18, 0x47, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x6e, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x50, 0x65, + 0x72, 0x43, 0x6f, 0x72, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x6e, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x5f, + 0x70, 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x18, 0x48, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x0e, 0x6e, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x50, 0x65, 0x72, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x12, + 0x1e, 0x0a, 0x0b, 0x70, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x70, 0x75, 0x73, 0x18, 0x49, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x70, 0x6e, 0x4d, 0x69, 0x6e, 0x43, 0x70, 0x75, 0x73, 0x12, + 0x22, 0x0a, 0x0d, 0x70, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, + 0x18, 0x4a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x70, 0x6e, 0x4d, 0x69, 0x6e, 0x4d, 0x65, 0x6d, + 0x6f, 0x72, 0x79, 0x12, 0x25, 0x0a, 0x0f, 0x70, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x6d, + 0x70, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x18, 0x4b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x70, 0x6e, + 0x4d, 0x69, 0x6e, 0x54, 0x6d, 0x70, 0x44, 0x69, 0x73, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, + 0x62, 0x6f, 0x6f, 0x74, 0x18, 0x4c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x72, 0x65, 0x62, 0x6f, + 0x6f, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x18, 0x4d, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x06, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, + 0x71, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x4e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, + 0x72, 0x65, 0x71, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x74, 0x64, + 0x5f, 0x65, 0x72, 0x72, 0x18, 0x4f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x64, 0x45, + 0x72, 0x72, 0x12, 0x15, 0x0a, 0x06, 0x73, 0x74, 0x64, 0x5f, 0x69, 0x6e, 0x18, 0x50, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x64, 0x49, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x74, 0x64, + 0x5f, 0x6f, 0x75, 0x74, 0x18, 0x51, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x64, 0x4f, + 0x75, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x77, 0x61, 0x69, 0x74, 0x34, 0x73, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x18, 0x52, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x77, 0x61, 0x69, 0x74, 0x34, 0x73, 0x77, + 0x69, 0x74, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x63, 0x6b, 0x65, 0x79, 0x18, 0x53, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x77, 0x63, 0x6b, 0x65, 0x79, 0x22, 0x59, 0x0a, 0x0d, 0x53, 0x75, + 0x62, 0x6d, 0x69, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x12, 0x48, 0x0a, 0x13, 0x73, + 0x75, 0x62, 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x6d, + 0x73, 0x67, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x68, 0x70, 0x63, 0x54, 0x48, + 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, + 0x73, 0x67, 0x52, 0x11, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x4d, 0x73, 0x67, 0x22, 0x62, 0x0a, 0x11, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x73, 0x67, 0x12, 0x15, 0x0a, 0x06, 0x6a, 0x6f, + 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, + 0x64, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x74, 0x65, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x65, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x1a, 0x0a, 0x04, 0x41, 0x72, 0x67, + 0x76, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x61, 0x72, 0x67, 0x76, 0x22, 0x2f, 0x0a, 0x0b, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, + 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x6e, 0x76, 0x69, 0x72, + 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x32, 0xb8, 0x01, 0x0a, 0x05, 0x68, 0x70, 0x63, 0x54, 0x48, + 0x12, 0x30, 0x0a, 0x07, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x12, 0x11, 0x2e, 0x68, 0x70, + 0x63, 0x54, 0x48, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x1a, 0x12, + 0x2e, 0x68, 0x70, 0x63, 0x54, 0x48, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x45, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, + 0x79, 0x4a, 0x6f, 0x62, 0x12, 0x18, 0x2e, 0x68, 0x70, 0x63, 0x54, 0x48, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x1a, 0x19, + 0x2e, 0x68, 0x70, 0x63, 0x54, 0x48, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, + 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x12, 0x36, 0x0a, 0x09, 0x53, 0x75, 0x62, + 0x6d, 0x69, 0x74, 0x4a, 0x6f, 0x62, 0x12, 0x13, 0x2e, 0x68, 0x70, 0x63, 0x54, 0x48, 0x2e, 0x53, + 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x68, 0x70, + 0x63, 0x54, 0x48, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, + 0x70, 0x42, 0x08, 0x5a, 0x06, 0x2f, 0x68, 0x70, 0x63, 0x54, 0x48, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, +} + +var ( + file_hpcTH_proto_rawDescOnce sync.Once + file_hpcTH_proto_rawDescData = file_hpcTH_proto_rawDesc +) + +func file_hpcTH_proto_rawDescGZIP() []byte { + file_hpcTH_proto_rawDescOnce.Do(func() { + file_hpcTH_proto_rawDescData = protoimpl.X.CompressGZIP(file_hpcTH_proto_rawDescData) + }) + return file_hpcTH_proto_rawDescData +} + +var file_hpcTH_proto_msgTypes = make([]protoimpl.MessageInfo, 11) +var file_hpcTH_proto_goTypes = []interface{}{ + (*Job)(nil), // 0: hpcTH.job + (*ListJobReq)(nil), // 1: hpcTH.ListJobReq + (*ListJobResp)(nil), // 2: hpcTH.ListJobResp + (*HistoryJob)(nil), // 3: hpcTH.historyJob + (*ListHistoryJobReq)(nil), // 4: hpcTH.ListHistoryJobReq + (*ListHistoryJobResp)(nil), // 5: hpcTH.ListHistoryJobResp + (*SubmitJobReq)(nil), // 6: hpcTH.SubmitJobReq + (*SubmitJobResp)(nil), // 7: hpcTH.SubmitJobResp + (*SubmitResponseMsg)(nil), // 8: hpcTH.SubmitResponseMsg + (*Argv)(nil), // 9: hpcTH.Argv + (*Environment)(nil), // 10: hpcTH.Environment +} +var file_hpcTH_proto_depIdxs = []int32{ + 0, // 0: hpcTH.ListJobResp.jobs:type_name -> hpcTH.job + 3, // 1: hpcTH.ListHistoryJobResp.history_jobs:type_name -> hpcTH.historyJob + 9, // 2: hpcTH.SubmitJobReq.argv:type_name -> hpcTH.Argv + 10, // 3: hpcTH.SubmitJobReq.environment:type_name -> hpcTH.Environment + 8, // 4: hpcTH.SubmitJobResp.submit_response_msg:type_name -> hpcTH.SubmitResponseMsg + 1, // 5: hpcTH.hpcTH.ListJob:input_type -> hpcTH.ListJobReq + 4, // 6: hpcTH.hpcTH.ListHistoryJob:input_type -> hpcTH.ListHistoryJobReq + 6, // 7: hpcTH.hpcTH.SubmitJob:input_type -> hpcTH.SubmitJobReq + 2, // 8: hpcTH.hpcTH.ListJob:output_type -> hpcTH.ListJobResp + 5, // 9: hpcTH.hpcTH.ListHistoryJob:output_type -> hpcTH.ListHistoryJobResp + 7, // 10: hpcTH.hpcTH.SubmitJob:output_type -> hpcTH.SubmitJobResp + 8, // [8:11] is the sub-list for method output_type + 5, // [5:8] is the sub-list for method input_type + 5, // [5:5] is the sub-list for extension type_name + 5, // [5:5] is the sub-list for extension extendee + 0, // [0:5] is the sub-list for field type_name +} + +func init() { file_hpcTH_proto_init() } +func file_hpcTH_proto_init() { + if File_hpcTH_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_hpcTH_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Job); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hpcTH_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListJobReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hpcTH_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListJobResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hpcTH_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*HistoryJob); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hpcTH_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListHistoryJobReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hpcTH_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListHistoryJobResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hpcTH_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SubmitJobReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hpcTH_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SubmitJobResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hpcTH_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SubmitResponseMsg); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hpcTH_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Argv); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hpcTH_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Environment); 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_hpcTH_proto_rawDesc, + NumEnums: 0, + NumMessages: 11, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_hpcTH_proto_goTypes, + DependencyIndexes: file_hpcTH_proto_depIdxs, + MessageInfos: file_hpcTH_proto_msgTypes, + }.Build() + File_hpcTH_proto = out.File + file_hpcTH_proto_rawDesc = nil + file_hpcTH_proto_goTypes = nil + file_hpcTH_proto_depIdxs = nil +} diff --git a/hpcTH/hpcTH_grpc.pb.go b/hpcTH/hpcTH_grpc.pb.go new file mode 100644 index 0000000..90662e8 --- /dev/null +++ b/hpcTH/hpcTH_grpc.pb.go @@ -0,0 +1,183 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.19.4 +// source: hpcTH.proto + +package hpcTH + +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 + +// HpcTHClient is the client API for HpcTH 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 HpcTHClient interface { + // ListJob list all jobs + ListJob(ctx context.Context, in *ListJobReq, opts ...grpc.CallOption) (*ListJobResp, error) + // ListHistoryJob list all history jobs + ListHistoryJob(ctx context.Context, in *ListHistoryJobReq, opts ...grpc.CallOption) (*ListHistoryJobResp, error) + // Submit job + SubmitJob(ctx context.Context, in *SubmitJobReq, opts ...grpc.CallOption) (*SubmitJobResp, error) +} + +type hpcTHClient struct { + cc grpc.ClientConnInterface +} + +func NewHpcTHClient(cc grpc.ClientConnInterface) HpcTHClient { + return &hpcTHClient{cc} +} + +func (c *hpcTHClient) ListJob(ctx context.Context, in *ListJobReq, opts ...grpc.CallOption) (*ListJobResp, error) { + out := new(ListJobResp) + err := c.cc.Invoke(ctx, "/hpcTH.hpcTH/ListJob", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *hpcTHClient) ListHistoryJob(ctx context.Context, in *ListHistoryJobReq, opts ...grpc.CallOption) (*ListHistoryJobResp, error) { + out := new(ListHistoryJobResp) + err := c.cc.Invoke(ctx, "/hpcTH.hpcTH/ListHistoryJob", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *hpcTHClient) SubmitJob(ctx context.Context, in *SubmitJobReq, opts ...grpc.CallOption) (*SubmitJobResp, error) { + out := new(SubmitJobResp) + err := c.cc.Invoke(ctx, "/hpcTH.hpcTH/SubmitJob", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// HpcTHServer is the server API for HpcTH service. +// All implementations must embed UnimplementedHpcTHServer +// for forward compatibility +type HpcTHServer interface { + // ListJob list all jobs + ListJob(context.Context, *ListJobReq) (*ListJobResp, error) + // ListHistoryJob list all history jobs + ListHistoryJob(context.Context, *ListHistoryJobReq) (*ListHistoryJobResp, error) + // Submit job + SubmitJob(context.Context, *SubmitJobReq) (*SubmitJobResp, error) + mustEmbedUnimplementedHpcTHServer() +} + +// UnimplementedHpcTHServer must be embedded to have forward compatible implementations. +type UnimplementedHpcTHServer struct { +} + +func (UnimplementedHpcTHServer) ListJob(context.Context, *ListJobReq) (*ListJobResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListJob not implemented") +} +func (UnimplementedHpcTHServer) ListHistoryJob(context.Context, *ListHistoryJobReq) (*ListHistoryJobResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListHistoryJob not implemented") +} +func (UnimplementedHpcTHServer) SubmitJob(context.Context, *SubmitJobReq) (*SubmitJobResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method SubmitJob not implemented") +} +func (UnimplementedHpcTHServer) mustEmbedUnimplementedHpcTHServer() {} + +// UnsafeHpcTHServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to HpcTHServer will +// result in compilation errors. +type UnsafeHpcTHServer interface { + mustEmbedUnimplementedHpcTHServer() +} + +func RegisterHpcTHServer(s grpc.ServiceRegistrar, srv HpcTHServer) { + s.RegisterService(&HpcTH_ServiceDesc, srv) +} + +func _HpcTH_ListJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListJobReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(HpcTHServer).ListJob(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/hpcTH.hpcTH/ListJob", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(HpcTHServer).ListJob(ctx, req.(*ListJobReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _HpcTH_ListHistoryJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListHistoryJobReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(HpcTHServer).ListHistoryJob(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/hpcTH.hpcTH/ListHistoryJob", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(HpcTHServer).ListHistoryJob(ctx, req.(*ListHistoryJobReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _HpcTH_SubmitJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SubmitJobReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(HpcTHServer).SubmitJob(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/hpcTH.hpcTH/SubmitJob", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(HpcTHServer).SubmitJob(ctx, req.(*SubmitJobReq)) + } + return interceptor(ctx, in, info, handler) +} + +// HpcTH_ServiceDesc is the grpc.ServiceDesc for HpcTH service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var HpcTH_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "hpcTH.hpcTH", + HandlerType: (*HpcTHServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "ListJob", + Handler: _HpcTH_ListJob_Handler, + }, + { + MethodName: "ListHistoryJob", + Handler: _HpcTH_ListHistoryJob_Handler, + }, + { + MethodName: "SubmitJob", + Handler: _HpcTH_SubmitJob_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "hpcTH.proto", +} diff --git a/hpcth.go b/hpcth.go new file mode 100644 index 0000000..4657526 --- /dev/null +++ b/hpcth.go @@ -0,0 +1,65 @@ +package main + +import ( + "flag" + "github.com/zeromicro/go-zero/core/conf" + "github.com/zeromicro/go-zero/core/logx" + "github.com/zeromicro/go-zero/core/service" + "github.com/zeromicro/go-zero/zrpc" + "gitlink.org.cn/jcce-pcm/pcm-participant-slurm/rpc/hpcTH" + "gitlink.org.cn/jcce-pcm/pcm-participant-slurm/rpc/internal/config" + "gitlink.org.cn/jcce-pcm/pcm-participant-slurm/rpc/internal/logic" + "gitlink.org.cn/jcce-pcm/pcm-participant-slurm/rpc/internal/server" + "gitlink.org.cn/jcce-pcm/pcm-participant-slurm/rpc/internal/svc" + "gitlink.org.cn/jcce-pcm/utils/interceptor/rpcserver" + commonConfig "gitlink.org.cn/jcce-pcm/utils/nacos" + "google.golang.org/grpc" + "google.golang.org/grpc/reflection" +) + +var configFile = flag.String("f", "etc/hpcth.yaml", "the config file") + +func main() { + + flag.Parse() + + var bootstrapConfig commonConfig.BootstrapConfig + conf.MustLoad(*configFile, &bootstrapConfig) + + //解析业务配置 + var c config.Config + nacosConfig := bootstrapConfig.NacosConfig + + serviceConfigContent := nacosConfig.InitConfig(func(data string) { + err := conf.LoadFromYamlBytes([]byte(data), &c) + if err != nil { + panic(err) + } + }) + err := conf.LoadFromYamlBytes([]byte(serviceConfigContent), &c) + if err != nil { + panic(err) + } + // start log component + logx.MustSetup(c.LogConf) + // 注册到nacos + nacosConfig.Discovery(&c.RpcServerConf) + + ctx := svc.NewServiceContext(c) + + s := zrpc.MustNewServer(c.RpcServerConf, func(grpcServer *grpc.Server) { + hpcTH.RegisterHpcTHServer(grpcServer, server.NewHpcTHServer(ctx)) + + if c.Mode == service.DevMode || c.Mode == service.TestMode { + reflection.Register(grpcServer) + } + }) + + //rpc log + s.AddUnaryInterceptors(rpcserver.LoggerInterceptor) + + defer s.Stop() + logic.InitCron(ctx) + logx.Infof("Starting rpc server at %s...\n", c.ListenOn) + s.Start() +} diff --git a/hpcthclient/hpcth.go b/hpcthclient/hpcth.go new file mode 100644 index 0000000..501b368 --- /dev/null +++ b/hpcthclient/hpcth.go @@ -0,0 +1,64 @@ +// Code generated by goctl. DO NOT EDIT. +// Source: hpcTH.proto + +package hpcthclient + +import ( + "context" + + "gitlink.org.cn/jcce-pcm/pcm-participant-slurm/rpc/hpcTH" + + "github.com/zeromicro/go-zero/zrpc" + "google.golang.org/grpc" +) + +type ( + Argv = hpcTH.Argv + Environment = hpcTH.Environment + HistoryJob = hpcTH.HistoryJob + Job = hpcTH.Job + ListHistoryJobReq = hpcTH.ListHistoryJobReq + ListHistoryJobResp = hpcTH.ListHistoryJobResp + ListJobReq = hpcTH.ListJobReq + ListJobResp = hpcTH.ListJobResp + SubmitJobReq = hpcTH.SubmitJobReq + SubmitJobResp = hpcTH.SubmitJobResp + SubmitResponseMsg = hpcTH.SubmitResponseMsg + + HpcTH interface { + // ListJob list all jobs + ListJob(ctx context.Context, in *ListJobReq, opts ...grpc.CallOption) (*ListJobResp, error) + // ListHistoryJob list all history jobs + ListHistoryJob(ctx context.Context, in *ListHistoryJobReq, opts ...grpc.CallOption) (*ListHistoryJobResp, error) + // Submit job + SubmitJob(ctx context.Context, in *SubmitJobReq, opts ...grpc.CallOption) (*SubmitJobResp, error) + } + + defaultHpcTH struct { + cli zrpc.Client + } +) + +func NewHpcTH(cli zrpc.Client) HpcTH { + return &defaultHpcTH{ + cli: cli, + } +} + +// ListJob list all jobs +func (m *defaultHpcTH) ListJob(ctx context.Context, in *ListJobReq, opts ...grpc.CallOption) (*ListJobResp, error) { + client := hpcTH.NewHpcTHClient(m.cli.Conn()) + return client.ListJob(ctx, in, opts...) +} + +// ListHistoryJob list all history jobs +func (m *defaultHpcTH) ListHistoryJob(ctx context.Context, in *ListHistoryJobReq, opts ...grpc.CallOption) (*ListHistoryJobResp, error) { + client := hpcTH.NewHpcTHClient(m.cli.Conn()) + return client.ListHistoryJob(ctx, in, opts...) +} + +// Submit job +func (m *defaultHpcTH) SubmitJob(ctx context.Context, in *SubmitJobReq, opts ...grpc.CallOption) (*SubmitJobResp, error) { + client := hpcTH.NewHpcTHClient(m.cli.Conn()) + return client.SubmitJob(ctx, in, opts...) +} diff --git a/internal/config/config.go b/internal/config/config.go new file mode 100644 index 0000000..a9b2ecb --- /dev/null +++ b/internal/config/config.go @@ -0,0 +1,12 @@ +package config + +import ( + "github.com/zeromicro/go-zero/core/logx" + "github.com/zeromicro/go-zero/zrpc" +) + +type Config struct { + zrpc.RpcServerConf + LogConf logx.LogConf + PcmCoreRpcConf zrpc.RpcClientConf +} diff --git a/internal/logic/cronlogic.go b/internal/logic/cronlogic.go new file mode 100644 index 0000000..8459187 --- /dev/null +++ b/internal/logic/cronlogic.go @@ -0,0 +1,82 @@ +package logic + +import ( + "context" + "github.com/jinzhu/copier" + "github.com/zeromicro/go-zero/core/logx" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/rpc/pcmcoreclient" + "gitlink.org.cn/jcce-pcm/pcm-participant-slurm/rpc/hpcTH" + "gitlink.org.cn/jcce-pcm/pcm-participant-slurm/rpc/internal/svc" + "gitlink.org.cn/jcce-pcm/utils/enum" + "gitlink.org.cn/jcce-pcm/utils/tool" + "strconv" + "time" +) + +func InitCron(svc *svc.ServiceContext) { + svc.Cron.Start() + submitJobLogic := NewSubmitJobLogic(context.Background(), svc) + listLogic := NewListJobLogic(context.Background(), svc) + svc.Cron.AddFunc("*/5 * * * * ?", func() { + + // 查询core端分发下来的任务列表 + infoReq := pcmcoreclient.InfoListReq{ + Kind: "hpc", + ServiceName: "th", + } + infoList, err := svc.PcmCoreRpc.InfoList(context.Background(), &infoReq) + if err != nil { + logx.Error(err) + return + } + // 提交任务 + submitJob(infoList, submitJobLogic) + // 查询运行中的任务列表同步信息 + listReq := hpcTH.ListJobReq{} + listJob, err := listLogic.ListJob(&listReq) + if err != nil { + logx.Error(err) + return + } + for index, _ := range infoList.HpcInfoList { + for _, job := range listJob.Jobs { + if job.Name == infoList.HpcInfoList[index].Name { + copier.CopyWithOption(&infoList.HpcInfoList[index], job, copier.Option{Converters: tool.Converters}) + infoList.HpcInfoList[index].JobId = strconv.Itoa(int(job.JobId)) + infoList.HpcInfoList[index].StartTime = time.Unix(job.StartTime, 0).String() + infoList.HpcInfoList[index].RunningTime = int64(time.Now().Sub(time.Unix(job.StartTime, 0)).Seconds()) + infoList.HpcInfoList[index].Status = enum.State(job.JobState).String() + infoList.HpcInfoList[index].Version = "slurm 2.6.9" + } + } + } + // 同步信息到core端 + if len(infoList.HpcInfoList) != 0 { + syncInfoReq := pcmcoreclient.SyncInfoReq{ + Kind: "hpc", + ServiceName: "th", + HpcInfoList: infoList.HpcInfoList, + } + svc.PcmCoreRpc.SyncInfo(context.Background(), &syncInfoReq) + } + }) +} + +func submitJob(infoList *pcmcoreclient.InfoListResp, submitJobLogic *SubmitJobLogic) { + for index, _ := range infoList.HpcInfoList { + if infoList.HpcInfoList[index].Status == "Saved" { + submitReq := hpcTH.SubmitJobReq{ + Account: infoList.HpcInfoList[index].Account, + Name: infoList.HpcInfoList[index].Name, + WorkDir: "/root", + Script: infoList.HpcInfoList[index].CmdScript, + UserId: 0, + MinNodes: 1, + } + jobResult, _ := submitJobLogic.SubmitJob(&submitReq) + // 任务提交成功 + infoList.HpcInfoList[index].Status = "Pending" + infoList.HpcInfoList[index].JobId = strconv.Itoa(int(jobResult.SubmitResponseMsg[0].JobId)) + } + } +} diff --git a/internal/logic/listhistoryjoblogic.go b/internal/logic/listhistoryjoblogic.go new file mode 100644 index 0000000..ffc3578 --- /dev/null +++ b/internal/logic/listhistoryjoblogic.go @@ -0,0 +1,154 @@ +package logic + +/* +#cgo LDFLAGS: -lslurmdb + +#include +#include +#include +#include +#include +#include +#include +#include + +slurmdb_job_rec_t *get_all_slurmdb_job() { + + slurmdb_job_cond_t *job_cond = NULL; + void *conn = slurmdb_connection_get(); + + List joblist = slurmdb_jobs_get(conn, job_cond); + + uint16_t listsize = slurm_list_count(joblist); + //qosinfo.record_count = size; + slurmdb_job_rec_t *jobarray = malloc(listsize * sizeof(slurmdb_job_rec_t)); + + ListIterator itr = slurm_list_iterator_create(joblist); + + slurmdb_job_rec_t *rec = NULL; + int i = 0; + while ((rec = slurm_list_next(itr))) { + jobarray[i] = *rec; + i++; + } + slurmdb_connection_close(&conn); + slurm_list_destroy(joblist); + //int arraysize = sizeof(jobarray); + //printf("%d\n", arraysize); + return jobarray; +} + +slurmdb_job_rec_t *job_from_array(slurmdb_job_rec_t *job_rec_array, int i) { + return (slurmdb_job_rec_t *) &(job_rec_array[i]); +} + +slurmdb_job_rec_t *job_from_array_by_id(slurmdb_job_rec_t *job_rec_array, int job_id) { + int i; + int arraysize = sizeof(job_rec_array); + for (i=0; i +#include +#include +#include +#include +#include + +inline uint8_t uint8_ptr(uint8_t* pointer) { + if (NULL == pointer) { + return -1;} + return *pointer; +} +inline int8_t int8_ptr(int8_t* pointer) { + if (NULL == pointer) { + return -1;} + return *pointer; +} +inline uint16_t uint16_ptr(uint16_t* pointer) { + if (NULL == pointer) { + return -1;} + return *pointer; +} +inline int16_t int16_ptr(int16_t* pointer) { + if (NULL == pointer) { + return -1;} + return *pointer; +} +inline uint32_t uint32_ptr(uint32_t* pointer) { + if (NULL == pointer) { + return -1;} + return *pointer; +} +inline int32_t int32_ptr(int32_t* pointer) { + if (NULL == pointer) { + return -1;} + return *pointer; +} +inline uint64_t uint64_ptr(uint64_t* pointer) { + if (NULL == pointer) { + return -1;} + return *pointer; +} +inline int64_t int64_ptr(int16_t* pointer) { + if (NULL == pointer) { + return -1;} + return *pointer; +} + +struct job_info_msg *get_job_info(){ + + struct job_info_msg* job_buffer; + if(slurm_load_jobs ((time_t) NULL, + &job_buffer, SHOW_ALL)) { + return NULL; + } + return job_buffer; + } + +struct job_info* job_from_list(struct job_info_msg *list, int i){ + return &list->job_array[i]; +} + +struct job_info_msg *get_single_job_info(uint32_t id){ + struct job_info_msg* job_buffer; + if( slurm_load_job (&job_buffer, id, SHOW_DETAIL)) { + return NULL; + } + return job_buffer; + } +*/ +import "C" +import ( + "context" + "github.com/zeromicro/go-zero/core/logx" + "gitlink.org.cn/jcce-pcm/pcm-participant-slurm/rpc/hpcTH" + "gitlink.org.cn/jcce-pcm/pcm-participant-slurm/rpc/internal/svc" +) + +func JobCtoGo(cStruct *C.struct_job_info) hpcTH.Job { + var goStruct hpcTH.Job + + goStruct.Account = C.GoString(cStruct.account) + goStruct.AllocNode = C.GoString(cStruct.alloc_node) + goStruct.AllocSid = uint32(cStruct.alloc_sid) + goStruct.ArrayJobId = uint32(cStruct.array_job_id) + goStruct.ArrayTaskId = uint32(cStruct.array_task_id) + goStruct.AssocId = uint32(cStruct.assoc_id) + goStruct.BatchFlag = uint32(cStruct.batch_flag) + goStruct.BatchHost = C.GoString(cStruct.batch_host) + goStruct.BoardsPerNode = uint32(cStruct.boards_per_node) + goStruct.BatchScript = C.GoString(cStruct.batch_script) + goStruct.Command = C.GoString(cStruct.command) + goStruct.Comment = C.GoString(cStruct.comment) + goStruct.Contiguous = uint32(cStruct.contiguous) + goStruct.CoresPerSocket = uint32(cStruct.cores_per_socket) + goStruct.CpusPerTask = uint32(cStruct.cpus_per_task) + goStruct.Dependency = C.GoString(cStruct.dependency) + goStruct.DerivedEc = uint32(cStruct.derived_ec) + goStruct.EligibleTime = int64(cStruct.eligible_time) + goStruct.EndTime = int64(cStruct.end_time) + goStruct.ExcNodes = C.GoString(cStruct.exc_nodes) + goStruct.ExcNodeInx = int32(C.int32_ptr(cStruct.exc_node_inx)) + goStruct.ExitCode = uint32(cStruct.exit_code) + goStruct.Features = C.GoString(cStruct.features) + goStruct.GroupId = uint32(cStruct.group_id) + goStruct.Gres = C.GoString(cStruct.gres) + goStruct.JobId = uint32(cStruct.job_id) + goStruct.JobState = uint32(cStruct.job_state) + goStruct.Licenses = C.GoString(cStruct.licenses) + goStruct.MaxCpus = uint32(cStruct.max_cpus) + goStruct.MaxNodes = uint32(cStruct.max_nodes) + goStruct.Name = C.GoString(cStruct.name) + goStruct.Network = C.GoString(cStruct.network) + goStruct.Nodes = C.GoString(cStruct.nodes) + goStruct.Nice = uint32(cStruct.nice) + goStruct.NodeInx = int32(C.int32_ptr(cStruct.node_inx)) + goStruct.NtasksPerCore = uint32(cStruct.ntasks_per_core) + goStruct.NtasksPerNode = uint32(cStruct.ntasks_per_node) + goStruct.NtasksPerSocket = uint32(cStruct.ntasks_per_socket) + goStruct.NtasksPerBoard = uint32(cStruct.ntasks_per_board) + goStruct.NumCpus = uint32(cStruct.num_cpus) + goStruct.NumNodes = uint32(cStruct.num_nodes) + goStruct.Partition = C.GoString(cStruct.partition) + goStruct.PnMinMemory = uint32(cStruct.pn_min_memory) + goStruct.PnMinCpus = uint32(cStruct.pn_min_cpus) + goStruct.PnMinTmpDisk = uint32(cStruct.pn_min_tmp_disk) + goStruct.PreemptTime = int64(cStruct.preempt_time) + goStruct.PreSusTime = int64(cStruct.pre_sus_time) + goStruct.Priority = uint32(cStruct.priority) + goStruct.Profile = uint32(cStruct.profile) + goStruct.Qos = C.GoString(cStruct.qos) + goStruct.ReqNodes = C.GoString(cStruct.req_nodes) + goStruct.ReqNodeInx = int32(C.int32_ptr(cStruct.req_node_inx)) + goStruct.ReqSwitch = uint32(cStruct.req_switch) + goStruct.Requeue = uint32(cStruct.requeue) + goStruct.ResizeTime = int64(cStruct.resize_time) + goStruct.RestartCnt = uint32(cStruct.restart_cnt) + goStruct.ResvName = C.GoString(cStruct.resv_name) + goStruct.Shared = uint32(cStruct.shared) + goStruct.ShowFlags = uint32(cStruct.show_flags) + goStruct.SocketsPerBoard = uint32(cStruct.sockets_per_board) + goStruct.SocketsPerNode = uint32(cStruct.sockets_per_node) + goStruct.StartTime = int64(cStruct.start_time) + goStruct.StateDesc = C.GoString(cStruct.state_desc) + goStruct.StateReason = uint32(cStruct.state_reason) + goStruct.SubmitTime = int64(cStruct.submit_time) + goStruct.SuspendTime = int64(cStruct.suspend_time) + goStruct.TimeLimit = uint32(cStruct.time_limit) + goStruct.TimeMin = uint32(cStruct.time_min) + goStruct.ThreadsPerCore = uint32(cStruct.threads_per_core) + goStruct.UserId = uint32(cStruct.user_id) + goStruct.Wait4Switch = uint32(cStruct.wait4switch) + goStruct.Wckey = C.GoString(cStruct.wckey) + goStruct.WorkDir = C.GoString(cStruct.work_dir) + + return goStruct +} + +type ListJobLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger +} + +func NewListJobLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ListJobLogic { + return &ListJobLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +// ListJob list all jobs +func (l *ListJobLogic) ListJob(in *hpcTH.ListJobReq) (*hpcTH.ListJobResp, error) { + + var jobResp hpcTH.ListJobResp + cJobBuffer := C.get_job_info() + if cJobBuffer == nil { + jobResp.RecordCount = uint32(0) + jobResp.Jobs = nil + return &jobResp, nil + } + + jobResp.RecordCount = uint32(cJobBuffer.record_count) + for i := uint32(0); i < jobResp.RecordCount; i++ { + job := C.job_from_list(cJobBuffer, C.int(i)) + goJob := JobCtoGo(job) + jobResp.Jobs = append(jobResp.Jobs, &goJob) + } + jobResp.Code = 200 + jobResp.Msg = "success" + C.slurm_free_job_info_msg(cJobBuffer) + + return &jobResp, nil +} diff --git a/internal/logic/submitjoblogic.go b/internal/logic/submitjoblogic.go new file mode 100644 index 0000000..1e38804 --- /dev/null +++ b/internal/logic/submitjoblogic.go @@ -0,0 +1,402 @@ +package logic + +/* +#include +#include +#include +#include +#include + +struct submit_response_msg *submit_job(struct job_descriptor *desc) +{ + + struct submit_response_msg *resp_msg; + if (slurm_submit_batch_job(desc, + &resp_msg)) { + return NULL; + } + return resp_msg; + +} + +void free_submit_response_msg(struct submit_response_msg *msg) +{ + slurm_free_submit_response_response_msg(msg); +} + +int update_job (struct job_descriptor *msg) { + + return slurm_update_job (msg); +} +*/ +import "C" + +import ( + "context" + "fmt" + "gitlink.org.cn/jcce-pcm/pcm-participant-slurm/rpc/hpcTH" + "gitlink.org.cn/jcce-pcm/pcm-participant-slurm/rpc/internal/svc" + "unsafe" + + "github.com/zeromicro/go-zero/core/logx" +) + +type SubmitJobLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger +} + +func NewSubmitJobLogic(ctx context.Context, svcCtx *svc.ServiceContext) *SubmitJobLogic { + return &SubmitJobLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +// Submit job +func (l *SubmitJobLogic) SubmitJob(in *hpcTH.SubmitJobReq) (*hpcTH.SubmitJobResp, error) { + var cStruct C.struct_job_descriptor + + C.slurm_init_job_desc_msg(&cStruct) + if in.Account != "" { + accountS := C.CString(in.Account) + defer C.free(unsafe.Pointer(accountS)) + cStruct.account = accountS + } + if in.AcctgFreq != "" { + acctgFreqS := C.CString(in.AcctgFreq) + defer C.free(unsafe.Pointer(acctgFreqS)) + cStruct.acctg_freq = acctgFreqS + } + if in.AllocNode != "" { + allocNodeS := C.CString(in.AllocNode) + defer C.free(unsafe.Pointer(allocNodeS)) + cStruct.alloc_node = allocNodeS + } + if in.AllocRespPort != 0 { + cStruct.alloc_resp_port = C.uint16_t(in.AllocRespPort) + } + if in.AllocSid != 0 { + cStruct.alloc_sid = C.uint32_t(in.AllocSid) + } + if len(in.Argv) > 0 { + cStruct.argc = C.uint32_t(len(in.Argv)) + cArray := C.malloc(C.size_t(C.size_t(len(in.Argv)) * C.size_t(unsafe.Sizeof(uintptr(0))))) + a := (*[1<<30 - 1]*C.char)(cArray) + for i := 0; i < len(in.Argv); i++ { + a[i] = C.CString(in.Argv[i].String()) + } + cStruct.argv = (**C.char)(cArray) + fmt.Printf("test\n") + } + + if in.ArrayInx != "" { + arrayInxS := C.CString(in.ArrayInx) + defer C.free(unsafe.Pointer(arrayInxS)) + cStruct.array_inx = arrayInxS + } + if in.BeginTime != 0 { + cStruct.begin_time = C.int64_t(in.BeginTime) + } + if in.CkptInterval != 0 { + cStruct.ckpt_interval = C.uint16_t(in.CkptInterval) + } + if in.CkptDir != "" { + ckptDirS := C.CString(in.CkptDir) + defer C.free(unsafe.Pointer(ckptDirS)) + cStruct.ckpt_dir = ckptDirS + } + if in.Comment != "" { + commentS := C.CString(in.Comment) + defer C.free(unsafe.Pointer(commentS)) + cStruct.comment = commentS + } + if in.Contiguous != 0 { + cStruct.contiguous = C.uint16_t(in.Contiguous) + } + if in.CpuBind != "" { + cpuBindS := C.CString(in.CpuBind) + defer C.free(unsafe.Pointer(cpuBindS)) + cStruct.cpu_bind = cpuBindS + } + if in.CpuBindType != 0 { + cStruct.cpu_bind_type = C.uint16_t(in.CpuBindType) + } + if in.Dependency != "" { + dependencyS := C.CString(in.Dependency) + defer C.free(unsafe.Pointer(dependencyS)) + cStruct.dependency = dependencyS + } + if in.EndTime != 0 { + cStruct.end_time = C.int64_t(in.EndTime) + } + if len(in.Environment) > 0 { + cStruct.env_size = C.uint32_t(len(in.Environment)) + cArray := C.malloc(C.size_t(C.size_t(len(in.Environment)) * C.size_t(unsafe.Sizeof(uintptr(0))))) + a := (*[1<<30 - 1]*C.char)(cArray) + for i := 0; i < len(in.Environment); i++ { + a[i] = C.CString(in.Environment[i].String()) + defer C.free(unsafe.Pointer(a[i])) + } + cStruct.environment = (**C.char)(cArray) + } else { + cStruct.env_size = 1 + cArray := C.malloc(C.size_t(C.size_t(1) * C.size_t(unsafe.Sizeof(uintptr(0))))) + a := (*[1<<30 - 1]*C.char)(cArray) + a[0] = C.CString("SLURM_GO_JOB=TRUE") + defer C.free(unsafe.Pointer(a[0])) + cStruct.environment = (**C.char)(cArray) + + } + if in.ExcNodes != "" { + excNodesS := C.CString(in.ExcNodes) + defer C.free(unsafe.Pointer(excNodesS)) + cStruct.exc_nodes = excNodesS + } + if in.Features != "" { + featuresS := C.CString(in.Features) + defer C.free(unsafe.Pointer(featuresS)) + cStruct.features = featuresS + } + if in.GroupId != 0 { + cStruct.group_id = C.uint32_t(in.GroupId) + } + if in.Immediate != 0 { + cStruct.immediate = C.uint16_t(in.Immediate) + } + if in.JobId != 0 { + cStruct.job_id = C.uint32_t(in.JobId) + } + if in.KillOnNodeFail != 0 { + cStruct.kill_on_node_fail = C.uint16_t(in.KillOnNodeFail) + } + if in.Licenses != "" { + licensesS := C.CString(in.Licenses) + defer C.free(unsafe.Pointer(licensesS)) + cStruct.licenses = licensesS + } + if in.MailType != 0 { + cStruct.mail_type = C.uint16_t(in.MailType) + } + if in.MailUser != "" { + mailUserS := C.CString(in.MailUser) + defer C.free(unsafe.Pointer(mailUserS)) + cStruct.mail_user = mailUserS + } + if in.MemBind != "" { + memBindS := C.CString(in.MemBind) + defer C.free(unsafe.Pointer(memBindS)) + cStruct.mem_bind = memBindS + } + if in.MemBindType != 0 { + cStruct.mem_bind_type = C.uint16_t(in.MemBindType) + } + if in.Name != "" { + nameS := C.CString(in.Name) + defer C.free(unsafe.Pointer(nameS)) + cStruct.name = nameS + } + if in.Network != "" { + networkS := C.CString(in.Network) + defer C.free(unsafe.Pointer(networkS)) + cStruct.network = networkS + } + if in.Nice != 0 { + cStruct.nice = C.uint16_t(in.Nice) + } + if in.NumTasks != 0 { + cStruct.num_tasks = C.uint32_t(in.NumTasks) + } + if in.OpenMode != 0 { + cStruct.open_mode = C.uint8_t(in.OpenMode) + } + if in.OtherPort != 0 { + cStruct.other_port = C.uint16_t(in.OtherPort) + } + if in.Overcommit != 0 { + cStruct.overcommit = C.uint8_t(in.Overcommit) + } + if in.Partition != "" { + partitionS := C.CString(in.Partition) + defer C.free(unsafe.Pointer(partitionS)) + cStruct.partition = partitionS + } + if in.PlaneSize != 0 { + cStruct.plane_size = C.uint16_t(in.PlaneSize) + } + if in.Priority != 0 { + cStruct.priority = C.uint32_t(in.Priority) + } + if in.Profile != 0 { + cStruct.profile = C.uint32_t(in.Profile) + } + if in.Qos != "" { + qosS := C.CString(in.Qos) + defer C.free(unsafe.Pointer(qosS)) + cStruct.qos = qosS + } + if in.Reboot != 0 { + cStruct.reboot = C.uint16_t(in.Reboot) + } + if in.RespHost != "" { + respHostS := C.CString(in.RespHost) + defer C.free(unsafe.Pointer(respHostS)) + cStruct.resp_host = respHostS + } + if in.ReqNodes != "" { + reqNodesS := C.CString(in.ReqNodes) + defer C.free(unsafe.Pointer(reqNodesS)) + cStruct.req_nodes = reqNodesS + } + if in.Requeue != 0 { + cStruct.requeue = C.uint16_t(in.Requeue) + } + if in.Reservation != "" { + reservationS := C.CString(in.Reservation) + defer C.free(unsafe.Pointer(reservationS)) + cStruct.reservation = reservationS + } + if in.Script != "" { + scriptS := C.CString(in.Script) + defer C.free(unsafe.Pointer(scriptS)) + cStruct.script = scriptS + } + if in.Shared != 0 { + cStruct.shared = C.uint16_t(in.Shared) + } + if in.SpankJobEnvSize != 0 { + cStruct.spank_job_env_size = C.uint32_t(in.SpankJobEnvSize) + } + if in.TaskDist != 0 { + cStruct.task_dist = C.uint16_t(in.TaskDist) + } + if in.TimeLimit != 0 { + cStruct.time_limit = C.uint32_t(in.TimeLimit) + } + if in.TimeMin != 0 { + cStruct.time_min = C.uint32_t(in.TimeMin) + } + //if go_struct.User_id != 0 { + // c_struct.user_id = C.uint32_t(go_struct.User_id) + //} + cStruct.user_id = C.uint32_t(in.UserId) + + if in.WaitAllNodes != 0 { + cStruct.wait_all_nodes = C.uint16_t(in.WaitAllNodes) + } + if in.WarnSignal != 0 { + cStruct.warn_signal = C.uint16_t(in.WarnSignal) + } + if in.WarnTime != 0 { + cStruct.warn_time = C.uint16_t(in.WarnTime) + } + if in.WorkDir != "" { + workDirS := C.CString(in.WorkDir) + defer C.free(unsafe.Pointer(workDirS)) + cStruct.work_dir = workDirS + } + if in.CpusPerTask != 0 { + cStruct.cpus_per_task = C.uint16_t(in.CpusPerTask) + } + if in.MinCpus != 0 { + cStruct.min_cpus = C.uint32_t(in.MinCpus) + } + if in.MaxCpus != 0 { + cStruct.max_cpus = C.uint32_t(in.MaxCpus) + } + if in.MinNodes != 0 { + cStruct.min_nodes = C.uint32_t(in.MinNodes) + } + if in.MaxNodes != 0 { + cStruct.max_nodes = C.uint32_t(in.MaxNodes) + } + if in.BoardsPerNode != 0 { + cStruct.boards_per_node = C.uint16_t(in.BoardsPerNode) + } + if in.SocketsPerBoard != 0 { + cStruct.sockets_per_board = C.uint16_t(in.SocketsPerBoard) + } + if in.SocketsPerNode != 0 { + cStruct.sockets_per_node = C.uint16_t(in.SocketsPerNode) + } + if in.CoresPerSocket != 0 { + cStruct.cores_per_socket = C.uint16_t(in.CoresPerSocket) + } + if in.ThreadsPerCore != 0 { + cStruct.threads_per_core = C.uint16_t(in.ThreadsPerCore) + } + if in.NtasksPerNode != 0 { + cStruct.ntasks_per_node = C.uint16_t(in.NtasksPerNode) + } + if in.NtasksPerSocket != 0 { + cStruct.ntasks_per_socket = C.uint16_t(in.NtasksPerSocket) + } + if in.NtasksPerCore != 0 { + cStruct.ntasks_per_core = C.uint16_t(in.NtasksPerCore) + } + if in.NtasksPerBoard != 0 { + cStruct.ntasks_per_board = C.uint16_t(in.NtasksPerBoard) + } + if in.PnMinCpus != 0 { + cStruct.pn_min_cpus = C.uint16_t(in.PnMinCpus) + } + if in.PnMinMemory != 0 { + cStruct.pn_min_memory = C.uint32_t(in.PnMinMemory) + } + if in.PnMinTmpDisk != 0 { + cStruct.pn_min_tmp_disk = C.uint32_t(in.PnMinTmpDisk) + } + if in.ReqSwitch != 0 { + cStruct.req_switch = C.uint32_t(in.ReqSwitch) + } + if in.StdErr != "" { + stdErrS := C.CString(in.StdErr) + defer C.free(unsafe.Pointer(stdErrS)) + cStruct.std_err = stdErrS + } + if in.StdIn != "" { + stdInS := C.CString(in.StdIn) + defer C.free(unsafe.Pointer(stdInS)) + cStruct.std_in = stdInS + } + if in.StdOut != "" { + stdOutS := C.CString(in.StdOut) + defer C.free(unsafe.Pointer(stdOutS)) + cStruct.std_out = stdOutS + } + + if in.Wait4Switch != 0 { + cStruct.wait4switch = C.uint32_t(in.Wait4Switch) + } + if in.Wckey != "" { + wckeyS := C.CString(in.Wckey) + defer C.free(unsafe.Pointer(wckeyS)) + cStruct.wckey = wckeyS + } + + cMsg := C.submit_job(&cStruct) + + defer C.free_submit_response_msg(cMsg) + if cMsg == nil { + goMsg := hpcTH.SubmitJobResp{} + goMsg.SubmitResponseMsg[0].JobId = 1<<31 - 1 + goMsg.SubmitResponseMsg[0].ErrorCode = uint32(C.slurm_get_errno()) + return &goMsg, nil + } + goMsg := submitResponseMsgConvertCToGo(cMsg) + + return &goMsg, nil +} + +func submitResponseMsgConvertCToGo(cStruct *C.struct_submit_response_msg) hpcTH.SubmitJobResp { + var goStruct hpcTH.SubmitJobResp + + submitRespMsg := hpcTH.SubmitResponseMsg{} + submitRespMsg.JobId = uint32(cStruct.job_id) + submitRespMsg.StepId = uint32(cStruct.step_id) + submitRespMsg.ErrorCode = uint32(cStruct.error_code) + goStruct.SubmitResponseMsg = append(goStruct.SubmitResponseMsg, &submitRespMsg) + return goStruct +} diff --git a/internal/server/hpcthserver.go b/internal/server/hpcthserver.go new file mode 100644 index 0000000..cc18689 --- /dev/null +++ b/internal/server/hpcthserver.go @@ -0,0 +1,41 @@ +// Code generated by goctl. DO NOT EDIT. +// Source: hpcTH.proto + +package server + +import ( + "context" + + "gitlink.org.cn/jcce-pcm/pcm-participant-slurm/rpc/hpcTH" + "gitlink.org.cn/jcce-pcm/pcm-participant-slurm/rpc/internal/logic" + "gitlink.org.cn/jcce-pcm/pcm-participant-slurm/rpc/internal/svc" +) + +type HpcTHServer struct { + svcCtx *svc.ServiceContext + hpcTH.UnimplementedHpcTHServer +} + +func NewHpcTHServer(svcCtx *svc.ServiceContext) *HpcTHServer { + return &HpcTHServer{ + svcCtx: svcCtx, + } +} + +// ListJob list all jobs +func (s *HpcTHServer) ListJob(ctx context.Context, in *hpcTH.ListJobReq) (*hpcTH.ListJobResp, error) { + l := logic.NewListJobLogic(ctx, s.svcCtx) + return l.ListJob(in) +} + +// ListHistoryJob list all history jobs +func (s *HpcTHServer) ListHistoryJob(ctx context.Context, in *hpcTH.ListHistoryJobReq) (*hpcTH.ListHistoryJobResp, error) { + l := logic.NewListHistoryJobLogic(ctx, s.svcCtx) + return l.ListHistoryJob(in) +} + +// Submit job +func (s *HpcTHServer) SubmitJob(ctx context.Context, in *hpcTH.SubmitJobReq) (*hpcTH.SubmitJobResp, error) { + l := logic.NewSubmitJobLogic(ctx, s.svcCtx) + return l.SubmitJob(in) +} diff --git a/internal/svc/servicecontext.go b/internal/svc/servicecontext.go new file mode 100644 index 0000000..d250c4d --- /dev/null +++ b/internal/svc/servicecontext.go @@ -0,0 +1,21 @@ +package svc + +import ( + "github.com/zeromicro/go-zero/zrpc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/rpc/pcmcoreclient" + "gitlink.org.cn/jcce-pcm/pcm-participant-slurm/rpc/internal/config" +) + +type ServiceContext struct { + Config config.Config + Cron *cron.Cron + PcmCoreRpc pcmcoreclient.PcmCore +} + +func NewServiceContext(c config.Config) *ServiceContext { + return &ServiceContext{ + Cron: cron.New(cron.WithSeconds()), + Config: c, + PcmCoreRpc: pcmcoreclient.NewPcmCore(zrpc.MustNewClient(c.PcmCoreRpcConf)), + } +} diff --git a/pb/hpcTH.proto b/pb/hpcTH.proto new file mode 100644 index 0000000..674c688 --- /dev/null +++ b/pb/hpcTH.proto @@ -0,0 +1,287 @@ +syntax = "proto3"; + +package hpcTH; +option go_package = "/hpcTH"; + +/******************Job Start*************************/ +message job{ + string account = 1; // @gotags: copier:"Account" + string alloc_node = 2; // @gotags: copier:"AllocNode" + uint32 alloc_sid = 3; // @gotags: copier:"AllocSid" + uint32 array_job_id = 4; // @gotags: copier:"ArrayJobId" + uint32 array_task_id = 5; // @gotags: copier:"ArrayTaskId" + uint32 assoc_id = 6; // @gotags: copier:"AssocId" + uint32 batch_flag = 7; // @gotags: copier:"BatchFlag" + string batch_host = 8; // @gotags: copier:"BatchHost" + string batch_script = 9; // @gotags: copier:"BatchScript" + string command = 10; // @gotags: copier:"Command" + string comment = 11; // @gotags: copier:"Comment" + uint32 contiguous = 12; // @gotags: copier:"Contiguous" + uint32 cpus_per_task = 13; // @gotags: copier:"CpusPerTask" + string dependency = 14; // @gotags: copier:"Dependency" + uint32 derived_ec = 15; // @gotags: copier:"DerivedEc" + int64 eligible_time = 16; // @gotags: copier:"EligibleTime" + int64 end_time = 17; // @gotags: copier:"EndTime" + string exc_nodes = 18; // @gotags: copier:"ExcNodes" + int32 exc_node_inx = 19; // @gotags: copier:"ExcNodeInx" + uint32 exit_code = 20; // @gotags: copier:"ExitCode" + string features = 21; // @gotags: copier:"Features" + string gres = 22; // @gotags: copier:"Gres" + uint32 group_id = 23; // @gotags: copier:"GroupId" + uint32 job_id = 24; // @gotags: copier:"JobId" + uint32 job_state = 25; // @gotags: copier:"JobState" + string licenses = 26; // @gotags: copier:"Licenses" + uint32 max_cpus = 27; // @gotags: copier:"MaxCpus" + uint32 max_nodes = 28; // @gotags: copier:"MaxNodes" + uint32 boards_per_node = 29; // @gotags: copier:"BoardsPerNode" + uint32 sockets_per_board = 30; // @gotags: copier:"SocketsPerBoard" + uint32 sockets_per_node = 31; // @gotags: copier:"SocketsPerNode" + uint32 cores_per_socket = 32; // @gotags: copier:"CoresPerSocket" + uint32 threads_per_core = 33; // @gotags: copier:"ThreadsPerCore" + string name = 34; // @gotags: copier:"Name" + string network = 35; // @gotags: copier:"Network" + string nodes = 36; // @gotags: copier:"Nodes" + uint32 nice = 37; // @gotags: copier:"Nice" + int32 node_inx = 38; // @gotags: copier:"NodeInx" + uint32 ntasks_per_core = 39; // @gotags: copier:"NtasksPerCore" + uint32 ntasks_per_node = 40; // @gotags: copier:"NtasksPerNode" + uint32 ntasks_per_socket = 41; // @gotags: copier:"NtasksPerSocket" + uint32 ntasks_per_board = 42; // @gotags: copier:"NtasksPerBoard" + uint32 num_nodes = 43; // @gotags: copier:"NumNodes" + uint32 num_cpus = 44; // @gotags: copier:"NumCpus" + string partition = 45; // @gotags: copier:"Partition" + uint32 pn_min_memory = 46; // @gotags: copier:"PnMinMemory" + uint32 pn_min_cpus = 47; // @gotags: copier:"PnMinCpus" + uint32 pn_min_tmp_disk = 48; // @gotags: copier:"PnMinTmpDisk" + int64 pre_sus_time = 49; // @gotags: copier:"PreSusTime" + uint32 priority = 50; // @gotags: copier:"Priority" + uint32 profile = 51; // @gotags: copier:"Profile" + string qos = 52; // @gotags: copier:"Qos" + string req_nodes = 53; // @gotags: copier:"ReqNodes" + int32 req_node_inx = 54; // @gotags: copier:"ReqNodeInx" + uint32 req_switch = 55; // @gotags: copier:"ReqSwitch" + uint32 requeue = 56; // @gotags: copier:"Requeue" + int64 resize_time = 57; // @gotags: copier:"ResizeTime" + uint32 restart_cnt = 58; // @gotags: copier:"RestartCnt" + string resv_name = 59; // @gotags: copier:"ResvName" + uint32 shared = 60; // @gotags: copier:"Shared" + uint32 show_flags = 61; // @gotags: copier:"ShowFlags" + int64 start_time = 62; // @gotags: copier:"StartTime" + string state_desc = 63; // @gotags: copier:"StateDesc" + uint32 state_reason = 64; // @gotags: copier:"StateReason" + int64 submit_time = 65; // @gotags: copier:"SubmitTime" + int64 suspend_time = 66; // @gotags: copier:"SuspendTime" + uint32 time_limit = 67; // @gotags: copier:"TimeLimit" + uint32 time_min = 68; // @gotags: copier:"TimeMin" + uint32 user_id = 69; // @gotags: copier:"UserId" + int64 preempt_time = 70; // @gotags: copier:"PreemptTime" + uint32 wait4switch = 71; // @gotags: copier:"Wait4Switch" + string wckey = 72; // @gotags: copier:"Wckey" + string work_dir = 73; // @gotags: copier:"WorkDir" +} + +message ListJobReq{ +} + +message ListJobResp{ + uint32 code = 1; // @gotags: copier:"Code" + string msg = 2; // @gotags: copier:"Msg" + uint32 record_count = 3; // @gotags: copier:"RecordCount" + repeated job jobs = 4; // @gotags: copier:"Jobs" +} +/******************Job End*************************/ + + +/******************History Job Start*************************/ +message historyJob{ + uint32 alloc_cpu = 1; // @gotags: copier:"AllocCPU" + uint32 alloc_nodes = 2; // @gotags: copier:"AllocNodes" + string account = 3; // @gotags: copier:"Account" + uint32 associd = 4; // @gotags: copier:"AssocId" + string blockid = 5; // @gotags: copier:"BlockId" + string cluster = 6; // @gotags: copier:"Cluster" + uint32 derived_ec = 7; // @gotags: copier:"DerivedEc" + string derived_es = 8; // @gotags: copier:"DerivedEs" + uint32 elapsed = 9; // @gotags: copier:"Elapsed" + int64 eligible = 10;// @gotags: copier:"Eligible" + int64 end = 11;// @gotags: copier:"End" + uint32 exitcode = 12;// @gotags: copier:"ExitCode" + uint32 gid = 13;// @gotags: copier:"Gid" + uint32 jobid = 14;// @gotags: copier:"JobId" + string jobname = 15;// @gotags: copier:"JobName" + uint32 lft = 16;// @gotags: copier:"Lft" + string partition = 17;// @gotags: copier:"Partition" + string nodes = 18;// @gotags: copier:"Nodes" + uint32 priority = 19;// @gotags: copier:"Priority" + uint32 qosid = 20;// @gotags: copier:"Qosid" + uint32 req_cpus = 21;// @gotags: copier:"ReqCpus" + uint32 req_mem = 22;// @gotags: copier:"ReqMem" + uint32 requid = 23;// @gotags: copier:"Requid" + uint32 resvid = 24;// @gotags: copier:"Resvid" + uint32 show_full = 25;// @gotags: copier:"ShowFull" + int64 start = 26;// @gotags: copier:"Start" + uint32 state = 27;// @gotags: copier:"State" + int64 submit = 28;// @gotags: copier:"Submit" + uint32 suspended = 29;// @gotags: copier:"Suspended" + uint32 sys_cpu_sec = 30;// @gotags: copier:"SysCpuSec" + uint32 sys_cpu_usec = 31;// @gotags: copier:"SysCpuUsec" + uint32 timelimit = 32;// @gotags: copier:"Timelimit" + uint32 tot_cpu_sec = 33;// @gotags: copier:"TotCpuSec" + uint32 tot_cpu_usec = 34;// @gotags: copier:"TotCpuUsec" + uint32 track_steps = 35;// @gotags: copier:"TrackSteps" + uint32 uid = 36;// @gotags: copier:"Uid" + string user = 37;// @gotags: copier:"User" + uint32 user_cpu_sec = 38;// @gotags: copier:"UserCpuSec" + uint32 user_cpu_usec = 39;// @gotags: copier:"UserCpuUsec" + string wckey = 40;// @gotags: copier:"Wckey" + uint32 wckeyid = 41;// @gotags: copier:"Wckeyid" +} + +message ListHistoryJobReq{ +} + +message ListHistoryJobResp{ + + uint32 code = 1; // @gotags: copier:"Code" + string msg = 2; // @gotags: copier:"Msg" + uint32 record_count = 3; // @gotags: copier:"RecordCount" + repeated historyJob history_jobs = 4; // @gotags: copier:"HistoryJobs" +} +/******************History Job End*************************/ + + +/******************Job(Submit) Start*************************/ +message SubmitJobReq{ + string account =1; // @gotags: copier:"account" /* charge to specified account */ + string acctg_freq =2; // @gotags: copier:"acctg_freq" /* accounting polling intervals (seconds) */ + string alloc_node=3; // @gotags: copier:"alloc_node" /* node making resource allocation request * NOTE: Normally set by slurm_submit* or * slurm_allocate* function */ + uint32 alloc_resp_port=4; // @gotags: copier:"alloc_resp_port" /* port to send allocation confirmation to */ + uint32 alloc_sid =5; // @gotags: copier:"alloc_sid" /* local sid making resource allocation request * NOTE: Normally set by slurm_submit* or * slurm_allocate* function * NOTE: Also used for update flags, see * ALLOC_SID_* flags */ + uint32 argc =6; // @gotags: copier:"argc" /* number of arguments to the script */ + repeated Argv argv = 7; // @gotags: copier:"Argv" /* arguments to the script */ + string array_inx =8; // @gotags: copier:"array_inx" /* job array index values */ //void *array_bitmap; /* NOTE: Set by slurmctld */ + int64 begin_time = 9; // @gotags: copier:"begin_time" /* delay initiation until this time */ + uint32 ckpt_interval=10; // @gotags: copier:"ckpt_interval" /* periodically checkpoint this job */ + string ckpt_dir =11; // @gotags: copier:"ckpt_dir" /* directory to store checkpoint images */ + string comment =12; // @gotags: copier:"comment" /* arbitrary comment (used by Moab scheduler) */ + uint32 contiguous=13; // @gotags: copier:"contiguous" /* 1 if job requires contiguous nodes,* 0 otherwise,default=0 */ + string cpu_bind=14; // @gotags: copier:"cpu_bind" /* binding map for map/mask_cpu */ + uint32 cpu_bind_type=15; // @gotags: copier:"cpu_bind_type" /* see cpu_bind_type_t */ + string dependency =16; // @gotags: copier:"dependency" /* synchronize job execution with other jobs */ + int64 end_time=17; // @gotags: copier:"end_time" /* time by which job must complete, used for * job update only now, possible deadline * scheduling in the future */ + repeated Environment environment=18; // @gotags: copier:"Environment" /* environment variables to set for job, * name=value pairs, one per line */ + uint32 env_size =19; // @gotags: copier:"env_size" /* element count in environment */ + string exc_nodes =20; // @gotags: copier:"exc_nodes" /* comma separated list of nodes excluded * from job's allocation, default NONE */ + string features =21; // @gotags: copier:"features" /* comma separated list of required features, * default NONE */ + string gres =22; // @gotags: copier:"gres" /* comma separated list of required generic * resources, default NONE */ + uint32 group_id =23; // @gotags: copier:"group_id" /* group to assume, if run as root. */ + uint32 immediate=24; // @gotags: copier:"immediate" /* 1 if allocate to run or fail immediately, * 0 if to be queued awaiting resources */ + uint32 job_id =25; // @gotags: copier:"job_id" /* job ID, default set by SLURM */ + uint32 kill_on_node_fail=26; // @gotags: copier:"kill_on_node_fail" /* 1 if node failure to kill job, * 0 otherwise,default=1 */ + string licenses=27; // @gotags: copier:"licenses" /* licenses required by the job */ + uint32 mail_type=28; // @gotags: copier:"mail_type" /* see MAIL_JOB_ definitions above */ + string mail_user =29; // @gotags: copier:"mail_user" /* user to receive notification */ + string mem_bind =30; // @gotags: copier:"mem_bind" /* binding map for map/mask_cpu */ + uint32 mem_bind_type=31; // @gotags: copier:"mem_bind_type" /* see mem_bind_type_t */ + string name =32; // @gotags: copier:"name" /* name of the job, default "" */ + string network=33; // @gotags: copier:"network" /* network use spec */ + uint32 nice =34; // @gotags: copier:"nice" /* requested priority change, * NICE_OFFSET == no change */ + uint32 num_tasks=35; // @gotags: copier:"num_tasks" /* number of tasks to be started, * for batch only */ + uint32 open_mode=36; // @gotags: copier:"open_mode" /* out/err open mode truncate or append, * see OPEN_MODE_* */ + uint32 other_port=37; // @gotags: copier:"other_port" /* port to send various notification msg to */ + uint32 overcommit =38; // @gotags: copier:"overcommit" /* over subscribe resources, for batch only */ + string partition=39; // @gotags: copier:"partition" /* name of requested partition, * default in SLURM config */ + uint32 plane_size =40; // @gotags: copier:"plane_size" /* plane size when task_dist = SLURM_DIST_PLANE */ + uint32 priority =41; // @gotags: copier:"priority" /* relative priority of the job, * explicitly set only for user root, * 0 == held (don't initiate) */ + uint32 profile =42; // @gotags: copier:"profile" /* Level of acct_gather_profile {all | none} */ + string qos =43; // @gotags: copier:"qos" /* Quality of Service */ + string resp_host=44; // @gotags: copier:"resp_host" /* NOTE: Set by slurmctld */ + string req_nodes=45; // @gotags: copier:"req_nodes" /* comma separated list of required nodes * default NONE */ + uint32 requeue=46; // @gotags: copier:"requeue" /* enable or disable job requeue option */ + string reservation=47; // @gotags: copier:"reservation" /* name of reservation to use */ + string script=48; // @gotags: copier:"script" /* the actual job script, default NONE */ + uint32 shared =49; // @gotags: copier:"shared" /* 1 if job can share nodes with other jobs, * 0 if job needs exclusive access to the node, * or NO_VAL to accept the system default. * SHARED_FORCE to eliminate user control. */ //char **spank_job_env; environment variables for job prolog/epilog // * scripts as set by SPANK plugins + uint32 spank_job_env_size=50; // @gotags: copier:"spank_job_env_size" /* element count in spank_env */ + uint32 task_dist =51; // @gotags: copier:"task_dist" /* see enum task_dist_state */ + uint32 time_limit =52; // @gotags: copier:"time_limit" /* maximum run time in minutes, default is * partition limit */ + uint32 time_min =53; // @gotags: copier:"time_min" /* minimum run time in minutes, default is * time_limit */ + uint32 user_id=54; // @gotags: copier:"user_id" /* set only if different from current UID, * can only be explicitly set by user root */ + uint32 wait_all_nodes=55; // @gotags: copier:"wait_all_nodes" /* 0 to start job immediately after allocation * 1 to start job after all nodes booted * or NO_VAL to use system default */ + uint32 warn_signal=56; // @gotags: copier:"warn_signal" /* signal to send when approaching end time */ + uint32 warn_time=57; // @gotags: copier:"warn_time" /* time before end to send signal (seconds) */ + string work_dir =58; // @gotags: copier:"work_dir" /* pathname of working directory */ /* job constraints: */ + uint32 cpus_per_task=59; // @gotags: copier:"cpus_per_task" /* number of processors required for * each task */ + uint32 min_cpus =60; // @gotags: copier:"min_cpus" /* minimum number of processors required, * default=0 */ + uint32 max_cpus=61; // @gotags: copier:"max_cpus" /* maximum number of processors required, * default=0 */ + uint32 min_nodes=62; // @gotags: copier:"min_nodes" /* minimum number of nodes required by job, * default=0 */ + uint32 max_nodes=63; // @gotags: copier:"max_nodes" /* maximum number of nodes usable by job, * default=0 */ + uint32 boards_per_node =64; // @gotags: copier:"boards_per_node" /* boards per node required by job */ + uint32 sockets_per_board=65; // @gotags: copier:"sockets_per_board" /* sockets per board required by job */ + uint32 sockets_per_node =66; // @gotags: copier:"sockets_per_node" /* sockets per node required by job */ + uint32 cores_per_socket=67; // @gotags: copier:"cores_per_socket" /* cores per socket required by job */ + uint32 threads_per_core=68; // @gotags: copier:"threads_per_core" /* threads per core required by job */ + uint32 ntasks_per_node =69; // @gotags: copier:"ntasks_per_node" /* number of tasks to invoke on each node */ + uint32 ntasks_per_socket=70; // @gotags: copier:"ntasks_per_socket" /* number of tasks to invoke on * each socket */ + uint32 ntasks_per_core =71; // @gotags: copier:"ntasks_per_core" /* number of tasks to invoke on each core */ + uint32 ntasks_per_board=72; // @gotags: copier:"ntasks_per_board" /* number of tasks to invoke on each board */ + uint32 pn_min_cpus =73; // @gotags: copier:"pn_min_cpus" /* minimum # CPUs per node, default=0 */ + uint32 pn_min_memory=74; // @gotags: copier:"pn_min_memory" /* minimum real memory per node OR * real memory per CPU | MEM_PER_CPU, * default=0 (no limit) */ + uint32 pn_min_tmp_disk =75; // @gotags: copier:"pn_min_tmp_disk" /* minimum tmp disk per node, * default=0 */ + /* + * The following parameters are only meaningful on a Blue Gene + * system at present. Some will be of value on other system. Don't remove these + * they are needed for LCRM and others that can't talk to the opaque data type + * select_jobinfo. + */ + //uint16_t geometry[HIGHEST_DIMENSIONS]; node count in various // * dimensions, e.g. X, Y, and Z + //uint16_t conn_type[HIGHEST_DIMENSIONS]; see enum connection_type + uint32 reboot=76; // @gotags: copier:"reboot" /* force node reboot before startup */ + uint32 rotate=77; // @gotags: copier:"rotate" /* permit geometry rotation if set */ + //char *blrtsimage; /* BlrtsImage for block */ + //char *linuximage; /* LinuxImage for block */ + //char *mloaderimage; /* MloaderImage for block */ + //char *ramdiskimage; /* RamDiskImage for block */ + /* End of Blue Gene specific values */ + + uint32 req_switch =78; // @gotags: copier:"req_switch" /* Minimum number of switches */ //dynamic_plugin_data_t *select_jobinfo; /* opaque data type, // * SLURM internal use only */ + string std_err=79; // @gotags: copier:"std_err" /* pathname of stderr */ + string std_in =80; // @gotags: copier:"std_in" /* pathname of stdin */ + string std_out=81; // @gotags: copier:"std_out" /* pathname of stdout */ + uint32 wait4switch=82; // @gotags: copier:"wait4switch" /* Maximum time to wait for minimum switches */ + string wckey =83; // @gotags: copier:"wckey" /* wckey for job */ +} + +message SubmitJobResp{ + repeated SubmitResponseMsg submit_response_msg = 1; +} + +message SubmitResponseMsg{ + uint32 job_id = 1; + uint32 step_id =2; + uint32 error_code=3; +} + +message Argv{ + string argv =1; // @gotags: copier:"argv" +} + +message Environment{ + string environment =1; // @gotags: copier:"environment" +} +/******************Job(Submit) End*************************/ + + +// hpc Services for Tianhe +service hpcTH { + + //ListJob list all jobs + rpc ListJob(ListJobReq) returns (ListJobResp); + + //ListHistoryJob list all history jobs + rpc ListHistoryJob(ListHistoryJobReq) returns (ListHistoryJobResp); + + //Submit job + rpc SubmitJob(SubmitJobReq) returns (SubmitJobResp); + + +} \ No newline at end of file