diff --git a/adaptor/PCM-HPC/PCM-AC/rpc/etc/hpcac.yaml b/adaptor/PCM-HPC/PCM-AC/rpc/etc/hpcac.yaml index 2b23ffed..7b147d95 100644 --- a/adaptor/PCM-HPC/PCM-AC/rpc/etc/hpcac.yaml +++ b/adaptor/PCM-HPC/PCM-AC/rpc/etc/hpcac.yaml @@ -8,3 +8,4 @@ User: "zhijiang" Password: "111111a" OrgId: "313ae32df03bc116255e6808949fcf57" Layout: "2006-01-02 15:04:05" +EndPoint: https://api01.hpccube.com:65106 diff --git a/adaptor/PCM-HPC/PCM-AC/rpc/hpcAC/hpcAC.pb.go b/adaptor/PCM-HPC/PCM-AC/rpc/hpcAC/hpcAC.pb.go index 65e8b154..b2fa7035 100644 --- a/adaptor/PCM-HPC/PCM-AC/rpc/hpcAC/hpcAC.pb.go +++ b/adaptor/PCM-HPC/PCM-AC/rpc/hpcAC/hpcAC.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.28.1 -// protoc v3.12.4 +// protoc v3.21.12 // source: hpcAC.proto package hpcAC @@ -26,11 +26,11 @@ type JobManager struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - JobManagerType string `protobuf:"bytes,1,opt,name=job_manager_type,json=jobManagerType,proto3" json:"JobManagerType" copier:"JobManagerType"` // @gotags: copier:"JobManagerType", json:"JobManagerType" - JobManagerAddr string `protobuf:"bytes,2,opt,name=job_manager_addr,json=jobManagerAddr,proto3" json:"JobManagerAddr" copier:"JobManagerAddr"` // @gotags: copier:"JobManagerAddr", json:"JobManagerAddr" - Id int64 `protobuf:"varint,3,opt,name=id,proto3" json:"id" copier:"ID"` // @gotags: copier:"ID", json:"id" - Text string `protobuf:"bytes,4,opt,name=text,proto3" json:"text" copier:"Text"` // @gotags: copier:"Text", json:"text" - JobManagerPort string `protobuf:"bytes,5,opt,name=job_manager_port,json=jobManagerPort,proto3" json:"JobManagerPort" copier:"JobManagerPort"` // @gotags: copier:"JobManagerPort", json:"JobManagerPort" + JobManagerType string `protobuf:"bytes,1,opt,name=job_manager_type,json=jobManagerType,proto3" json:"job_manager_type,omitempty"` // @gotags: copier:"JobManagerType", json:"JobManagerType" + JobManagerAddr string `protobuf:"bytes,2,opt,name=job_manager_addr,json=jobManagerAddr,proto3" json:"job_manager_addr,omitempty"` // @gotags: copier:"JobManagerAddr", json:"JobManagerAddr" + Id int64 `protobuf:"varint,3,opt,name=id,proto3" json:"id,omitempty"` // @gotags: copier:"ID", json:"id" + Text string `protobuf:"bytes,4,opt,name=text,proto3" json:"text,omitempty"` // @gotags: copier:"Text", json:"text" + JobManagerPort string `protobuf:"bytes,5,opt,name=job_manager_port,json=jobManagerPort,proto3" json:"job_manager_port,omitempty"` // @gotags: copier:"JobManagerPort", json:"JobManagerPort" } func (x *JobManager) Reset() { @@ -143,9 +143,9 @@ type ListJobManagerResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code" copier:"Code"` // @gotags: copier:"Code", json:"code" - Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg" copier:"Msg"` // @gotags: copier:"Msg", json:"msg" - JobManagers []*JobManager `protobuf:"bytes,3,rep,name=job_managers,json=jobManagers,proto3" json:"data" copier:"JobManagers"` // @gotags: copier:"JobManagers", json:"data" + Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"` // @gotags: copier:"Code", json:"code" + Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` // @gotags: copier:"Msg", json:"msg" + JobManagers []*JobManager `protobuf:"bytes,3,rep,name=job_managers,json=jobManagers,proto3" json:"job_managers,omitempty"` // @gotags: copier:"JobManagers", json:"data" } func (x *ListJobManagerResp) Reset() { @@ -1474,23 +1474,23 @@ type Job struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - JobId string `protobuf:"bytes,1,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty" copier:"JobId"` // @gotags: copier:"JobId" - JobName string `protobuf:"bytes,2,opt,name=job_name,json=jobName,proto3" json:"job_name,omitempty" copier:"Name"` // @gotags: copier:"Name" - JobStatus string `protobuf:"bytes,3,opt,name=job_status,json=jobStatus,proto3" json:"job_status,omitempty" copier:"JobState"` // @gotags: copier:"JobState" - Queue string `protobuf:"bytes,4,opt,name=queue,proto3" json:"queue,omitempty" copier:"Partition"` // @gotags: copier:"Partition" - User string `protobuf:"bytes,5,opt,name=user,proto3" json:"user,omitempty" copier:"UserId"` // @gotags: copier:"UserId" - NodeUsed string `protobuf:"bytes,6,opt,name=node_used,json=nodeUsed,proto3" json:"node_used,omitempty" copier:"ExcNodes"` // @gotags: copier:"ExcNodes" - ProcNumUsed int32 `protobuf:"varint,7,opt,name=proc_num_used,json=procNumUsed,proto3" json:"proc_num_used,omitempty" copier:"NumCpus"` // @gotags: copier:"NumCpus" - JobStartTime string `protobuf:"bytes,8,opt,name=job_start_time,json=jobStartTime,proto3" json:"job_start_time,omitempty" copier:"StartTime"` // @gotags: copier:"StartTime" - JobRunTime string `protobuf:"bytes,9,opt,name=job_run_time,json=jobRunTime,proto3" json:"job_run_time,omitempty" copier:"JobRunTime"` // @gotags: copier:"JobRunTime" - JobManagerId string `protobuf:"bytes,10,opt,name=job_manager_id,json=jobManagerId,proto3" json:"job_manager_id,omitempty" copier:"JobmanagerId"` // @gotags: copier:"JobmanagerId" - JobManagerName string `protobuf:"bytes,11,opt,name=job_manager_name,json=jobManagerName,proto3" json:"job_manager_name,omitempty" copier:"JobmanagerName"` // @gotags: copier:"JobmanagerName" - JobManagerType string `protobuf:"bytes,12,opt,name=job_manager_type,json=jobManagerType,proto3" json:"job_manager_type,omitempty" copier:"JobmanagerType"` // @gotags: copier:"JobmanagerType" - ErrorPath string `protobuf:"bytes,13,opt,name=error_path,json=errorPath,proto3" json:"error_path,omitempty" copier:"ErrorPath"` // @gotags: copier:"ErrorPath" - OutputPath string `protobuf:"bytes,14,opt,name=output_path,json=outputPath,proto3" json:"output_path,omitempty" copier:"OutputPath"` // @gotags: copier:"OutputPath" - WorkDir string `protobuf:"bytes,15,opt,name=work_dir,json=workDir,proto3" json:"work_dir,omitempty" copier:"WorkDir"` // @gotags: copier:"WorkDir" - Reason string `protobuf:"bytes,16,opt,name=reason,proto3" json:"reason,omitempty" copier:"Reason"` // @gotags: copier:"Reason" - AppType string `protobuf:"bytes,17,opt,name=app_type,json=appType,proto3" json:"app_type,omitempty" copier:"AppType"` // @gotags: copier:"AppType" + JobId string `protobuf:"bytes,1,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"` // @gotags: copier:"JobId" + JobName string `protobuf:"bytes,2,opt,name=job_name,json=jobName,proto3" json:"job_name,omitempty"` // @gotags: copier:"Name" + JobStatus string `protobuf:"bytes,3,opt,name=job_status,json=jobStatus,proto3" json:"job_status,omitempty"` // @gotags: copier:"JobState" + Queue string `protobuf:"bytes,4,opt,name=queue,proto3" json:"queue,omitempty"` // @gotags: copier:"Partition" + User string `protobuf:"bytes,5,opt,name=user,proto3" json:"user,omitempty"` // @gotags: copier:"UserId" + NodeUsed string `protobuf:"bytes,6,opt,name=node_used,json=nodeUsed,proto3" json:"node_used,omitempty"` // @gotags: copier:"ExcNodes" + ProcNumUsed int32 `protobuf:"varint,7,opt,name=proc_num_used,json=procNumUsed,proto3" json:"proc_num_used,omitempty"` // @gotags: copier:"NumCpus" + JobStartTime string `protobuf:"bytes,8,opt,name=job_start_time,json=jobStartTime,proto3" json:"job_start_time,omitempty"` // @gotags: copier:"StartTime" + JobRunTime string `protobuf:"bytes,9,opt,name=job_run_time,json=jobRunTime,proto3" json:"job_run_time,omitempty"` // @gotags: copier:"JobRunTime" + JobManagerId string `protobuf:"bytes,10,opt,name=job_manager_id,json=jobManagerId,proto3" json:"job_manager_id,omitempty"` // @gotags: copier:"JobmanagerId" + JobManagerName string `protobuf:"bytes,11,opt,name=job_manager_name,json=jobManagerName,proto3" json:"job_manager_name,omitempty"` // @gotags: copier:"JobmanagerName" + JobManagerType string `protobuf:"bytes,12,opt,name=job_manager_type,json=jobManagerType,proto3" json:"job_manager_type,omitempty"` // @gotags: copier:"JobmanagerType" + ErrorPath string `protobuf:"bytes,13,opt,name=error_path,json=errorPath,proto3" json:"error_path,omitempty"` // @gotags: copier:"ErrorPath" + OutputPath string `protobuf:"bytes,14,opt,name=output_path,json=outputPath,proto3" json:"output_path,omitempty"` // @gotags: copier:"OutputPath" + WorkDir string `protobuf:"bytes,15,opt,name=work_dir,json=workDir,proto3" json:"work_dir,omitempty"` // @gotags: copier:"WorkDir" + Reason string `protobuf:"bytes,16,opt,name=reason,proto3" json:"reason,omitempty"` // @gotags: copier:"Reason" + AppType string `protobuf:"bytes,17,opt,name=app_type,json=appType,proto3" json:"app_type,omitempty"` // @gotags: copier:"AppType" } func (x *Job) Reset() { @@ -1687,10 +1687,10 @@ type ListJobResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Code uint32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty" copier:"Code"` // @gotags: copier:"Code" - Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty" copier:"Msg"` // @gotags: copier:"Msg" - RecordCount uint32 `protobuf:"varint,3,opt,name=record_count,json=recordCount,proto3" json:"record_count,omitempty" copier:"RecordCount"` // @gotags: copier:"RecordCount" - Jobs []*Job `protobuf:"bytes,4,rep,name=jobs,proto3" json:"jobs,omitempty" copier:"Jobs"` // @gotags: copier:"Jobs" + 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() { @@ -1759,22 +1759,22 @@ type HistoryJob struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - AcctTime string `protobuf:"bytes,1,opt,name=acct_time,json=acctTime,proto3" json:"acct_time,omitempty" copier:"AcctTime"` // @gotags: copier:"AcctTime" - AppType string `protobuf:"bytes,2,opt,name=app_type,json=appType,proto3" json:"app_type,omitempty" copier:"AppType"` // @gotags: copier:"AppType" - JobEndTime string `protobuf:"bytes,3,opt,name=job_end_time,json=jobEndTime,proto3" json:"job_end_time,omitempty" copier:"End"` // @gotags: copier:"End" - JobExecHost string `protobuf:"bytes,4,opt,name=job_exec_host,json=jobExecHost,proto3" json:"job_exec_host,omitempty" copier:"Nodes"` // @gotags: copier:"Nodes" - JobExitStatus int32 `protobuf:"varint,5,opt,name=job_exit_status,json=jobExitStatus,proto3" json:"job_exit_status,omitempty" copier:"ExitCode"` // @gotags: copier:"ExitCode" - JobId int64 `protobuf:"varint,6,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty" copier:"JobId"` // @gotags: copier:"JobId" - JobName string `protobuf:"bytes,7,opt,name=job_name,json=jobName,proto3" json:"job_name,omitempty" copier:"JobName"` // @gotags: copier:"JobName" - JobQueueTime string `protobuf:"bytes,8,opt,name=job_queue_time,json=jobQueueTime,proto3" json:"job_queue_time,omitempty" copier:"JobQueueTime"` // @gotags: copier:"JobQueueTime" - JobStartTime string `protobuf:"bytes,9,opt,name=job_start_time,json=jobStartTime,proto3" json:"job_start_time,omitempty" copier:"Start"` // @gotags: copier:"Start" - JobState string `protobuf:"bytes,10,opt,name=job_state,json=jobState,proto3" json:"job_state,omitempty" copier:"State"` // @gotags: copier:"State" - JobWalltimeUsed string `protobuf:"bytes,11,opt,name=job_walltime_used,json=jobWalltimeUsed,proto3" json:"job_walltime_used,omitempty" copier:"JobWalltimeUsed"` // @gotags: copier:"JobWalltimeUsed" - JobManagerId int64 `protobuf:"varint,12,opt,name=job_manager_id,json=jobManagerId,proto3" json:"job_manager_id,omitempty" copier:"JobManagerId"` // @gotags: copier:"JobManagerId" - NodeCt int32 `protobuf:"varint,13,opt,name=node_ct,json=nodeCt,proto3" json:"node_ct,omitempty" copier:"AllocNodes"` // @gotags: copier:"AllocNodes" - Queue string `protobuf:"bytes,14,opt,name=queue,proto3" json:"queue,omitempty" copier:"Partition"` // @gotags: copier:"Partition" - UserName string `protobuf:"bytes,15,opt,name=user_name,json=userName,proto3" json:"user_name,omitempty" copier:"User"` // @gotags: copier:"User" - Workdir string `protobuf:"bytes,16,opt,name=workdir,proto3" json:"workdir,omitempty" copier:"WorkDir"` // @gotags: copier:"WorkDir" + AcctTime string `protobuf:"bytes,1,opt,name=acct_time,json=acctTime,proto3" json:"acct_time,omitempty"` // @gotags: copier:"AcctTime" + AppType string `protobuf:"bytes,2,opt,name=app_type,json=appType,proto3" json:"app_type,omitempty"` // @gotags: copier:"AppType" + JobEndTime string `protobuf:"bytes,3,opt,name=job_end_time,json=jobEndTime,proto3" json:"job_end_time,omitempty"` // @gotags: copier:"End" + JobExecHost string `protobuf:"bytes,4,opt,name=job_exec_host,json=jobExecHost,proto3" json:"job_exec_host,omitempty"` // @gotags: copier:"Nodes" + JobExitStatus int32 `protobuf:"varint,5,opt,name=job_exit_status,json=jobExitStatus,proto3" json:"job_exit_status,omitempty"` // @gotags: copier:"ExitCode" + JobId int64 `protobuf:"varint,6,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"` // @gotags: copier:"JobId" + JobName string `protobuf:"bytes,7,opt,name=job_name,json=jobName,proto3" json:"job_name,omitempty"` // @gotags: copier:"JobName" + JobQueueTime string `protobuf:"bytes,8,opt,name=job_queue_time,json=jobQueueTime,proto3" json:"job_queue_time,omitempty"` // @gotags: copier:"JobQueueTime" + JobStartTime string `protobuf:"bytes,9,opt,name=job_start_time,json=jobStartTime,proto3" json:"job_start_time,omitempty"` // @gotags: copier:"Start" + JobState string `protobuf:"bytes,10,opt,name=job_state,json=jobState,proto3" json:"job_state,omitempty"` // @gotags: copier:"State" + JobWalltimeUsed string `protobuf:"bytes,11,opt,name=job_walltime_used,json=jobWalltimeUsed,proto3" json:"job_walltime_used,omitempty"` // @gotags: copier:"JobWalltimeUsed" + JobManagerId int64 `protobuf:"varint,12,opt,name=job_manager_id,json=jobManagerId,proto3" json:"job_manager_id,omitempty"` // @gotags: copier:"JobManagerId" + NodeCt int32 `protobuf:"varint,13,opt,name=node_ct,json=nodeCt,proto3" json:"node_ct,omitempty"` // @gotags: copier:"AllocNodes" + Queue string `protobuf:"bytes,14,opt,name=queue,proto3" json:"queue,omitempty"` // @gotags: copier:"Partition" + UserName string `protobuf:"bytes,15,opt,name=user_name,json=userName,proto3" json:"user_name,omitempty"` // @gotags: copier:"User" + Workdir string `protobuf:"bytes,16,opt,name=workdir,proto3" json:"workdir,omitempty"` // @gotags: copier:"WorkDir" } func (x *HistoryJob) Reset() { @@ -1926,12 +1926,12 @@ type ListHistoryJobReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - StartTime string `protobuf:"bytes,1,opt,name=startTime,proto3" json:"startTime,omitempty" copier:"StartTime"` // @gotags: copier:"StartTime" - EndTime string `protobuf:"bytes,2,opt,name=endTime,proto3" json:"endTime,omitempty" copier:"EndTime"` // @gotags: copier:"EndTime" - TimeType string `protobuf:"bytes,3,opt,name=timeType,proto3" json:"timeType,omitempty" copier:"TimeType"` // @gotags: copier:"TimeType" - Start int32 `protobuf:"varint,4,opt,name=start,proto3" json:"start,omitempty" copier:"Start"` // @gotags: copier:"Start" - Limit int32 `protobuf:"varint,5,opt,name=limit,proto3" json:"limit,omitempty" copier:"Limit"` // @gotags: copier:"Limit" - IsQueryByQueueTime int32 `protobuf:"varint,6,opt,name=isQueryByQueueTime,proto3" json:"isQueryByQueueTime,omitempty" copier:"IsQueryByQueueTime"` // @gotags: copier:"IsQueryByQueueTime" + StartTime string `protobuf:"bytes,1,opt,name=startTime,proto3" json:"startTime,omitempty"` // @gotags: copier:"StartTime" + EndTime string `protobuf:"bytes,2,opt,name=endTime,proto3" json:"endTime,omitempty"` // @gotags: copier:"EndTime" + TimeType string `protobuf:"bytes,3,opt,name=timeType,proto3" json:"timeType,omitempty"` // @gotags: copier:"TimeType" + Start int32 `protobuf:"varint,4,opt,name=start,proto3" json:"start,omitempty"` // @gotags: copier:"Start" + Limit int32 `protobuf:"varint,5,opt,name=limit,proto3" json:"limit,omitempty"` // @gotags: copier:"Limit" + IsQueryByQueueTime int32 `protobuf:"varint,6,opt,name=isQueryByQueueTime,proto3" json:"isQueryByQueueTime,omitempty"` // @gotags: copier:"IsQueryByQueueTime" } func (x *ListHistoryJobReq) Reset() { @@ -2013,10 +2013,10 @@ type ListHistoryJobResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Code uint32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty" copier:"Code"` // @gotags: copier:"Code" - Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty" copier:"Msg"` // @gotags: copier:"Msg" - RecordCount uint32 `protobuf:"varint,3,opt,name=record_count,json=recordCount,proto3" json:"record_count,omitempty" copier:"RecordCount"` // @gotags: copier:"RecordCount" - HistoryJobs []*HistoryJob `protobuf:"bytes,4,rep,name=history_jobs,json=historyJobs,proto3" json:"history_jobs,omitempty" copier:"HistoryJobs"` // @gotags: copier:"HistoryJobs" + 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() { @@ -2085,10 +2085,10 @@ type SubmitJobReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Apptype string `protobuf:"bytes,1,opt,name=apptype,proto3" json:"apptype,omitempty" copier:"Apptype"` // @gotags: copier:"Apptype" - Appname string `protobuf:"bytes,2,opt,name=appname,proto3" json:"appname,omitempty" copier:"Appname"` // @gotags: copier:"Appname" - StrJobManagerID int64 `protobuf:"varint,3,opt,name=strJobManagerID,proto3" json:"strJobManagerID,omitempty" copier:"StrJobManagerID"` // @gotags: copier:"StrJobManagerID" - MapAppJobInfo *MapAppJobInfo `protobuf:"bytes,4,opt,name=mapAppJobInfo,proto3" json:"mapAppJobInfo,omitempty" copier:"MapAppJobInfo"` // @gotags: copier:"MapAppJobInfo" + Apptype string `protobuf:"bytes,1,opt,name=apptype,proto3" json:"apptype,omitempty"` // @gotags: copier:"Apptype" + Appname string `protobuf:"bytes,2,opt,name=appname,proto3" json:"appname,omitempty"` // @gotags: copier:"Appname" + StrJobManagerID int64 `protobuf:"varint,3,opt,name=strJobManagerID,proto3" json:"strJobManagerID,omitempty"` // @gotags: copier:"StrJobManagerID" + MapAppJobInfo *MapAppJobInfo `protobuf:"bytes,4,opt,name=mapAppJobInfo,proto3" json:"mapAppJobInfo,omitempty"` // @gotags: copier:"MapAppJobInfo" } func (x *SubmitJobReq) Reset() { @@ -2156,9 +2156,9 @@ type SubmitJobResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Code string `protobuf:"bytes,1,opt,name=Code,proto3" json:"Code,omitempty" copier:"Code"` // @gotags: copier:"Code" - Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty" copier:"Msg"` // @gotags: copier:"Msg" - Data string `protobuf:"bytes,3,opt,name=Data,proto3" json:"Data,omitempty" copier:"Data"` // @gotags: copier:"Data" + Code string `protobuf:"bytes,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" + Data string `protobuf:"bytes,3,opt,name=Data,proto3" json:"Data,omitempty"` // @gotags: copier:"Data" } func (x *SubmitJobResp) Reset() { @@ -2219,24 +2219,24 @@ type MapAppJobInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - GAP_CMD_FILE string `protobuf:"bytes,1,opt,name=GAP_CMD_FILE,json=GAPCMDFILE,proto3" json:"GAP_CMD_FILE,omitempty" copier:"GAP_CMD_FILE"` // @gotags: copier:"GAP_CMD_FILE" //命令行内容 - GAP_NNODE string `protobuf:"bytes,2,opt,name=GAP_NNODE,json=GAPNNODE,proto3" json:"GAP_NNODE,omitempty" copier:"GAP_NNODE"` // @gotags: copier:"GAP_NNODE" //节点个数(当指定该参数时,GAP_NODE_STRING必须为"") - GAP_NODE_STRING string `protobuf:"bytes,3,opt,name=GAP_NODE_STRING,json=GAPNODESTRING,proto3" json:"GAP_NODE_STRING,omitempty" copier:"GAP_NODE_STRING"` // @gotags: copier:"GAP_NODE_STRING" //指定节点(当指定该参数时,GAP_NNODE必须为"") - GAP_SUBMIT_TYPE string `protobuf:"bytes,4,opt,name=GAP_SUBMIT_TYPE,json=GAPSUBMITTYPE,proto3" json:"GAP_SUBMIT_TYPE,omitempty" copier:"GAP_SUBMIT_TYPE"` // @gotags: copier:"GAP_SUBMIT_TYPE" //cmd(命令行模式) - GAP_JOB_NAME string `protobuf:"bytes,5,opt,name=GAP_JOB_NAME,json=GAPJOBNAME,proto3" json:"GAP_JOB_NAME,omitempty" copier:"GAP_JOB_NAME"` // @gotags: copier:"GAP_JOB_NAME" //作业名称 - GAP_WORK_DIR string `protobuf:"bytes,6,opt,name=GAP_WORK_DIR,json=GAPWORKDIR,proto3" json:"GAP_WORK_DIR,omitempty" copier:"GAP_WORK_DIR"` // @gotags: copier:"GAP_WORK_DIR" //工作路径 - GAP_QUEUE string `protobuf:"bytes,7,opt,name=GAP_QUEUE,json=GAPQUEUE,proto3" json:"GAP_QUEUE,omitempty" copier:"GAP_QUEUE"` // @gotags: copier:"GAP_QUEUE" //队列名称 - GAP_NPROC string `protobuf:"bytes,8,opt,name=GAP_NPROC,json=GAPNPROC,proto3" json:"GAP_NPROC,omitempty" copier:"GAP_NPROC"` // @gotags: copier:"GAP_NPROC" //总核心数(GAP_NPROC和GAP_PPN选其一填写) - GAP_PPN string `protobuf:"bytes,9,opt,name=GAP_PPN,json=GAPPPN,proto3" json:"GAP_PPN,omitempty" copier:"GAP_PPN"` // @gotags: copier:"GAP_PPN" //CPU核心/节点(GAP_NPROC和GAP_PPN选其一填写) - GAP_NGPU string `protobuf:"bytes,10,opt,name=GAP_NGPU,json=GAPNGPU,proto3" json:"GAP_NGPU,omitempty" copier:"GAP_NGPU"` // @gotags: copier:"GAP_NGPU" //GPU卡数/节点 - GAP_NDCU string `protobuf:"bytes,11,opt,name=GAP_NDCU,json=GAPNDCU,proto3" json:"GAP_NDCU,omitempty" copier:"GAP_NDCU"` // @gotags: copier:"GAP_NDCU" //DCU卡数/节点 - GAP_JOB_MEM string `protobuf:"bytes,12,opt,name=GAP_JOB_MEM,json=GAPJOBMEM,proto3" json:"GAP_JOB_MEM,omitempty" copier:"GAP_JOB_MEM"` // @gotags: copier:"GAP_JOB_MEM" //每个节点内存值,单位为MB/GB - GAP_WALL_TIME string `protobuf:"bytes,13,opt,name=GAP_WALL_TIME,json=GAPWALLTIME,proto3" json:"GAP_WALL_TIME,omitempty" copier:"GAP_WALL_TIME"` // @gotags: copier:"GAP_WALL_TIME" //最大运行时长(HH:MM:ss) - GAP_EXCLUSIVE string `protobuf:"bytes,14,opt,name=GAP_EXCLUSIVE,json=GAPEXCLUSIVE,proto3" json:"GAP_EXCLUSIVE,omitempty" copier:"GAP_EXCLUSIVE"` // @gotags: copier:"GAP_EXCLUSIVE" // 是否独占节点,1为独占,空为非独占 - GAP_APPNAME string `protobuf:"bytes,15,opt,name=GAP_APPNAME,json=GAPAPPNAME,proto3" json:"GAP_APPNAME,omitempty" copier:"GAP_APPNAME"` // @gotags: copier:"GAP_APPNAME" //BASE(基础应用),支持填写具体的应用英文名称 - GAP_MULTI_SUB string `protobuf:"bytes,16,opt,name=GAP_MULTI_SUB,json=GAPMULTISUB,proto3" json:"GAP_MULTI_SUB,omitempty" copier:"GAP_MULTI_SUB"` // @gotags: copier:"GAP_MULTI_SUB" //作业组长度,建议为小于等于50的正整数 - GAP_STD_OUT_FILE string `protobuf:"bytes,17,opt,name=GAP_STD_OUT_FILE,json=GAPSTDOUTFILE,proto3" json:"GAP_STD_OUT_FILE,omitempty" copier:"GAP_STD_OUT_FILE"` // @gotags: copier:"GAP_STD_OUT_FILE" //工作路径/std.out.%j - GAP_STD_ERR_FILE string `protobuf:"bytes,18,opt,name=GAP_STD_ERR_FILE,json=GAPSTDERRFILE,proto3" json:"GAP_STD_ERR_FILE,omitempty" copier:"GAP_STD_ERR_FILE"` // @gotags: copier:"GAP_STD_ERR_FILE" //工作路径/std.err.%j + GAP_CMD_FILE string `protobuf:"bytes,1,opt,name=GAP_CMD_FILE,json=GAPCMDFILE,proto3" json:"GAP_CMD_FILE,omitempty"` // @gotags: copier:"GAP_CMD_FILE" //命令行内容 + GAP_NNODE string `protobuf:"bytes,2,opt,name=GAP_NNODE,json=GAPNNODE,proto3" json:"GAP_NNODE,omitempty"` // @gotags: copier:"GAP_NNODE" //节点个数(当指定该参数时,GAP_NODE_STRING必须为"") + GAP_NODE_STRING string `protobuf:"bytes,3,opt,name=GAP_NODE_STRING,json=GAPNODESTRING,proto3" json:"GAP_NODE_STRING,omitempty"` // @gotags: copier:"GAP_NODE_STRING" //指定节点(当指定该参数时,GAP_NNODE必须为"") + GAP_SUBMIT_TYPE string `protobuf:"bytes,4,opt,name=GAP_SUBMIT_TYPE,json=GAPSUBMITTYPE,proto3" json:"GAP_SUBMIT_TYPE,omitempty"` // @gotags: copier:"GAP_SUBMIT_TYPE" //cmd(命令行模式) + GAP_JOB_NAME string `protobuf:"bytes,5,opt,name=GAP_JOB_NAME,json=GAPJOBNAME,proto3" json:"GAP_JOB_NAME,omitempty"` // @gotags: copier:"GAP_JOB_NAME" //作业名称 + GAP_WORK_DIR string `protobuf:"bytes,6,opt,name=GAP_WORK_DIR,json=GAPWORKDIR,proto3" json:"GAP_WORK_DIR,omitempty"` // @gotags: copier:"GAP_WORK_DIR" //工作路径 + GAP_QUEUE string `protobuf:"bytes,7,opt,name=GAP_QUEUE,json=GAPQUEUE,proto3" json:"GAP_QUEUE,omitempty"` // @gotags: copier:"GAP_QUEUE" //队列名称 + GAP_NPROC string `protobuf:"bytes,8,opt,name=GAP_NPROC,json=GAPNPROC,proto3" json:"GAP_NPROC,omitempty"` // @gotags: copier:"GAP_NPROC" //总核心数(GAP_NPROC和GAP_PPN选其一填写) + GAP_PPN string `protobuf:"bytes,9,opt,name=GAP_PPN,json=GAPPPN,proto3" json:"GAP_PPN,omitempty"` // @gotags: copier:"GAP_PPN" //CPU核心/节点(GAP_NPROC和GAP_PPN选其一填写) + GAP_NGPU string `protobuf:"bytes,10,opt,name=GAP_NGPU,json=GAPNGPU,proto3" json:"GAP_NGPU,omitempty"` // @gotags: copier:"GAP_NGPU" //GPU卡数/节点 + GAP_NDCU string `protobuf:"bytes,11,opt,name=GAP_NDCU,json=GAPNDCU,proto3" json:"GAP_NDCU,omitempty"` // @gotags: copier:"GAP_NDCU" //DCU卡数/节点 + GAP_JOB_MEM string `protobuf:"bytes,12,opt,name=GAP_JOB_MEM,json=GAPJOBMEM,proto3" json:"GAP_JOB_MEM,omitempty"` // @gotags: copier:"GAP_JOB_MEM" //每个节点内存值,单位为MB/GB + GAP_WALL_TIME string `protobuf:"bytes,13,opt,name=GAP_WALL_TIME,json=GAPWALLTIME,proto3" json:"GAP_WALL_TIME,omitempty"` // @gotags: copier:"GAP_WALL_TIME" //最大运行时长(HH:MM:ss) + GAP_EXCLUSIVE string `protobuf:"bytes,14,opt,name=GAP_EXCLUSIVE,json=GAPEXCLUSIVE,proto3" json:"GAP_EXCLUSIVE,omitempty"` // @gotags: copier:"GAP_EXCLUSIVE" // 是否独占节点,1为独占,空为非独占 + GAP_APPNAME string `protobuf:"bytes,15,opt,name=GAP_APPNAME,json=GAPAPPNAME,proto3" json:"GAP_APPNAME,omitempty"` // @gotags: copier:"GAP_APPNAME" //BASE(基础应用),支持填写具体的应用英文名称 + GAP_MULTI_SUB string `protobuf:"bytes,16,opt,name=GAP_MULTI_SUB,json=GAPMULTISUB,proto3" json:"GAP_MULTI_SUB,omitempty"` // @gotags: copier:"GAP_MULTI_SUB" //作业组长度,建议为小于等于50的正整数 + GAP_STD_OUT_FILE string `protobuf:"bytes,17,opt,name=GAP_STD_OUT_FILE,json=GAPSTDOUTFILE,proto3" json:"GAP_STD_OUT_FILE,omitempty"` // @gotags: copier:"GAP_STD_OUT_FILE" //工作路径/std.out.%j + GAP_STD_ERR_FILE string `protobuf:"bytes,18,opt,name=GAP_STD_ERR_FILE,json=GAPSTDERRFILE,proto3" json:"GAP_STD_ERR_FILE,omitempty"` // @gotags: copier:"GAP_STD_ERR_FILE" //工作路径/std.err.%j } func (x *MapAppJobInfo) Reset() { @@ -2397,6 +2397,996 @@ func (x *MapAppJobInfo) GetGAP_STD_ERR_FILE() string { return "" } +type FileContentResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"` // @gotags: copier:"Code" //状态码 示例:0 + Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` // @gotags: copier:"Msg" //信息 示例:success + Data *FileDataResp `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` // @gotags: copier:"Data" //对象数据 +} + +func (x *FileContentResp) Reset() { + *x = FileContentResp{} + if protoimpl.UnsafeEnabled { + mi := &file_hpcAC_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FileContentResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FileContentResp) ProtoMessage() {} + +func (x *FileContentResp) ProtoReflect() protoreflect.Message { + mi := &file_hpcAC_proto_msgTypes[12] + 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 FileContentResp.ProtoReflect.Descriptor instead. +func (*FileContentResp) Descriptor() ([]byte, []int) { + return file_hpcAC_proto_rawDescGZIP(), []int{12} +} + +func (x *FileContentResp) GetCode() string { + if x != nil { + return x.Code + } + return "" +} + +func (x *FileContentResp) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +func (x *FileContentResp) GetData() *FileDataResp { + if x != nil { + return x.Data + } + return nil +} + +type FileDataReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + HostName string `protobuf:"bytes,1,opt,name=hostName,proto3" json:"hostName,omitempty"` // @gotags: copier:"HostName" //服务器hostname 示例:127.0.0.1 + DirPath string `protobuf:"bytes,2,opt,name=dirPath,proto3" json:"dirPath,omitempty"` // @gotags: copier:"DirPath" //服务器文件绝对路径 示例:/public/home/test/BASE/STDIN_1210_114429/std.out.22 + TriggerNum int32 `protobuf:"varint,3,opt,name=triggerNum,proto3" json:"triggerNum,omitempty"` // @gotags: copier:"TriggerNum" //翻页次数,第一次打开传1,文件每超过1000行,该参数累加1(类似分页,每页显示1000行数据) 示例:1 + RollDirection string `protobuf:"bytes,4,opt,name=rollDirection,proto3" json:"rollDirection,omitempty"` // @gotags: copier:"RollDirection" //文件查看方向,传参UP,从文件尾向上看;传参DOWN,从文件头向下看 示例:UP +} + +func (x *FileDataReq) Reset() { + *x = FileDataReq{} + if protoimpl.UnsafeEnabled { + mi := &file_hpcAC_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FileDataReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FileDataReq) ProtoMessage() {} + +func (x *FileDataReq) ProtoReflect() protoreflect.Message { + mi := &file_hpcAC_proto_msgTypes[13] + 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 FileDataReq.ProtoReflect.Descriptor instead. +func (*FileDataReq) Descriptor() ([]byte, []int) { + return file_hpcAC_proto_rawDescGZIP(), []int{13} +} + +func (x *FileDataReq) GetHostName() string { + if x != nil { + return x.HostName + } + return "" +} + +func (x *FileDataReq) GetDirPath() string { + if x != nil { + return x.DirPath + } + return "" +} + +func (x *FileDataReq) GetTriggerNum() int32 { + if x != nil { + return x.TriggerNum + } + return 0 +} + +func (x *FileDataReq) GetRollDirection() string { + if x != nil { + return x.RollDirection + } + return "" +} + +type FileDataResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AllLineTotal int32 `protobuf:"varint,1,opt,name=allLineTotal,proto3" json:"allLineTotal,omitempty"` // @gotags: copier:"AllLineTotal" //文件总行数 示例:100 + Success string `protobuf:"bytes,2,opt,name=success,proto3" json:"success,omitempty"` // @gotags: copier:"Success" //请求是否成功 示例:true + TotalTriggerTimes int32 `protobuf:"varint,3,opt,name=totalTriggerTimes,proto3" json:"totalTriggerTimes,omitempty"` // @gotags: copier:"TotalTriggerTimes" //总次数(类似分页总页数) 示例:1 + Errmsg string `protobuf:"bytes,4,opt,name=errmsg,proto3" json:"errmsg,omitempty"` // @gotags: copier:"Errmsg" //错误信息 示例:false + Data string `protobuf:"bytes,5,opt,name=data,proto3" json:"data,omitempty"` // @gotags: copier:"Data" //返回的文件内容 示例:start time is: 2021-10-14 +} + +func (x *FileDataResp) Reset() { + *x = FileDataResp{} + if protoimpl.UnsafeEnabled { + mi := &file_hpcAC_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FileDataResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FileDataResp) ProtoMessage() {} + +func (x *FileDataResp) ProtoReflect() protoreflect.Message { + mi := &file_hpcAC_proto_msgTypes[14] + 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 FileDataResp.ProtoReflect.Descriptor instead. +func (*FileDataResp) Descriptor() ([]byte, []int) { + return file_hpcAC_proto_rawDescGZIP(), []int{14} +} + +func (x *FileDataResp) GetAllLineTotal() int32 { + if x != nil { + return x.AllLineTotal + } + return 0 +} + +func (x *FileDataResp) GetSuccess() string { + if x != nil { + return x.Success + } + return "" +} + +func (x *FileDataResp) GetTotalTriggerTimes() int32 { + if x != nil { + return x.TotalTriggerTimes + } + return 0 +} + +func (x *FileDataResp) GetErrmsg() string { + if x != nil { + return x.Errmsg + } + return "" +} + +func (x *FileDataResp) GetData() string { + if x != nil { + return x.Data + } + return "" +} + +type QueueReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + User string `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` // @gotags: copier:"User" //用户 示例:test + StrJobManagerID string `protobuf:"bytes,2,opt,name=strJobManagerID,proto3" json:"strJobManagerID,omitempty"` // @gotags: copier:"StrJobManagerID" //调度器ID 示例:1626190154 +} + +func (x *QueueReq) Reset() { + *x = QueueReq{} + if protoimpl.UnsafeEnabled { + mi := &file_hpcAC_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueueReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueueReq) ProtoMessage() {} + +func (x *QueueReq) ProtoReflect() protoreflect.Message { + mi := &file_hpcAC_proto_msgTypes[15] + 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 QueueReq.ProtoReflect.Descriptor instead. +func (*QueueReq) Descriptor() ([]byte, []int) { + return file_hpcAC_proto_rawDescGZIP(), []int{15} +} + +func (x *QueueReq) GetUser() string { + if x != nil { + return x.User + } + return "" +} + +func (x *QueueReq) GetStrJobManagerID() string { + if x != nil { + return x.StrJobManagerID + } + return "" +} + +type QueueResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"` // @gotags: copier:"Code" //状态码 示例:0 + Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` // @gotags: copier:"Msg" //信息 示例:success + Data []*QueueData `protobuf:"bytes,3,rep,name=data,proto3" json:"data,omitempty"` // @gotags: copier:"Data" //队列数组 +} + +func (x *QueueResp) Reset() { + *x = QueueResp{} + if protoimpl.UnsafeEnabled { + mi := &file_hpcAC_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueueResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueueResp) ProtoMessage() {} + +func (x *QueueResp) ProtoReflect() protoreflect.Message { + mi := &file_hpcAC_proto_msgTypes[16] + 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 QueueResp.ProtoReflect.Descriptor instead. +func (*QueueResp) Descriptor() ([]byte, []int) { + return file_hpcAC_proto_rawDescGZIP(), []int{16} +} + +func (x *QueueResp) GetCode() string { + if x != nil { + return x.Code + } + return "" +} + +func (x *QueueResp) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +func (x *QueueResp) GetData() []*QueueData { + if x != nil { + return x.Data + } + return nil +} + +type QueueData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AclHosts string `protobuf:"bytes,1,opt,name=aclHosts,proto3" json:"aclHosts,omitempty"` // @gotags: copier:"aclHosts" //可用节点,多个节点用逗号隔开 示例:node1,node2 + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` // @gotags: copier:"id" //队列名称 示例:debug + Text string `protobuf:"bytes,3,opt,name=text,proto3" json:"text,omitempty"` // @gotags: copier:"text" //队列名称 示例:debug + QueNodes string `protobuf:"bytes,4,opt,name=queNodes,proto3" json:"queNodes,omitempty"` // @gotags: copier:"queNodes" //队列节点总数 示例:3 + QueMinNodect string `protobuf:"bytes,5,opt,name=queMinNodect,proto3" json:"queMinNodect,omitempty"` // @gotags: copier:"queMinNodect" //队列最小节点数 示例:1 + QueMaxNgpus string `protobuf:"bytes,6,opt,name=queMaxNgpus,proto3" json:"queMaxNgpus,omitempty"` // @gotags: copier:"queMaxNgpus" //队列最大GPU卡数 示例:0 + QueMaxPPN string `protobuf:"bytes,7,opt,name=queMaxPPN,proto3" json:"queMaxPPN,omitempty"` // @gotags: copier:"queMaxPPN" //使用该队列作业最大CPU核心数 示例:4 + QueChargeRate string `protobuf:"bytes,8,opt,name=queChargeRate,proto3" json:"queChargeRate,omitempty"` // @gotags: copier:"queChargeRate" //费率 示例:1 + QueMaxNcpus string `protobuf:"bytes,9,opt,name=queMaxNcpus,proto3" json:"queMaxNcpus,omitempty"` // @gotags: copier:"queMaxNcpus" //用户最大可用核心数 示例:4 + QueMaxNdcus string `protobuf:"bytes,10,opt,name=queMaxNdcus,proto3" json:"queMaxNdcus,omitempty"` // @gotags: copier:"queMaxNdcus" //队列总DCU卡数 示例:0 + QueueName string `protobuf:"bytes,11,opt,name=queueName,proto3" json:"queueName,omitempty"` // @gotags: copier:"queueName" //队列名称 示例:debug + QueMinNcpus string `protobuf:"bytes,12,opt,name=queMinNcpus,proto3" json:"queMinNcpus,omitempty"` // @gotags: copier:"queMinNcpus" //队列最小CPU核数 示例:1 + QueFreeNodes string `protobuf:"bytes,13,opt,name=queFreeNodes,proto3" json:"queFreeNodes,omitempty"` // @gotags: copier:"queFreeNodes" //队列空闲节点数 示例:1 + QueMaxNodect string `protobuf:"bytes,14,opt,name=queMaxNodect,proto3" json:"queMaxNodect,omitempty"` // @gotags: copier:"queMaxNodect" //队列作业最大节点数 示例:1 + QueMaxGpuPN string `protobuf:"bytes,15,opt,name=queMaxGpuPN,proto3" json:"queMaxGpuPN,omitempty"` // @gotags: copier:"queMaxGpuPN" //队列单作业最大GPU卡数 示例:0 + QueMaxWalltime string `protobuf:"bytes,16,opt,name=queMaxWalltime,proto3" json:"queMaxWalltime,omitempty"` // @gotags: copier:"queMaxWalltime" //队列最大运行时间 示例:unlimit + QueMaxDcuPN string `protobuf:"bytes,17,opt,name=queMaxDcuPN,proto3" json:"queMaxDcuPN,omitempty"` // @gotags: copier:"queMaxDcuPN" //队列单作业最大DCU卡数 示例:0 +} + +func (x *QueueData) Reset() { + *x = QueueData{} + if protoimpl.UnsafeEnabled { + mi := &file_hpcAC_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueueData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueueData) ProtoMessage() {} + +func (x *QueueData) ProtoReflect() protoreflect.Message { + mi := &file_hpcAC_proto_msgTypes[17] + 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 QueueData.ProtoReflect.Descriptor instead. +func (*QueueData) Descriptor() ([]byte, []int) { + return file_hpcAC_proto_rawDescGZIP(), []int{17} +} + +func (x *QueueData) GetAclHosts() string { + if x != nil { + return x.AclHosts + } + return "" +} + +func (x *QueueData) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *QueueData) GetText() string { + if x != nil { + return x.Text + } + return "" +} + +func (x *QueueData) GetQueNodes() string { + if x != nil { + return x.QueNodes + } + return "" +} + +func (x *QueueData) GetQueMinNodect() string { + if x != nil { + return x.QueMinNodect + } + return "" +} + +func (x *QueueData) GetQueMaxNgpus() string { + if x != nil { + return x.QueMaxNgpus + } + return "" +} + +func (x *QueueData) GetQueMaxPPN() string { + if x != nil { + return x.QueMaxPPN + } + return "" +} + +func (x *QueueData) GetQueChargeRate() string { + if x != nil { + return x.QueChargeRate + } + return "" +} + +func (x *QueueData) GetQueMaxNcpus() string { + if x != nil { + return x.QueMaxNcpus + } + return "" +} + +func (x *QueueData) GetQueMaxNdcus() string { + if x != nil { + return x.QueMaxNdcus + } + return "" +} + +func (x *QueueData) GetQueueName() string { + if x != nil { + return x.QueueName + } + return "" +} + +func (x *QueueData) GetQueMinNcpus() string { + if x != nil { + return x.QueMinNcpus + } + return "" +} + +func (x *QueueData) GetQueFreeNodes() string { + if x != nil { + return x.QueFreeNodes + } + return "" +} + +func (x *QueueData) GetQueMaxNodect() string { + if x != nil { + return x.QueMaxNodect + } + return "" +} + +func (x *QueueData) GetQueMaxGpuPN() string { + if x != nil { + return x.QueMaxGpuPN + } + return "" +} + +func (x *QueueData) GetQueMaxWalltime() string { + if x != nil { + return x.QueMaxWalltime + } + return "" +} + +func (x *QueueData) GetQueMaxDcuPN() string { + if x != nil { + return x.QueMaxDcuPN + } + return "" +} + +type QueueDetailsResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"` // @gotags: copier:"Code" //状态码 示例:0 + Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` // @gotags: copier:"Msg" //信息 示例:success + Data []*QueueDetailsData `protobuf:"bytes,3,rep,name=data,proto3" json:"data,omitempty"` // @gotags: copier:"Data" //队列数组 +} + +func (x *QueueDetailsResp) Reset() { + *x = QueueDetailsResp{} + if protoimpl.UnsafeEnabled { + mi := &file_hpcAC_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueueDetailsResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueueDetailsResp) ProtoMessage() {} + +func (x *QueueDetailsResp) ProtoReflect() protoreflect.Message { + mi := &file_hpcAC_proto_msgTypes[18] + 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 QueueDetailsResp.ProtoReflect.Descriptor instead. +func (*QueueDetailsResp) Descriptor() ([]byte, []int) { + return file_hpcAC_proto_rawDescGZIP(), []int{18} +} + +func (x *QueueDetailsResp) GetCode() string { + if x != nil { + return x.Code + } + return "" +} + +func (x *QueueDetailsResp) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +func (x *QueueDetailsResp) GetData() []*QueueDetailsData { + if x != nil { + return x.Data + } + return nil +} + +type QueueDetailsData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + QueNodes int32 `protobuf:"varint,1,opt,name=queNodes,proto3" json:"queNodes,omitempty"` // @gotags: copier:"queNodes" //队列节点总数 示例:3 + QueMinNodect int32 `protobuf:"varint,2,opt,name=queMinNodect,proto3" json:"queMinNodect,omitempty"` // @gotags: copier:"queMinNodect" //队列最小节点数 示例:1 + QueMaxNgpus int32 `protobuf:"varint,3,opt,name=queMaxNgpus,proto3" json:"queMaxNgpus,omitempty"` // @gotags: copier:"queMaxNgpus" //队列最大GPU卡数 示例:0 + QueMaxPPN int32 `protobuf:"varint,4,opt,name=queMaxPPN,proto3" json:"queMaxPPN,omitempty"` // @gotags: copier:"queMaxPPN" //使用该队列作业最大CPU核心数 示例:4 + QueChargeRate float32 `protobuf:"fixed32,5,opt,name=queChargeRate,proto3" json:"queChargeRate,omitempty"` // @gotags: copier:"queChargeRate" //费率 示例:1 + QueMaxNcpus int32 `protobuf:"varint,6,opt,name=queMaxNcpus,proto3" json:"queMaxNcpus,omitempty"` // @gotags: copier:"queMaxNcpus" //用户最大可用核心数 示例:4 + QueMaxNdcus int32 `protobuf:"varint,7,opt,name=queMaxNdcus,proto3" json:"queMaxNdcus,omitempty"` // @gotags: copier:"queMaxNdcus" //队列总DCU卡数 示例:0 + QueueName string `protobuf:"bytes,8,opt,name=queueName,proto3" json:"queueName,omitempty"` // @gotags: copier:"queueName" //队列名称 示例:debug + QueMinNcpus int32 `protobuf:"varint,9,opt,name=queMinNcpus,proto3" json:"queMinNcpus,omitempty"` // @gotags: copier:"queMinNcpus" //队列最小CPU核数 示例:1 + QueFreeNodes int32 `protobuf:"varint,10,opt,name=queFreeNodes,proto3" json:"queFreeNodes,omitempty"` // @gotags: copier:"queFreeNodes" //队列空闲节点数 示例:1 + QueMaxNodect int32 `protobuf:"varint,11,opt,name=queMaxNodect,proto3" json:"queMaxNodect,omitempty"` // @gotags: copier:"queMaxNodect" //队列作业最大节点数 示例:1 + QueMaxGpuPN int32 `protobuf:"varint,12,opt,name=queMaxGpuPN,proto3" json:"queMaxGpuPN,omitempty"` // @gotags: copier:"queMaxGpuPN" //队列单作业最大GPU卡数 示例:0 + QueMaxWalltime int32 `protobuf:"varint,13,opt,name=queMaxWalltime,proto3" json:"queMaxWalltime,omitempty"` // @gotags: copier:"queMaxWalltime" //队列最大运行时间 示例:unlimit + QueMaxDcuPN int32 `protobuf:"varint,14,opt,name=queMaxDcuPN,proto3" json:"queMaxDcuPN,omitempty"` // @gotags: copier:"queMaxDcuPN" //队列单作业最大DCU卡数 示例:0 +} + +func (x *QueueDetailsData) Reset() { + *x = QueueDetailsData{} + if protoimpl.UnsafeEnabled { + mi := &file_hpcAC_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueueDetailsData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueueDetailsData) ProtoMessage() {} + +func (x *QueueDetailsData) ProtoReflect() protoreflect.Message { + mi := &file_hpcAC_proto_msgTypes[19] + 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 QueueDetailsData.ProtoReflect.Descriptor instead. +func (*QueueDetailsData) Descriptor() ([]byte, []int) { + return file_hpcAC_proto_rawDescGZIP(), []int{19} +} + +func (x *QueueDetailsData) GetQueNodes() int32 { + if x != nil { + return x.QueNodes + } + return 0 +} + +func (x *QueueDetailsData) GetQueMinNodect() int32 { + if x != nil { + return x.QueMinNodect + } + return 0 +} + +func (x *QueueDetailsData) GetQueMaxNgpus() int32 { + if x != nil { + return x.QueMaxNgpus + } + return 0 +} + +func (x *QueueDetailsData) GetQueMaxPPN() int32 { + if x != nil { + return x.QueMaxPPN + } + return 0 +} + +func (x *QueueDetailsData) GetQueChargeRate() float32 { + if x != nil { + return x.QueChargeRate + } + return 0 +} + +func (x *QueueDetailsData) GetQueMaxNcpus() int32 { + if x != nil { + return x.QueMaxNcpus + } + return 0 +} + +func (x *QueueDetailsData) GetQueMaxNdcus() int32 { + if x != nil { + return x.QueMaxNdcus + } + return 0 +} + +func (x *QueueDetailsData) GetQueueName() string { + if x != nil { + return x.QueueName + } + return "" +} + +func (x *QueueDetailsData) GetQueMinNcpus() int32 { + if x != nil { + return x.QueMinNcpus + } + return 0 +} + +func (x *QueueDetailsData) GetQueFreeNodes() int32 { + if x != nil { + return x.QueFreeNodes + } + return 0 +} + +func (x *QueueDetailsData) GetQueMaxNodect() int32 { + if x != nil { + return x.QueMaxNodect + } + return 0 +} + +func (x *QueueDetailsData) GetQueMaxGpuPN() int32 { + if x != nil { + return x.QueMaxGpuPN + } + return 0 +} + +func (x *QueueDetailsData) GetQueMaxWalltime() int32 { + if x != nil { + return x.QueMaxWalltime + } + return 0 +} + +func (x *QueueDetailsData) GetQueMaxDcuPN() int32 { + if x != nil { + return x.QueMaxDcuPN + } + return 0 +} + +type UserQuotasLimitResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"` // @gotags: copier:"Code" //状态码 示例:0 + Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` // @gotags: copier:"Msg" //信息 示例:success + Data *UserQuotasLimitData `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` // @gotags: copier:"Data" //队列数组 +} + +func (x *UserQuotasLimitResp) Reset() { + *x = UserQuotasLimitResp{} + if protoimpl.UnsafeEnabled { + mi := &file_hpcAC_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UserQuotasLimitResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UserQuotasLimitResp) ProtoMessage() {} + +func (x *UserQuotasLimitResp) ProtoReflect() protoreflect.Message { + mi := &file_hpcAC_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UserQuotasLimitResp.ProtoReflect.Descriptor instead. +func (*UserQuotasLimitResp) Descriptor() ([]byte, []int) { + return file_hpcAC_proto_rawDescGZIP(), []int{20} +} + +func (x *UserQuotasLimitResp) GetCode() string { + if x != nil { + return x.Code + } + return "" +} + +func (x *UserQuotasLimitResp) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +func (x *UserQuotasLimitResp) GetData() *UserQuotasLimitData { + if x != nil { + return x.Data + } + return nil +} + +type UserQuotasLimitData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UserName string `protobuf:"bytes,1,opt,name=userName,proto3" json:"userName,omitempty"` // @gotags: copier:"userName" //用户名称 + AccountName string `protobuf:"bytes,2,opt,name=accountName,proto3" json:"accountName,omitempty"` // @gotags: copier:"accountName" //用户所关联的默认的账号名 + UserMaxCpu int64 `protobuf:"varint,3,opt,name=userMaxCpu,proto3" json:"userMaxCpu,omitempty"` // @gotags: copier:"userMaxCpu" //用户最大CPU核数,单位:个,如果未做限制,则值为-1 + UserMaxDcu int64 `protobuf:"varint,4,opt,name=userMaxDcu,proto3" json:"userMaxDcu,omitempty"` // @gotags: copier:"userMaxDcu" //用户最大DCU卡数,单位:个,如果未做限制,则值为-1 + UserMaxGpu int64 `protobuf:"varint,5,opt,name=userMaxGpu,proto3" json:"userMaxGpu,omitempty"` // @gotags: copier:"userMaxGpu" //用户最大GPU卡数,单位:个,如果未做限制,则值为-1 + UserMaxMlu int64 `protobuf:"varint,6,opt,name=userMaxMlu,proto3" json:"userMaxMlu,omitempty"` // @gotags: copier:"userMaxMlu" //用户最大MLU卡数,单位:个,如果未做限制,则值为-1 + UserMaxMem int64 `protobuf:"varint,7,opt,name=userMaxMem,proto3" json:"userMaxMem,omitempty"` // @gotags: copier:"userMaxMem" //用户最大内存,单位:m,如果未做限制,则值为-1 + UserMaxNode int64 `protobuf:"varint,8,opt,name=userMaxNode,proto3" json:"userMaxNode,omitempty"` // @gotags: copier:"userMaxNode" //用户最大节点数,单位:个,如果未做限制,则值为-1 + UserMaxSubmitJob int64 `protobuf:"varint,9,opt,name=userMaxSubmitJob,proto3" json:"userMaxSubmitJob,omitempty"` // @gotags: copier:"userMaxSubmitJob" //用户最大提交作业数,单位:个,如果未做限制,则值为-1 + UserMaxRunJob int64 `protobuf:"varint,10,opt,name=userMaxRunJob,proto3" json:"userMaxRunJob,omitempty"` // @gotags: copier:"userMaxRunJob" //用户最大运行作业数,单位:个,如果未做限制,则值为-1 + AccountMaxCpu int64 `protobuf:"varint,11,opt,name=accountMaxCpu,proto3" json:"accountMaxCpu,omitempty"` // @gotags: copier:"accountMaxCpu" //账户最大CPU核数,单位:个,如果未做限制,则值为-1 + AccountMaxDcu int64 `protobuf:"varint,12,opt,name=accountMaxDcu,proto3" json:"accountMaxDcu,omitempty"` // @gotags: copier:"accountMaxDcu" //账户最大DCU卡数,单位:个,如果未做限制,则值为-1 + AccountMaxGpu int64 `protobuf:"varint,13,opt,name=accountMaxGpu,proto3" json:"accountMaxGpu,omitempty"` // @gotags: copier:"accountMaxGpu" //账户最大GPU卡数,单位:个,如果未做限制,则值为-1 + AccountMaxMlu int64 `protobuf:"varint,14,opt,name=accountMaxMlu,proto3" json:"accountMaxMlu,omitempty"` // @gotags: copier:"accountMaxMlu" //账户最大MLU卡数,单位:个,如果未做限制,则值为-1 + AccountMaxMem int64 `protobuf:"varint,15,opt,name=accountMaxMem,proto3" json:"accountMaxMem,omitempty"` // @gotags: copier:"accountMaxMem" //账户最大内存,单位:m,如果未做限制,则值为-1 + AccountMaxNode int64 `protobuf:"varint,16,opt,name=accountMaxNode,proto3" json:"accountMaxNode,omitempty"` // @gotags: copier:"accountMaxNode" //账户最大节点数,单位:个,如果未做限制,则值为-1 + AccountMaxSubmitJob int64 `protobuf:"varint,17,opt,name=accountMaxSubmitJob,proto3" json:"accountMaxSubmitJob,omitempty"` // @gotags: copier:"accountMaxSubmitJob" //账户最大提交作业数,单位:个,如果未做限制,则值为-1 + AccountMaxRunJob int64 `protobuf:"varint,18,opt,name=accountMaxRunJob,proto3" json:"accountMaxRunJob,omitempty"` // @gotags: copier:"accountMaxRunJob" //账户最大运行作业数,单位:个,如果未做限制,则值为-1 + UserMinCpu int64 `protobuf:"varint,19,opt,name=userMinCpu,proto3" json:"userMinCpu,omitempty"` // @gotags: copier:"userMinCpu" //用户最小CPU核数,单位:个,如果未做限制,则值为-1 + UserMinNode int64 `protobuf:"varint,20,opt,name=userMinNode,proto3" json:"userMinNode,omitempty"` // @gotags: copier:"userMinNode" //用户最小节点数,单位:个,如果未做限制,则值为-1 + MaxWallTime int64 `protobuf:"varint,21,opt,name=maxWallTime,proto3" json:"maxWallTime,omitempty"` // @gotags: copier:"maxWallTime" //用户关联的glod账号的机时,机时单位:s,如果未做限制,则值为-1 +} + +func (x *UserQuotasLimitData) Reset() { + *x = UserQuotasLimitData{} + if protoimpl.UnsafeEnabled { + mi := &file_hpcAC_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UserQuotasLimitData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UserQuotasLimitData) ProtoMessage() {} + +func (x *UserQuotasLimitData) ProtoReflect() protoreflect.Message { + mi := &file_hpcAC_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UserQuotasLimitData.ProtoReflect.Descriptor instead. +func (*UserQuotasLimitData) Descriptor() ([]byte, []int) { + return file_hpcAC_proto_rawDescGZIP(), []int{21} +} + +func (x *UserQuotasLimitData) GetUserName() string { + if x != nil { + return x.UserName + } + return "" +} + +func (x *UserQuotasLimitData) GetAccountName() string { + if x != nil { + return x.AccountName + } + return "" +} + +func (x *UserQuotasLimitData) GetUserMaxCpu() int64 { + if x != nil { + return x.UserMaxCpu + } + return 0 +} + +func (x *UserQuotasLimitData) GetUserMaxDcu() int64 { + if x != nil { + return x.UserMaxDcu + } + return 0 +} + +func (x *UserQuotasLimitData) GetUserMaxGpu() int64 { + if x != nil { + return x.UserMaxGpu + } + return 0 +} + +func (x *UserQuotasLimitData) GetUserMaxMlu() int64 { + if x != nil { + return x.UserMaxMlu + } + return 0 +} + +func (x *UserQuotasLimitData) GetUserMaxMem() int64 { + if x != nil { + return x.UserMaxMem + } + return 0 +} + +func (x *UserQuotasLimitData) GetUserMaxNode() int64 { + if x != nil { + return x.UserMaxNode + } + return 0 +} + +func (x *UserQuotasLimitData) GetUserMaxSubmitJob() int64 { + if x != nil { + return x.UserMaxSubmitJob + } + return 0 +} + +func (x *UserQuotasLimitData) GetUserMaxRunJob() int64 { + if x != nil { + return x.UserMaxRunJob + } + return 0 +} + +func (x *UserQuotasLimitData) GetAccountMaxCpu() int64 { + if x != nil { + return x.AccountMaxCpu + } + return 0 +} + +func (x *UserQuotasLimitData) GetAccountMaxDcu() int64 { + if x != nil { + return x.AccountMaxDcu + } + return 0 +} + +func (x *UserQuotasLimitData) GetAccountMaxGpu() int64 { + if x != nil { + return x.AccountMaxGpu + } + return 0 +} + +func (x *UserQuotasLimitData) GetAccountMaxMlu() int64 { + if x != nil { + return x.AccountMaxMlu + } + return 0 +} + +func (x *UserQuotasLimitData) GetAccountMaxMem() int64 { + if x != nil { + return x.AccountMaxMem + } + return 0 +} + +func (x *UserQuotasLimitData) GetAccountMaxNode() int64 { + if x != nil { + return x.AccountMaxNode + } + return 0 +} + +func (x *UserQuotasLimitData) GetAccountMaxSubmitJob() int64 { + if x != nil { + return x.AccountMaxSubmitJob + } + return 0 +} + +func (x *UserQuotasLimitData) GetAccountMaxRunJob() int64 { + if x != nil { + return x.AccountMaxRunJob + } + return 0 +} + +func (x *UserQuotasLimitData) GetUserMinCpu() int64 { + if x != nil { + return x.UserMinCpu + } + return 0 +} + +func (x *UserQuotasLimitData) GetUserMinNode() int64 { + if x != nil { + return x.UserMinNode + } + return 0 +} + +func (x *UserQuotasLimitData) GetMaxWallTime() int64 { + if x != nil { + return x.MaxWallTime + } + return 0 +} + var File_hpcAC_proto protoreflect.FileDescriptor var file_hpcAC_proto_rawDesc = []byte{ @@ -2722,6 +3712,7 @@ var file_hpcAC_proto_rawDesc = []byte{ 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, +<<<<<<< HEAD 0x12, 0x1e, 0x0a, 0x04, 0x6a, 0x6f, 0x62, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x68, 0x70, 0x63, 0x41, 0x43, 0x2e, 0x6a, 0x6f, 0x62, 0x52, 0x04, 0x6a, 0x6f, 0x62, 0x73, 0x22, 0x85, 0x04, 0x0a, 0x0a, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x12, @@ -2857,6 +3848,262 @@ var file_hpcAC_proto_rawDesc = []byte{ 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x68, 0x70, 0x63, 0x41, 0x43, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x42, 0x08, 0x5a, 0x06, 0x2f, 0x68, 0x70, 0x63, 0x41, 0x43, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +======= + 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, 0x41, 0x43, 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, 0xa8, 0x01, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x6d, 0x69, + 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x70, 0x70, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x70, 0x74, 0x79, 0x70, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x70, 0x70, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x70, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x73, + 0x74, 0x72, 0x4a, 0x6f, 0x62, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x73, 0x74, 0x72, 0x4a, 0x6f, 0x62, 0x4d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x72, 0x49, 0x44, 0x12, 0x3a, 0x0a, 0x0d, 0x6d, 0x61, 0x70, 0x41, 0x70, 0x70, 0x4a, + 0x6f, 0x62, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x68, + 0x70, 0x63, 0x41, 0x43, 0x2e, 0x4d, 0x61, 0x70, 0x41, 0x70, 0x70, 0x4a, 0x6f, 0x62, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x0d, 0x6d, 0x61, 0x70, 0x41, 0x70, 0x70, 0x4a, 0x6f, 0x62, 0x49, 0x6e, 0x66, + 0x6f, 0x22, 0x49, 0x0a, 0x0d, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0xeb, 0x04, 0x0a, + 0x0d, 0x4d, 0x61, 0x70, 0x41, 0x70, 0x70, 0x4a, 0x6f, 0x62, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x20, + 0x0a, 0x0c, 0x47, 0x41, 0x50, 0x5f, 0x43, 0x4d, 0x44, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x47, 0x41, 0x50, 0x43, 0x4d, 0x44, 0x46, 0x49, 0x4c, 0x45, + 0x12, 0x1b, 0x0a, 0x09, 0x47, 0x41, 0x50, 0x5f, 0x4e, 0x4e, 0x4f, 0x44, 0x45, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x47, 0x41, 0x50, 0x4e, 0x4e, 0x4f, 0x44, 0x45, 0x12, 0x26, 0x0a, + 0x0f, 0x47, 0x41, 0x50, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x47, 0x41, 0x50, 0x4e, 0x4f, 0x44, 0x45, 0x53, + 0x54, 0x52, 0x49, 0x4e, 0x47, 0x12, 0x26, 0x0a, 0x0f, 0x47, 0x41, 0x50, 0x5f, 0x53, 0x55, 0x42, + 0x4d, 0x49, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, + 0x47, 0x41, 0x50, 0x53, 0x55, 0x42, 0x4d, 0x49, 0x54, 0x54, 0x59, 0x50, 0x45, 0x12, 0x20, 0x0a, + 0x0c, 0x47, 0x41, 0x50, 0x5f, 0x4a, 0x4f, 0x42, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x47, 0x41, 0x50, 0x4a, 0x4f, 0x42, 0x4e, 0x41, 0x4d, 0x45, 0x12, + 0x20, 0x0a, 0x0c, 0x47, 0x41, 0x50, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x44, 0x49, 0x52, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x47, 0x41, 0x50, 0x57, 0x4f, 0x52, 0x4b, 0x44, 0x49, + 0x52, 0x12, 0x1b, 0x0a, 0x09, 0x47, 0x41, 0x50, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x47, 0x41, 0x50, 0x51, 0x55, 0x45, 0x55, 0x45, 0x12, 0x1b, + 0x0a, 0x09, 0x47, 0x41, 0x50, 0x5f, 0x4e, 0x50, 0x52, 0x4f, 0x43, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x47, 0x41, 0x50, 0x4e, 0x50, 0x52, 0x4f, 0x43, 0x12, 0x17, 0x0a, 0x07, 0x47, + 0x41, 0x50, 0x5f, 0x50, 0x50, 0x4e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x47, 0x41, + 0x50, 0x50, 0x50, 0x4e, 0x12, 0x19, 0x0a, 0x08, 0x47, 0x41, 0x50, 0x5f, 0x4e, 0x47, 0x50, 0x55, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x47, 0x41, 0x50, 0x4e, 0x47, 0x50, 0x55, 0x12, + 0x19, 0x0a, 0x08, 0x47, 0x41, 0x50, 0x5f, 0x4e, 0x44, 0x43, 0x55, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x47, 0x41, 0x50, 0x4e, 0x44, 0x43, 0x55, 0x12, 0x1e, 0x0a, 0x0b, 0x47, 0x41, + 0x50, 0x5f, 0x4a, 0x4f, 0x42, 0x5f, 0x4d, 0x45, 0x4d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x47, 0x41, 0x50, 0x4a, 0x4f, 0x42, 0x4d, 0x45, 0x4d, 0x12, 0x22, 0x0a, 0x0d, 0x47, 0x41, + 0x50, 0x5f, 0x57, 0x41, 0x4c, 0x4c, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x47, 0x41, 0x50, 0x57, 0x41, 0x4c, 0x4c, 0x54, 0x49, 0x4d, 0x45, 0x12, 0x23, + 0x0a, 0x0d, 0x47, 0x41, 0x50, 0x5f, 0x45, 0x58, 0x43, 0x4c, 0x55, 0x53, 0x49, 0x56, 0x45, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x47, 0x41, 0x50, 0x45, 0x58, 0x43, 0x4c, 0x55, 0x53, + 0x49, 0x56, 0x45, 0x12, 0x1f, 0x0a, 0x0b, 0x47, 0x41, 0x50, 0x5f, 0x41, 0x50, 0x50, 0x4e, 0x41, + 0x4d, 0x45, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x47, 0x41, 0x50, 0x41, 0x50, 0x50, + 0x4e, 0x41, 0x4d, 0x45, 0x12, 0x22, 0x0a, 0x0d, 0x47, 0x41, 0x50, 0x5f, 0x4d, 0x55, 0x4c, 0x54, + 0x49, 0x5f, 0x53, 0x55, 0x42, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x47, 0x41, 0x50, + 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x53, 0x55, 0x42, 0x12, 0x27, 0x0a, 0x10, 0x47, 0x41, 0x50, 0x5f, + 0x53, 0x54, 0x44, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x18, 0x11, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x47, 0x41, 0x50, 0x53, 0x54, 0x44, 0x4f, 0x55, 0x54, 0x46, 0x49, 0x4c, + 0x45, 0x12, 0x27, 0x0a, 0x10, 0x47, 0x41, 0x50, 0x5f, 0x53, 0x54, 0x44, 0x5f, 0x45, 0x52, 0x52, + 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x47, 0x41, 0x50, + 0x53, 0x54, 0x44, 0x45, 0x52, 0x52, 0x46, 0x49, 0x4c, 0x45, 0x22, 0x60, 0x0a, 0x0f, 0x46, 0x69, + 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x12, 0x0a, + 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 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, 0x27, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x13, 0x2e, 0x68, 0x70, 0x63, 0x41, 0x43, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x89, 0x01, 0x0a, + 0x0b, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, + 0x68, 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x68, 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x69, 0x72, 0x50, + 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x69, 0x72, 0x50, 0x61, + 0x74, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x4e, 0x75, 0x6d, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x4e, + 0x75, 0x6d, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x6f, 0x6c, 0x6c, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x6f, 0x6c, 0x6c, 0x44, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa6, 0x01, 0x0a, 0x0c, 0x46, 0x69, 0x6c, + 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x6c, 0x6c, + 0x4c, 0x69, 0x6e, 0x65, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0c, 0x61, 0x6c, 0x6c, 0x4c, 0x69, 0x6e, 0x65, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x18, 0x0a, + 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x12, 0x12, 0x0a, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x22, 0x48, 0x0a, 0x08, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, + 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, + 0x72, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x74, 0x72, 0x4a, 0x6f, 0x62, 0x4d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x74, 0x72, 0x4a, + 0x6f, 0x62, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x49, 0x44, 0x22, 0x57, 0x0a, 0x09, 0x51, + 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 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, 0x24, + 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x68, + 0x70, 0x63, 0x41, 0x43, 0x2e, 0x51, 0x75, 0x65, 0x75, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x22, 0xa9, 0x04, 0x0a, 0x09, 0x51, 0x75, 0x65, 0x75, 0x65, 0x44, 0x61, + 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x63, 0x6c, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x63, 0x6c, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, + 0x78, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x71, 0x75, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x71, 0x75, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x22, + 0x0a, 0x0c, 0x71, 0x75, 0x65, 0x4d, 0x69, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x63, 0x74, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x71, 0x75, 0x65, 0x4d, 0x69, 0x6e, 0x4e, 0x6f, 0x64, 0x65, + 0x63, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x71, 0x75, 0x65, 0x4d, 0x61, 0x78, 0x4e, 0x67, 0x70, 0x75, + 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x71, 0x75, 0x65, 0x4d, 0x61, 0x78, 0x4e, + 0x67, 0x70, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x71, 0x75, 0x65, 0x4d, 0x61, 0x78, 0x50, 0x50, + 0x4e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x71, 0x75, 0x65, 0x4d, 0x61, 0x78, 0x50, + 0x50, 0x4e, 0x12, 0x24, 0x0a, 0x0d, 0x71, 0x75, 0x65, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x52, + 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x71, 0x75, 0x65, 0x43, 0x68, + 0x61, 0x72, 0x67, 0x65, 0x52, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x71, 0x75, 0x65, 0x4d, + 0x61, 0x78, 0x4e, 0x63, 0x70, 0x75, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x71, + 0x75, 0x65, 0x4d, 0x61, 0x78, 0x4e, 0x63, 0x70, 0x75, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x71, 0x75, + 0x65, 0x4d, 0x61, 0x78, 0x4e, 0x64, 0x63, 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x71, 0x75, 0x65, 0x4d, 0x61, 0x78, 0x4e, 0x64, 0x63, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, + 0x71, 0x75, 0x65, 0x75, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x71, 0x75, 0x65, 0x75, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x71, 0x75, + 0x65, 0x4d, 0x69, 0x6e, 0x4e, 0x63, 0x70, 0x75, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x71, 0x75, 0x65, 0x4d, 0x69, 0x6e, 0x4e, 0x63, 0x70, 0x75, 0x73, 0x12, 0x22, 0x0a, 0x0c, + 0x71, 0x75, 0x65, 0x46, 0x72, 0x65, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x71, 0x75, 0x65, 0x46, 0x72, 0x65, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x73, + 0x12, 0x22, 0x0a, 0x0c, 0x71, 0x75, 0x65, 0x4d, 0x61, 0x78, 0x4e, 0x6f, 0x64, 0x65, 0x63, 0x74, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x71, 0x75, 0x65, 0x4d, 0x61, 0x78, 0x4e, 0x6f, + 0x64, 0x65, 0x63, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x71, 0x75, 0x65, 0x4d, 0x61, 0x78, 0x47, 0x70, + 0x75, 0x50, 0x4e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x71, 0x75, 0x65, 0x4d, 0x61, + 0x78, 0x47, 0x70, 0x75, 0x50, 0x4e, 0x12, 0x26, 0x0a, 0x0e, 0x71, 0x75, 0x65, 0x4d, 0x61, 0x78, + 0x57, 0x61, 0x6c, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, + 0x71, 0x75, 0x65, 0x4d, 0x61, 0x78, 0x57, 0x61, 0x6c, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x20, + 0x0a, 0x0b, 0x71, 0x75, 0x65, 0x4d, 0x61, 0x78, 0x44, 0x63, 0x75, 0x50, 0x4e, 0x18, 0x11, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x71, 0x75, 0x65, 0x4d, 0x61, 0x78, 0x44, 0x63, 0x75, 0x50, 0x4e, + 0x22, 0x65, 0x0a, 0x10, 0x51, 0x75, 0x65, 0x75, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 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, 0x2b, 0x0a, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x68, 0x70, 0x63, 0x41, 0x43, + 0x2e, 0x51, 0x75, 0x65, 0x75, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xf0, 0x03, 0x0a, 0x10, 0x51, 0x75, 0x65, 0x75, + 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, + 0x71, 0x75, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x71, 0x75, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x71, 0x75, 0x65, 0x4d, + 0x69, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, + 0x71, 0x75, 0x65, 0x4d, 0x69, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x63, 0x74, 0x12, 0x20, 0x0a, 0x0b, + 0x71, 0x75, 0x65, 0x4d, 0x61, 0x78, 0x4e, 0x67, 0x70, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0b, 0x71, 0x75, 0x65, 0x4d, 0x61, 0x78, 0x4e, 0x67, 0x70, 0x75, 0x73, 0x12, 0x1c, + 0x0a, 0x09, 0x71, 0x75, 0x65, 0x4d, 0x61, 0x78, 0x50, 0x50, 0x4e, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x09, 0x71, 0x75, 0x65, 0x4d, 0x61, 0x78, 0x50, 0x50, 0x4e, 0x12, 0x24, 0x0a, 0x0d, + 0x71, 0x75, 0x65, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x52, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x02, 0x52, 0x0d, 0x71, 0x75, 0x65, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x52, 0x61, + 0x74, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x71, 0x75, 0x65, 0x4d, 0x61, 0x78, 0x4e, 0x63, 0x70, 0x75, + 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x71, 0x75, 0x65, 0x4d, 0x61, 0x78, 0x4e, + 0x63, 0x70, 0x75, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x71, 0x75, 0x65, 0x4d, 0x61, 0x78, 0x4e, 0x64, + 0x63, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x71, 0x75, 0x65, 0x4d, 0x61, + 0x78, 0x4e, 0x64, 0x63, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x71, 0x75, 0x65, 0x75, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x71, 0x75, 0x65, 0x75, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x71, 0x75, 0x65, 0x4d, 0x69, 0x6e, 0x4e, 0x63, + 0x70, 0x75, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x71, 0x75, 0x65, 0x4d, 0x69, + 0x6e, 0x4e, 0x63, 0x70, 0x75, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x71, 0x75, 0x65, 0x46, 0x72, 0x65, + 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x71, 0x75, + 0x65, 0x46, 0x72, 0x65, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x71, 0x75, + 0x65, 0x4d, 0x61, 0x78, 0x4e, 0x6f, 0x64, 0x65, 0x63, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0c, 0x71, 0x75, 0x65, 0x4d, 0x61, 0x78, 0x4e, 0x6f, 0x64, 0x65, 0x63, 0x74, 0x12, 0x20, + 0x0a, 0x0b, 0x71, 0x75, 0x65, 0x4d, 0x61, 0x78, 0x47, 0x70, 0x75, 0x50, 0x4e, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0b, 0x71, 0x75, 0x65, 0x4d, 0x61, 0x78, 0x47, 0x70, 0x75, 0x50, 0x4e, + 0x12, 0x26, 0x0a, 0x0e, 0x71, 0x75, 0x65, 0x4d, 0x61, 0x78, 0x57, 0x61, 0x6c, 0x6c, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x71, 0x75, 0x65, 0x4d, 0x61, 0x78, + 0x57, 0x61, 0x6c, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x71, 0x75, 0x65, 0x4d, + 0x61, 0x78, 0x44, 0x63, 0x75, 0x50, 0x4e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x71, + 0x75, 0x65, 0x4d, 0x61, 0x78, 0x44, 0x63, 0x75, 0x50, 0x4e, 0x22, 0x6b, 0x0a, 0x13, 0x55, 0x73, + 0x65, 0x72, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 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, 0x2e, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x70, 0x63, 0x41, 0x43, 0x2e, 0x55, 0x73, + 0x65, 0x72, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x8f, 0x06, 0x0a, 0x13, 0x55, 0x73, 0x65, 0x72, + 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, + 0x0a, 0x75, 0x73, 0x65, 0x72, 0x4d, 0x61, 0x78, 0x43, 0x70, 0x75, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x4d, 0x61, 0x78, 0x43, 0x70, 0x75, 0x12, 0x1e, 0x0a, + 0x0a, 0x75, 0x73, 0x65, 0x72, 0x4d, 0x61, 0x78, 0x44, 0x63, 0x75, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x4d, 0x61, 0x78, 0x44, 0x63, 0x75, 0x12, 0x1e, 0x0a, + 0x0a, 0x75, 0x73, 0x65, 0x72, 0x4d, 0x61, 0x78, 0x47, 0x70, 0x75, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x4d, 0x61, 0x78, 0x47, 0x70, 0x75, 0x12, 0x1e, 0x0a, + 0x0a, 0x75, 0x73, 0x65, 0x72, 0x4d, 0x61, 0x78, 0x4d, 0x6c, 0x75, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x4d, 0x61, 0x78, 0x4d, 0x6c, 0x75, 0x12, 0x1e, 0x0a, + 0x0a, 0x75, 0x73, 0x65, 0x72, 0x4d, 0x61, 0x78, 0x4d, 0x65, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x4d, 0x61, 0x78, 0x4d, 0x65, 0x6d, 0x12, 0x20, 0x0a, + 0x0b, 0x75, 0x73, 0x65, 0x72, 0x4d, 0x61, 0x78, 0x4e, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x4d, 0x61, 0x78, 0x4e, 0x6f, 0x64, 0x65, 0x12, + 0x2a, 0x0a, 0x10, 0x75, 0x73, 0x65, 0x72, 0x4d, 0x61, 0x78, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, + 0x4a, 0x6f, 0x62, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x75, 0x73, 0x65, 0x72, 0x4d, + 0x61, 0x78, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4a, 0x6f, 0x62, 0x12, 0x24, 0x0a, 0x0d, 0x75, + 0x73, 0x65, 0x72, 0x4d, 0x61, 0x78, 0x52, 0x75, 0x6e, 0x4a, 0x6f, 0x62, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x4d, 0x61, 0x78, 0x52, 0x75, 0x6e, 0x4a, 0x6f, + 0x62, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x61, 0x78, 0x43, + 0x70, 0x75, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x4d, 0x61, 0x78, 0x43, 0x70, 0x75, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x4d, 0x61, 0x78, 0x44, 0x63, 0x75, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x61, 0x78, 0x44, 0x63, 0x75, 0x12, 0x24, 0x0a, + 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x61, 0x78, 0x47, 0x70, 0x75, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x61, 0x78, + 0x47, 0x70, 0x75, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x61, + 0x78, 0x4d, 0x6c, 0x75, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x4d, 0x61, 0x78, 0x4d, 0x6c, 0x75, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x61, 0x78, 0x4d, 0x65, 0x6d, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x61, 0x78, 0x4d, 0x65, 0x6d, 0x12, + 0x26, 0x0a, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x61, 0x78, 0x4e, 0x6f, 0x64, + 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x4d, 0x61, 0x78, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x4d, 0x61, 0x78, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4a, 0x6f, 0x62, 0x18, 0x11, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x61, 0x78, + 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4a, 0x6f, 0x62, 0x12, 0x2a, 0x0a, 0x10, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x61, 0x78, 0x52, 0x75, 0x6e, 0x4a, 0x6f, 0x62, 0x18, 0x12, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x10, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x61, 0x78, 0x52, + 0x75, 0x6e, 0x4a, 0x6f, 0x62, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x4d, 0x69, 0x6e, + 0x43, 0x70, 0x75, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x4d, + 0x69, 0x6e, 0x43, 0x70, 0x75, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x4d, 0x69, 0x6e, + 0x4e, 0x6f, 0x64, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, + 0x4d, 0x69, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x57, 0x61, + 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x6d, 0x61, + 0x78, 0x57, 0x61, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x32, 0xf2, 0x03, 0x0a, 0x05, 0x68, 0x70, + 0x63, 0x41, 0x43, 0x12, 0x30, 0x0a, 0x07, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x12, 0x11, + 0x2e, 0x68, 0x70, 0x63, 0x41, 0x43, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, + 0x71, 0x1a, 0x12, 0x2e, 0x68, 0x70, 0x63, 0x41, 0x43, 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, 0x41, 0x43, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x52, 0x65, + 0x71, 0x1a, 0x19, 0x2e, 0x68, 0x70, 0x63, 0x41, 0x43, 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, 0x41, + 0x43, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x1a, 0x14, + 0x2e, 0x68, 0x70, 0x63, 0x41, 0x43, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4a, 0x6f, 0x62, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x41, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x4d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x12, 0x14, 0x2e, 0x68, 0x70, 0x63, 0x41, 0x43, 0x2e, 0x4a, + 0x6f, 0x62, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x68, + 0x70, 0x63, 0x41, 0x43, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x4d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x39, 0x0a, 0x0b, 0x46, 0x69, 0x6c, 0x65, 0x43, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x2e, 0x68, 0x70, 0x63, 0x41, 0x43, 0x2e, 0x46, + 0x69, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x68, 0x70, 0x63, + 0x41, 0x43, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x36, 0x0a, 0x11, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x51, 0x75, 0x65, 0x75, + 0x65, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0f, 0x2e, 0x68, 0x70, 0x63, 0x41, 0x43, 0x2e, + 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x68, 0x70, 0x63, 0x41, 0x43, + 0x2e, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3d, 0x0a, 0x11, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x51, 0x75, 0x65, 0x75, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, + 0x0f, 0x2e, 0x68, 0x70, 0x63, 0x41, 0x43, 0x2e, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x71, + 0x1a, 0x17, 0x2e, 0x68, 0x70, 0x63, 0x41, 0x43, 0x2e, 0x51, 0x75, 0x65, 0x75, 0x65, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x43, 0x0a, 0x14, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x55, 0x73, 0x65, 0x72, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x4c, 0x69, 0x6d, 0x69, + 0x74, 0x12, 0x0f, 0x2e, 0x68, 0x70, 0x63, 0x41, 0x43, 0x2e, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, + 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x68, 0x70, 0x63, 0x41, 0x43, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x51, + 0x75, 0x6f, 0x74, 0x61, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x42, 0x08, + 0x5a, 0x06, 0x2f, 0x68, 0x70, 0x63, 0x41, 0x43, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +>>>>>>> ff7628a455a0eb264866e5bde762cd1c671eb8f3 } var ( @@ -2871,6 +4118,7 @@ func file_hpcAC_proto_rawDescGZIP() []byte { return file_hpcAC_proto_rawDescData } +<<<<<<< HEAD var file_hpcAC_proto_msgTypes = make([]protoimpl.MessageInfo, 20) var file_hpcAC_proto_goTypes = []interface{}{ (*JobManager)(nil), // 0: hpcAC.JobManager @@ -2917,6 +4165,60 @@ var file_hpcAC_proto_depIdxs = []int32{ 9, // 19: hpcAC.hpcAC.DeleteJob:output_type -> hpcAC.DeleteJobResp 14, // [14:20] is the sub-list for method output_type 8, // [8:14] is the sub-list for method input_type +======= +var file_hpcAC_proto_msgTypes = make([]protoimpl.MessageInfo, 22) +var file_hpcAC_proto_goTypes = []interface{}{ + (*JobManager)(nil), // 0: hpcAC.JobManager + (*JobManagerReq)(nil), // 1: hpcAC.JobManagerReq + (*ListJobManagerResp)(nil), // 2: hpcAC.ListJobManagerResp + (*Job)(nil), // 3: hpcAC.job + (*ListJobReq)(nil), // 4: hpcAC.ListJobReq + (*ListJobResp)(nil), // 5: hpcAC.ListJobResp + (*HistoryJob)(nil), // 6: hpcAC.historyJob + (*ListHistoryJobReq)(nil), // 7: hpcAC.ListHistoryJobReq + (*ListHistoryJobResp)(nil), // 8: hpcAC.ListHistoryJobResp + (*SubmitJobReq)(nil), // 9: hpcAC.SubmitJobReq + (*SubmitJobResp)(nil), // 10: hpcAC.SubmitJobResp + (*MapAppJobInfo)(nil), // 11: hpcAC.MapAppJobInfo + (*FileContentResp)(nil), // 12: hpcAC.FileContentResp + (*FileDataReq)(nil), // 13: hpcAC.FileDataReq + (*FileDataResp)(nil), // 14: hpcAC.FileDataResp + (*QueueReq)(nil), // 15: hpcAC.QueueReq + (*QueueResp)(nil), // 16: hpcAC.QueueResp + (*QueueData)(nil), // 17: hpcAC.QueueData + (*QueueDetailsResp)(nil), // 18: hpcAC.QueueDetailsResp + (*QueueDetailsData)(nil), // 19: hpcAC.QueueDetailsData + (*UserQuotasLimitResp)(nil), // 20: hpcAC.UserQuotasLimitResp + (*UserQuotasLimitData)(nil), // 21: hpcAC.UserQuotasLimitData +} +var file_hpcAC_proto_depIdxs = []int32{ + 0, // 0: hpcAC.ListJobManagerResp.job_managers:type_name -> hpcAC.JobManager + 3, // 1: hpcAC.ListJobResp.jobs:type_name -> hpcAC.job + 6, // 2: hpcAC.ListHistoryJobResp.history_jobs:type_name -> hpcAC.historyJob + 11, // 3: hpcAC.SubmitJobReq.mapAppJobInfo:type_name -> hpcAC.MapAppJobInfo + 14, // 4: hpcAC.FileContentResp.data:type_name -> hpcAC.FileDataResp + 17, // 5: hpcAC.QueueResp.data:type_name -> hpcAC.QueueData + 19, // 6: hpcAC.QueueDetailsResp.data:type_name -> hpcAC.QueueDetailsData + 21, // 7: hpcAC.UserQuotasLimitResp.data:type_name -> hpcAC.UserQuotasLimitData + 4, // 8: hpcAC.hpcAC.ListJob:input_type -> hpcAC.ListJobReq + 7, // 9: hpcAC.hpcAC.ListHistoryJob:input_type -> hpcAC.ListHistoryJobReq + 9, // 10: hpcAC.hpcAC.SubmitJob:input_type -> hpcAC.SubmitJobReq + 1, // 11: hpcAC.hpcAC.ListJobManager:input_type -> hpcAC.JobManagerReq + 13, // 12: hpcAC.hpcAC.FileContent:input_type -> hpcAC.FileDataReq + 15, // 13: hpcAC.hpcAC.SelectQueueByUser:input_type -> hpcAC.QueueReq + 15, // 14: hpcAC.hpcAC.QueryQueueDetails:input_type -> hpcAC.QueueReq + 15, // 15: hpcAC.hpcAC.QueryUserQuotasLimit:input_type -> hpcAC.QueueReq + 5, // 16: hpcAC.hpcAC.ListJob:output_type -> hpcAC.ListJobResp + 8, // 17: hpcAC.hpcAC.ListHistoryJob:output_type -> hpcAC.ListHistoryJobResp + 10, // 18: hpcAC.hpcAC.SubmitJob:output_type -> hpcAC.SubmitJobResp + 2, // 19: hpcAC.hpcAC.ListJobManager:output_type -> hpcAC.ListJobManagerResp + 12, // 20: hpcAC.hpcAC.FileContent:output_type -> hpcAC.FileContentResp + 16, // 21: hpcAC.hpcAC.SelectQueueByUser:output_type -> hpcAC.QueueResp + 18, // 22: hpcAC.hpcAC.QueryQueueDetails:output_type -> hpcAC.QueueDetailsResp + 20, // 23: hpcAC.hpcAC.QueryUserQuotasLimit:output_type -> hpcAC.UserQuotasLimitResp + 16, // [16:24] is the sub-list for method output_type + 8, // [8:16] is the sub-list for method input_type +>>>>>>> ff7628a455a0eb264866e5bde762cd1c671eb8f3 8, // [8:8] is the sub-list for extension type_name 8, // [8:8] is the sub-list for extension extendee 0, // [0:8] is the sub-list for field type_name @@ -3156,6 +4458,126 @@ func file_hpcAC_proto_init() { return nil } } + file_hpcAC_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FileContentResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hpcAC_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FileDataReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hpcAC_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FileDataResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hpcAC_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueueReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hpcAC_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueueResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hpcAC_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueueData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hpcAC_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueueDetailsResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hpcAC_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueueDetailsData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hpcAC_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UserQuotasLimitResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hpcAC_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UserQuotasLimitData); 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{ @@ -3163,7 +4585,11 @@ func file_hpcAC_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_hpcAC_proto_rawDesc, NumEnums: 0, +<<<<<<< HEAD NumMessages: 20, +======= + NumMessages: 22, +>>>>>>> ff7628a455a0eb264866e5bde762cd1c671eb8f3 NumExtensions: 0, NumServices: 1, }, diff --git a/adaptor/PCM-HPC/PCM-AC/rpc/hpcAC/hpcAC_grpc.pb.go b/adaptor/PCM-HPC/PCM-AC/rpc/hpcAC/hpcAC_grpc.pb.go index 49961964..2551bb39 100644 --- a/adaptor/PCM-HPC/PCM-AC/rpc/hpcAC/hpcAC_grpc.pb.go +++ b/adaptor/PCM-HPC/PCM-AC/rpc/hpcAC/hpcAC_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.2.0 -// - protoc v3.12.4 +// - protoc v3.21.12 // source: hpcAC.proto package hpcAC @@ -30,10 +30,21 @@ type HpcACClient interface { SubmitJob(ctx context.Context, in *SubmitJobReq, opts ...grpc.CallOption) (*SubmitJobResp, error) // ListJobManager list all job managers ListJobManager(ctx context.Context, in *JobManagerReq, opts ...grpc.CallOption) (*ListJobManagerResp, error) +<<<<<<< HEAD // GetJobDetail get job detail GetJobDetail(ctx context.Context, in *JobDetailReq, opts ...grpc.CallOption) (*GetJobDetailResp, error) // DeleteJob delete job DeleteJob(ctx context.Context, in *DeleteJobReq, opts ...grpc.CallOption) (*DeleteJobResp, error) +======= + // FileContent 查看文件内容 + FileContent(ctx context.Context, in *FileDataReq, opts ...grpc.CallOption) (*FileContentResp, error) + // SelectQueueByUser 查询用户可访问队列列表 + SelectQueueByUser(ctx context.Context, in *QueueReq, opts ...grpc.CallOption) (*QueueResp, error) + // QueryQueueDetails 查询队列资源详细信息 + QueryQueueDetails(ctx context.Context, in *QueueReq, opts ...grpc.CallOption) (*QueueDetailsResp, error) + // /QueryUserQuotasLimit 查询用户资源限制信息 + QueryUserQuotasLimit(ctx context.Context, in *QueueReq, opts ...grpc.CallOption) (*UserQuotasLimitResp, error) +>>>>>>> ff7628a455a0eb264866e5bde762cd1c671eb8f3 } type hpcACClient struct { @@ -80,18 +91,48 @@ func (c *hpcACClient) ListJobManager(ctx context.Context, in *JobManagerReq, opt return out, nil } +<<<<<<< HEAD func (c *hpcACClient) GetJobDetail(ctx context.Context, in *JobDetailReq, opts ...grpc.CallOption) (*GetJobDetailResp, error) { out := new(GetJobDetailResp) err := c.cc.Invoke(ctx, "/hpcAC.hpcAC/GetJobDetail", in, out, opts...) +======= +func (c *hpcACClient) FileContent(ctx context.Context, in *FileDataReq, opts ...grpc.CallOption) (*FileContentResp, error) { + out := new(FileContentResp) + err := c.cc.Invoke(ctx, "/hpcAC.hpcAC/FileContent", in, out, opts...) +>>>>>>> ff7628a455a0eb264866e5bde762cd1c671eb8f3 if err != nil { return nil, err } return out, nil } +<<<<<<< HEAD func (c *hpcACClient) DeleteJob(ctx context.Context, in *DeleteJobReq, opts ...grpc.CallOption) (*DeleteJobResp, error) { out := new(DeleteJobResp) err := c.cc.Invoke(ctx, "/hpcAC.hpcAC/DeleteJob", in, out, opts...) +======= +func (c *hpcACClient) SelectQueueByUser(ctx context.Context, in *QueueReq, opts ...grpc.CallOption) (*QueueResp, error) { + out := new(QueueResp) + err := c.cc.Invoke(ctx, "/hpcAC.hpcAC/SelectQueueByUser", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *hpcACClient) QueryQueueDetails(ctx context.Context, in *QueueReq, opts ...grpc.CallOption) (*QueueDetailsResp, error) { + out := new(QueueDetailsResp) + err := c.cc.Invoke(ctx, "/hpcAC.hpcAC/QueryQueueDetails", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *hpcACClient) QueryUserQuotasLimit(ctx context.Context, in *QueueReq, opts ...grpc.CallOption) (*UserQuotasLimitResp, error) { + out := new(UserQuotasLimitResp) + err := c.cc.Invoke(ctx, "/hpcAC.hpcAC/QueryUserQuotasLimit", in, out, opts...) +>>>>>>> ff7628a455a0eb264866e5bde762cd1c671eb8f3 if err != nil { return nil, err } @@ -110,10 +151,21 @@ type HpcACServer interface { SubmitJob(context.Context, *SubmitJobReq) (*SubmitJobResp, error) // ListJobManager list all job managers ListJobManager(context.Context, *JobManagerReq) (*ListJobManagerResp, error) +<<<<<<< HEAD // GetJobDetail get job detail GetJobDetail(context.Context, *JobDetailReq) (*GetJobDetailResp, error) // DeleteJob delete job DeleteJob(context.Context, *DeleteJobReq) (*DeleteJobResp, error) +======= + // FileContent 查看文件内容 + FileContent(context.Context, *FileDataReq) (*FileContentResp, error) + // SelectQueueByUser 查询用户可访问队列列表 + SelectQueueByUser(context.Context, *QueueReq) (*QueueResp, error) + // QueryQueueDetails 查询队列资源详细信息 + QueryQueueDetails(context.Context, *QueueReq) (*QueueDetailsResp, error) + // /QueryUserQuotasLimit 查询用户资源限制信息 + QueryUserQuotasLimit(context.Context, *QueueReq) (*UserQuotasLimitResp, error) +>>>>>>> ff7628a455a0eb264866e5bde762cd1c671eb8f3 mustEmbedUnimplementedHpcACServer() } @@ -133,11 +185,25 @@ func (UnimplementedHpcACServer) SubmitJob(context.Context, *SubmitJobReq) (*Subm func (UnimplementedHpcACServer) ListJobManager(context.Context, *JobManagerReq) (*ListJobManagerResp, error) { return nil, status.Errorf(codes.Unimplemented, "method ListJobManager not implemented") } +<<<<<<< HEAD func (UnimplementedHpcACServer) GetJobDetail(context.Context, *JobDetailReq) (*GetJobDetailResp, error) { return nil, status.Errorf(codes.Unimplemented, "method GetJobDetail not implemented") } func (UnimplementedHpcACServer) DeleteJob(context.Context, *DeleteJobReq) (*DeleteJobResp, error) { return nil, status.Errorf(codes.Unimplemented, "method DeleteJob not implemented") +======= +func (UnimplementedHpcACServer) FileContent(context.Context, *FileDataReq) (*FileContentResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method FileContent not implemented") +} +func (UnimplementedHpcACServer) SelectQueueByUser(context.Context, *QueueReq) (*QueueResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method SelectQueueByUser not implemented") +} +func (UnimplementedHpcACServer) QueryQueueDetails(context.Context, *QueueReq) (*QueueDetailsResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method QueryQueueDetails not implemented") +} +func (UnimplementedHpcACServer) QueryUserQuotasLimit(context.Context, *QueueReq) (*UserQuotasLimitResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method QueryUserQuotasLimit not implemented") +>>>>>>> ff7628a455a0eb264866e5bde762cd1c671eb8f3 } func (UnimplementedHpcACServer) mustEmbedUnimplementedHpcACServer() {} @@ -224,12 +290,18 @@ func _HpcAC_ListJobManager_Handler(srv interface{}, ctx context.Context, dec fun return interceptor(ctx, in, info, handler) } +<<<<<<< HEAD func _HpcAC_GetJobDetail_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(JobDetailReq) +======= +func _HpcAC_FileContent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(FileDataReq) +>>>>>>> ff7628a455a0eb264866e5bde762cd1c671eb8f3 if err := dec(in); err != nil { return nil, err } if interceptor == nil { +<<<<<<< HEAD return srv.(HpcACServer).GetJobDetail(ctx, in) } info := &grpc.UnaryServerInfo{ @@ -238,16 +310,32 @@ func _HpcAC_GetJobDetail_Handler(srv interface{}, ctx context.Context, dec func( } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(HpcACServer).GetJobDetail(ctx, req.(*JobDetailReq)) +======= + return srv.(HpcACServer).FileContent(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/hpcAC.hpcAC/FileContent", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(HpcACServer).FileContent(ctx, req.(*FileDataReq)) +>>>>>>> ff7628a455a0eb264866e5bde762cd1c671eb8f3 } return interceptor(ctx, in, info, handler) } +<<<<<<< HEAD func _HpcAC_DeleteJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(DeleteJobReq) +======= +func _HpcAC_SelectQueueByUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueueReq) +>>>>>>> ff7628a455a0eb264866e5bde762cd1c671eb8f3 if err := dec(in); err != nil { return nil, err } if interceptor == nil { +<<<<<<< HEAD return srv.(HpcACServer).DeleteJob(ctx, in) } info := &grpc.UnaryServerInfo{ @@ -256,6 +344,52 @@ func _HpcAC_DeleteJob_Handler(srv interface{}, ctx context.Context, dec func(int } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(HpcACServer).DeleteJob(ctx, req.(*DeleteJobReq)) +======= + return srv.(HpcACServer).SelectQueueByUser(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/hpcAC.hpcAC/SelectQueueByUser", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(HpcACServer).SelectQueueByUser(ctx, req.(*QueueReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _HpcAC_QueryQueueDetails_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueueReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(HpcACServer).QueryQueueDetails(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/hpcAC.hpcAC/QueryQueueDetails", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(HpcACServer).QueryQueueDetails(ctx, req.(*QueueReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _HpcAC_QueryUserQuotasLimit_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueueReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(HpcACServer).QueryUserQuotasLimit(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/hpcAC.hpcAC/QueryUserQuotasLimit", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(HpcACServer).QueryUserQuotasLimit(ctx, req.(*QueueReq)) +>>>>>>> ff7628a455a0eb264866e5bde762cd1c671eb8f3 } return interceptor(ctx, in, info, handler) } @@ -284,12 +418,29 @@ var HpcAC_ServiceDesc = grpc.ServiceDesc{ Handler: _HpcAC_ListJobManager_Handler, }, { +<<<<<<< HEAD MethodName: "GetJobDetail", Handler: _HpcAC_GetJobDetail_Handler, }, { MethodName: "DeleteJob", Handler: _HpcAC_DeleteJob_Handler, +======= + MethodName: "FileContent", + Handler: _HpcAC_FileContent_Handler, + }, + { + MethodName: "SelectQueueByUser", + Handler: _HpcAC_SelectQueueByUser_Handler, + }, + { + MethodName: "QueryQueueDetails", + Handler: _HpcAC_QueryQueueDetails_Handler, + }, + { + MethodName: "QueryUserQuotasLimit", + Handler: _HpcAC_QueryUserQuotasLimit_Handler, +>>>>>>> ff7628a455a0eb264866e5bde762cd1c671eb8f3 }, }, Streams: []grpc.StreamDesc{}, diff --git a/adaptor/PCM-HPC/PCM-AC/rpc/hpcacclient/hpcac.go b/adaptor/PCM-HPC/PCM-AC/rpc/hpcacclient/hpcac.go index e6c67223..580383db 100644 --- a/adaptor/PCM-HPC/PCM-AC/rpc/hpcacclient/hpcac.go +++ b/adaptor/PCM-HPC/PCM-AC/rpc/hpcacclient/hpcac.go @@ -13,6 +13,7 @@ import ( ) type ( +<<<<<<< HEAD DeleteJobReq = hpcAC.DeleteJobReq DeleteJobResp = hpcAC.DeleteJobResp GetJobDetailResp = hpcAC.GetJobDetailResp @@ -32,6 +33,30 @@ type ( MapAppJobInfo = hpcAC.MapAppJobInfo SubmitJobReq = hpcAC.SubmitJobReq SubmitJobResp = hpcAC.SubmitJobResp +======= + FileContentResp = hpcAC.FileContentResp + FileDataReq = hpcAC.FileDataReq + FileDataResp = hpcAC.FileDataResp + HistoryJob = hpcAC.HistoryJob + Job = hpcAC.Job + JobManager = hpcAC.JobManager + JobManagerReq = hpcAC.JobManagerReq + ListHistoryJobReq = hpcAC.ListHistoryJobReq + ListHistoryJobResp = hpcAC.ListHistoryJobResp + ListJobManagerResp = hpcAC.ListJobManagerResp + ListJobReq = hpcAC.ListJobReq + ListJobResp = hpcAC.ListJobResp + MapAppJobInfo = hpcAC.MapAppJobInfo + QueueData = hpcAC.QueueData + QueueDetailsData = hpcAC.QueueDetailsData + QueueDetailsResp = hpcAC.QueueDetailsResp + QueueReq = hpcAC.QueueReq + QueueResp = hpcAC.QueueResp + SubmitJobReq = hpcAC.SubmitJobReq + SubmitJobResp = hpcAC.SubmitJobResp + UserQuotasLimitData = hpcAC.UserQuotasLimitData + UserQuotasLimitResp = hpcAC.UserQuotasLimitResp +>>>>>>> ff7628a455a0eb264866e5bde762cd1c671eb8f3 HpcAC interface { // ListJob list all jobs @@ -42,10 +67,21 @@ type ( SubmitJob(ctx context.Context, in *SubmitJobReq, opts ...grpc.CallOption) (*SubmitJobResp, error) // ListJobManager list all job managers ListJobManager(ctx context.Context, in *JobManagerReq, opts ...grpc.CallOption) (*ListJobManagerResp, error) +<<<<<<< HEAD // GetJobDetail get job detail GetJobDetail(ctx context.Context, in *JobDetailReq, opts ...grpc.CallOption) (*GetJobDetailResp, error) // DeleteJob delete job DeleteJob(ctx context.Context, in *DeleteJobReq, opts ...grpc.CallOption) (*DeleteJobResp, error) +======= + // FileContent 查看文件内容 + FileContent(ctx context.Context, in *FileDataReq, opts ...grpc.CallOption) (*FileContentResp, error) + // SelectQueueByUser 查询用户可访问队列列表 + SelectQueueByUser(ctx context.Context, in *QueueReq, opts ...grpc.CallOption) (*QueueResp, error) + // QueryQueueDetails 查询队列资源详细信息 + QueryQueueDetails(ctx context.Context, in *QueueReq, opts ...grpc.CallOption) (*QueueDetailsResp, error) + // QueryUserQuotasLimit 查询用户资源限制信息 + QueryUserQuotasLimit(ctx context.Context, in *QueueReq, opts ...grpc.CallOption) (*UserQuotasLimitResp, error) +>>>>>>> ff7628a455a0eb264866e5bde762cd1c671eb8f3 } defaultHpcAC struct { @@ -83,6 +119,7 @@ func (m *defaultHpcAC) ListJobManager(ctx context.Context, in *JobManagerReq, op return client.ListJobManager(ctx, in, opts...) } +<<<<<<< HEAD // GetJobDetail get job detail func (m *defaultHpcAC) GetJobDetail(ctx context.Context, in *JobDetailReq, opts ...grpc.CallOption) (*GetJobDetailResp, error) { client := hpcAC.NewHpcACClient(m.cli.Conn()) @@ -93,4 +130,28 @@ func (m *defaultHpcAC) GetJobDetail(ctx context.Context, in *JobDetailReq, opts func (m *defaultHpcAC) DeleteJob(ctx context.Context, in *DeleteJobReq, opts ...grpc.CallOption) (*DeleteJobResp, error) { client := hpcAC.NewHpcACClient(m.cli.Conn()) return client.DeleteJob(ctx, in, opts...) +======= +// FileContent 查看文件内容 +func (m *defaultHpcAC) FileContent(ctx context.Context, in *FileDataReq, opts ...grpc.CallOption) (*FileContentResp, error) { + client := hpcAC.NewHpcACClient(m.cli.Conn()) + return client.FileContent(ctx, in, opts...) +} + +// SelectQueueByUser 查询用户可访问队列列表 +func (m *defaultHpcAC) SelectQueueByUser(ctx context.Context, in *QueueReq, opts ...grpc.CallOption) (*QueueResp, error) { + client := hpcAC.NewHpcACClient(m.cli.Conn()) + return client.SelectQueueByUser(ctx, in, opts...) +} + +// QueryQueueDetails 查询队列资源详细信息 +func (m *defaultHpcAC) QueryQueueDetails(ctx context.Context, in *QueueReq, opts ...grpc.CallOption) (*QueueDetailsResp, error) { + client := hpcAC.NewHpcACClient(m.cli.Conn()) + return client.QueryQueueDetails(ctx, in, opts...) +} + +// QueryUserQuotasLimit 查询用户资源限制信息 +func (m *defaultHpcAC) QueryUserQuotasLimit(ctx context.Context, in *QueueReq, opts ...grpc.CallOption) (*UserQuotasLimitResp, error) { + client := hpcAC.NewHpcACClient(m.cli.Conn()) + return client.QueryUserQuotasLimit(ctx, in, opts...) +>>>>>>> ff7628a455a0eb264866e5bde762cd1c671eb8f3 } diff --git a/adaptor/PCM-HPC/PCM-AC/rpc/internal/config/shuguangConfig.go b/adaptor/PCM-HPC/PCM-AC/rpc/internal/config/shuguangConfig.go index 46b20eaf..7ce0d3bf 100644 --- a/adaptor/PCM-HPC/PCM-AC/rpc/internal/config/shuguangConfig.go +++ b/adaptor/PCM-HPC/PCM-AC/rpc/internal/config/shuguangConfig.go @@ -9,4 +9,5 @@ type ShuguangConf struct { Password string `json:"Password"` OrgId string `json:"OrgId"` Layout string `json:"Layout"` + EndPoint string `json:"EndPoint"` } diff --git a/adaptor/PCM-HPC/PCM-AC/rpc/internal/logic/filecontentlogic.go b/adaptor/PCM-HPC/PCM-AC/rpc/internal/logic/filecontentlogic.go new file mode 100644 index 00000000..c65f7080 --- /dev/null +++ b/adaptor/PCM-HPC/PCM-AC/rpc/internal/logic/filecontentlogic.go @@ -0,0 +1,43 @@ +package logic + +import ( + "PCM/adaptor/PCM-HPC/PCM-AC/rpc/internal/util" + "PCM/common/tool/httpclient" + "context" + "strconv" + + "PCM/adaptor/PCM-HPC/PCM-AC/rpc/hpcAC" + "PCM/adaptor/PCM-HPC/PCM-AC/rpc/internal/svc" + + "github.com/zeromicro/go-zero/core/logx" +) + +type FileContentLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger +} + +func NewFileContentLogic(ctx context.Context, svcCtx *svc.ServiceContext) *FileContentLogic { + return &FileContentLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +// FileContent 查看文件内容 +func (l *FileContentLogic) FileContent(in *hpcAC.FileDataReq) (*hpcAC.FileContentResp, error) { + var resp hpcAC.FileContentResp + url := "/hpc/openapi/v2/file/content" + triggerNum := strconv.FormatInt(int64(in.TriggerNum), 10) + queryParams := map[string]string{ + "hostName": in.HostName, + "dirPath": in.DirPath, + "triggerNum": triggerNum, + "rollDirection": in.RollDirection, + } + _, err := util.Post(&l.ctx, url, httpclient.ApplicationFromUrlencoded, nil, nil, nil, nil, &queryParams, &resp) + + return &resp, err +} diff --git a/adaptor/PCM-HPC/PCM-AC/rpc/internal/logic/queryqueuedetailslogic.go b/adaptor/PCM-HPC/PCM-AC/rpc/internal/logic/queryqueuedetailslogic.go new file mode 100644 index 00000000..992deb12 --- /dev/null +++ b/adaptor/PCM-HPC/PCM-AC/rpc/internal/logic/queryqueuedetailslogic.go @@ -0,0 +1,34 @@ +package logic + +import ( + "PCM/adaptor/PCM-HPC/PCM-AC/rpc/hpcAC" + "PCM/adaptor/PCM-HPC/PCM-AC/rpc/internal/svc" + "PCM/adaptor/PCM-HPC/PCM-AC/rpc/internal/util" + "context" + "fmt" + + "github.com/zeromicro/go-zero/core/logx" +) + +type QueryQueueDetailsLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger +} + +func NewQueryQueueDetailsLogic(ctx context.Context, svcCtx *svc.ServiceContext) *QueryQueueDetailsLogic { + return &QueryQueueDetailsLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +// QueryQueueDetails 查询队列资源详细信息 +func (l *QueryQueueDetailsLogic) QueryQueueDetails(in *hpcAC.QueueReq) (*hpcAC.QueueDetailsResp, error) { + resp := hpcAC.QueueDetailsResp{} + url := fmt.Sprintf("/hpc/openapi/v2/userquotas/queues?strJobManagerID=%s", in.StrJobManagerID) + _, err := util.Get(&l.ctx, url, nil, nil, &resp) + + return &resp, err +} diff --git a/adaptor/PCM-HPC/PCM-AC/rpc/internal/logic/queryuserquotaslimitlogic.go b/adaptor/PCM-HPC/PCM-AC/rpc/internal/logic/queryuserquotaslimitlogic.go new file mode 100644 index 00000000..d35c4d59 --- /dev/null +++ b/adaptor/PCM-HPC/PCM-AC/rpc/internal/logic/queryuserquotaslimitlogic.go @@ -0,0 +1,35 @@ +package logic + +import ( + "PCM/adaptor/PCM-HPC/PCM-AC/rpc/internal/util" + "context" + "fmt" + + "PCM/adaptor/PCM-HPC/PCM-AC/rpc/hpcAC" + "PCM/adaptor/PCM-HPC/PCM-AC/rpc/internal/svc" + + "github.com/zeromicro/go-zero/core/logx" +) + +type QueryUserQuotasLimitLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger +} + +func NewQueryUserQuotasLimitLogic(ctx context.Context, svcCtx *svc.ServiceContext) *QueryUserQuotasLimitLogic { + return &QueryUserQuotasLimitLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +// QueryUserQuotasLimit 查询用户资源限制信息 +func (l *QueryUserQuotasLimitLogic) QueryUserQuotasLimit(in *hpcAC.QueueReq) (*hpcAC.UserQuotasLimitResp, error) { + resp := hpcAC.UserQuotasLimitResp{} + url := fmt.Sprintf("hpc/openapi/v2/userquotas/userlimit?strJobManagerID=%s", in.StrJobManagerID) + _, err := util.Get(&l.ctx, url, nil, nil, &resp) + + return &resp, err +} diff --git a/adaptor/PCM-HPC/PCM-AC/rpc/internal/logic/selectqueuebyuserlogic.go b/adaptor/PCM-HPC/PCM-AC/rpc/internal/logic/selectqueuebyuserlogic.go new file mode 100644 index 00000000..556e564b --- /dev/null +++ b/adaptor/PCM-HPC/PCM-AC/rpc/internal/logic/selectqueuebyuserlogic.go @@ -0,0 +1,35 @@ +package logic + +import ( + "PCM/adaptor/PCM-HPC/PCM-AC/rpc/internal/util" + "context" + "fmt" + + "PCM/adaptor/PCM-HPC/PCM-AC/rpc/hpcAC" + "PCM/adaptor/PCM-HPC/PCM-AC/rpc/internal/svc" + + "github.com/zeromicro/go-zero/core/logx" +) + +type SelectQueueByUserLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger +} + +func NewSelectQueueByUserLogic(ctx context.Context, svcCtx *svc.ServiceContext) *SelectQueueByUserLogic { + return &SelectQueueByUserLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +// SelectQueueByUser 查询用户可访问队列列表 +func (l *SelectQueueByUserLogic) SelectQueueByUser(in *hpcAC.QueueReq) (*hpcAC.QueueResp, error) { + resp := hpcAC.QueueResp{} + url := fmt.Sprintf("/hpc/openapi/v2/queuenames/users/%s/?strJobManagerID=%s", in.User, in.StrJobManagerID) + _, err := util.Get(&l.ctx, url, nil, nil, &resp) + + return &resp, err +} diff --git a/adaptor/PCM-HPC/PCM-AC/rpc/internal/server/hpcacserver.go b/adaptor/PCM-HPC/PCM-AC/rpc/internal/server/hpcacserver.go index 7a33dd9f..f8501940 100644 --- a/adaptor/PCM-HPC/PCM-AC/rpc/internal/server/hpcacserver.go +++ b/adaptor/PCM-HPC/PCM-AC/rpc/internal/server/hpcacserver.go @@ -46,6 +46,7 @@ func (s *HpcACServer) ListJobManager(ctx context.Context, in *hpcAC.JobManagerRe return l.ListJobManager(in) } +<<<<<<< HEAD // GetJobDetail get job detail func (s *HpcACServer) GetJobDetail(ctx context.Context, in *hpcAC.JobDetailReq) (*hpcAC.GetJobDetailResp, error) { l := logic.NewGetJobDetailLogic(ctx, s.svcCtx) @@ -56,4 +57,28 @@ func (s *HpcACServer) GetJobDetail(ctx context.Context, in *hpcAC.JobDetailReq) func (s *HpcACServer) DeleteJob(ctx context.Context, in *hpcAC.DeleteJobReq) (*hpcAC.DeleteJobResp, error) { l := logic.NewDeleteJobLogic(ctx, s.svcCtx) return l.DeleteJob(in) +======= +// FileContent 查看文件内容 +func (s *HpcACServer) FileContent(ctx context.Context, in *hpcAC.FileDataReq) (*hpcAC.FileContentResp, error) { + l := logic.NewFileContentLogic(ctx, s.svcCtx) + return l.FileContent(in) +} + +// SelectQueueByUser 查询用户可访问队列列表 +func (s *HpcACServer) SelectQueueByUser(ctx context.Context, in *hpcAC.QueueReq) (*hpcAC.QueueResp, error) { + l := logic.NewSelectQueueByUserLogic(ctx, s.svcCtx) + return l.SelectQueueByUser(in) +} + +// QueryQueueDetails 查询队列资源详细信息 +func (s *HpcACServer) QueryQueueDetails(ctx context.Context, in *hpcAC.QueueReq) (*hpcAC.QueueDetailsResp, error) { + l := logic.NewQueryQueueDetailsLogic(ctx, s.svcCtx) + return l.QueryQueueDetails(in) +} + +// QueryUserQuotasLimit 查询用户资源限制信息 +func (s *HpcACServer) QueryUserQuotasLimit(ctx context.Context, in *hpcAC.QueueReq) (*hpcAC.UserQuotasLimitResp, error) { + l := logic.NewQueryUserQuotasLimitLogic(ctx, s.svcCtx) + return l.QueryUserQuotasLimit(in) +>>>>>>> ff7628a455a0eb264866e5bde762cd1c671eb8f3 } diff --git a/adaptor/PCM-HPC/PCM-AC/rpc/internal/util/client.go b/adaptor/PCM-HPC/PCM-AC/rpc/internal/util/client.go new file mode 100644 index 00000000..941c347b --- /dev/null +++ b/adaptor/PCM-HPC/PCM-AC/rpc/internal/util/client.go @@ -0,0 +1,168 @@ +package util + +import ( + "PCM/adaptor/PCM-HPC/PCM-AC/rpc/internal/config" + "PCM/adaptor/PCM-HPC/PCM-AC/rpc/internal/svc" + "PCM/common/tool/httpclient" + "context" + "errors" + "github.com/go-resty/resty/v2" + "github.com/zeromicro/go-zero/core/conf" + "github.com/zeromicro/go-zero/core/logx" + "runtime" +) + +// NewRequest 构造一个请求 +func NewRequest(cli *resty.Client) (*resty.Request, error) { + //TODO 获取AC的token + var token string + if GetTokenState(Gtoken) { + token = Gtoken + } else { + token = GetToken() + Gtoken = token + } + cli.SetHeader("token", token).SetBaseURL(getBaseUrl()) + return cli.R(), nil +} + +var baseUrl string + +func getBaseUrl() string { + if len(baseUrl) > 0 { + return baseUrl + } + var cf config.Config + conf.MustLoad(*configFile, &cf) + ctx := svc.NewServiceContext(cf) + baseUrl := ctx.Config.ShuguangConf.EndPoint + return baseUrl +} + +// Get 方法 +func Get(ctx *context.Context, url string, pathParams *map[string]string, queryParams *map[string]string, resultData interface{}) (*resty.Response, error) { + // 获取上层调用者PC,文件名,所在行 + funcName := GetCallFunc() + + client := httpclient.NewHttpsClient() + req, err := NewRequest(client) + if err != nil { + logx.WithContext(*ctx).Errorf("AC", "Func: %s, Get Request URL : %s, Init Request Client err: %s", funcName, url, err.Error()) + return nil, err + } + + req = req. + SetHeader(httpclient.ContentType, httpclient.ApplicationJson). + SetResult(resultData) + if pathParams != nil { + req.SetPathParams(*pathParams) + } + if queryParams != nil { + req.SetQueryParams(*queryParams) + } + + result, err := req.Get(url) + + return ResponseWithLog(funcName, req, result, err) +} + +// Delete 方法 +func Delete(ctx *context.Context, url string, pathParams *map[string]string, body *string, resultData interface{}) (*resty.Response, error) { + + // 获取上层调用者PC,文件名,所在行 + funcName := GetCallFunc() + + client := httpclient.NewHttpsClient() + req, err := NewRequest(client) + if err != nil { + logx.WithContext(*ctx).Errorf("AC", "Func: %s, Delete Request URL : %s, Init Request Client err: %s", funcName, url, err.Error()) + return nil, err + } + + req = req. + SetHeader(httpclient.ContentType, httpclient.ApplicationJson). + SetResult(resultData) + if body != nil { + req.SetBody(*body) + } + if pathParams != nil { + req.SetPathParams(*pathParams) + } + + result, err := req.Delete(url) + + return ResponseWithLog(funcName, req, result, err) +} + +// Post +func Post(ctx *context.Context, url string, contentType string, + pathParams *map[string]string, fileParams *map[string]string, queryParams *map[string]string, + body *string, formData *map[string]string, resultData interface{}) (*resty.Response, error) { + + // 获取上层调用者PC,文件名,所在行 + funcName := GetCallFunc() + + client := httpclient.NewHttpsClient() + req, err := NewRequest(client) + if err != nil { + logx.WithContext(*ctx).Errorf("AC", "Func: %s, Post Request URL : %s, Init Request Client err: %s", funcName, url, err.Error()) + return nil, err + } + + req = req. + SetHeader(httpclient.ContentType, contentType). + SetResult(resultData) + if body != nil { + req.SetBody(*body) + } + if pathParams != nil { + req.SetPathParams(*pathParams) + } + if fileParams != nil { + req.SetFiles(*fileParams) + } + if queryParams != nil { + req.SetQueryParams(*queryParams) + } + if formData != nil { + req.SetFormData(*formData) + } + + result, err := req.Post(url) + + return ResponseWithLog(funcName, req, result, err) +} + +// 获取调用方法 +func GetCallFunc() string { + + // 获取上层调用者PC,文件名,所在行 + var funcName string + pc, _, _, ok := runtime.Caller(2) + if !ok { + // 不ok,函数栈用尽了 + funcName = "-" + } else { + // 根据PC获取函数名 + funcName = runtime.FuncForPC(pc).Name() + } + + return funcName +} + +// 提取错误信息并记录日志 +func ResponseWithLog(funcName string, req *resty.Request, result *resty.Response, err error) (*resty.Response, error) { + // 请求错误 + if err != nil { + logx.WithContext(context.TODO()).Errorf("AC", "Func %s, URL %s, Request Error: %s", funcName, req.RawRequest.URL, err.Error()) + return result, err + } + + // 接口报错 + if 200 != result.StatusCode() { + logx.WithContext(context.TODO()).Errorf("AC", "Func %s, URL %s, Response: %s", funcName, req.RawRequest.URL, string(result.Body())) + return result, errors.New("response StatusCode != 200") + } + logx.WithContext(context.TODO()).Debugf("AC", "Func %s, URL %s, Response: %s", funcName, req.RawRequest.URL, string(result.Body())) + return result, nil +} diff --git a/adaptor/PCM-HPC/PCM-AC/rpc/pb/hpcAC.proto b/adaptor/PCM-HPC/PCM-AC/rpc/pb/hpcAC.proto index 429a0611..97e84791 100644 --- a/adaptor/PCM-HPC/PCM-AC/rpc/pb/hpcAC.proto +++ b/adaptor/PCM-HPC/PCM-AC/rpc/pb/hpcAC.proto @@ -7,8 +7,8 @@ option go_package = "/hpcAC"; message JobManager{ string job_manager_type = 1; // @gotags: copier:"JobManagerType", json:"JobManagerType" string job_manager_addr = 2; // @gotags: copier:"JobManagerAddr", json:"JobManagerAddr" - int64 id = 3; // @gotags: copier:"ID", json:"id" - string text = 4; // @gotags: copier:"Text", json:"text" + int64 id = 3; // @gotags: copier:"ID", json:"id" + string text = 4; // @gotags: copier:"Text", json:"text" string job_manager_port = 5; // @gotags: copier:"JobManagerPort", json:"JobManagerPort" } @@ -16,9 +16,9 @@ message JobManagerReq{ } message ListJobManagerResp{ - string code = 1; // @gotags: copier:"Code", json:"code" - string msg = 2; // @gotags: copier:"Msg", json:"msg" - repeated JobManager job_managers = 3; // @gotags: copier:"JobManagers", json:"data" + string code = 1; // @gotags: copier:"Code", json:"code" + string msg = 2; // @gotags: copier:"Msg", json:"msg" + repeated JobManager job_managers = 3; // @gotags: copier:"JobManagers", json:"data" } /******************Cluster End*************************/ @@ -173,69 +173,69 @@ message DeleteJobResp{ /******************Job Start*************************/ message job{ - string job_id = 1; // @gotags: copier:"JobId" - string job_name = 2; // @gotags: copier:"Name" - string job_status = 3; // @gotags: copier:"JobState" - string queue = 4; // @gotags: copier:"Partition" - string user = 5; // @gotags: copier:"UserId" - string node_used = 6; // @gotags: copier:"ExcNodes" - int32 proc_num_used = 7; // @gotags: copier:"NumCpus" - string job_start_time = 8; // @gotags: copier:"StartTime" - string job_run_time = 9; // @gotags: copier:"JobRunTime" - string job_manager_id = 10; // @gotags: copier:"JobmanagerId" + string job_id = 1; // @gotags: copier:"JobId" + string job_name = 2; // @gotags: copier:"Name" + string job_status = 3; // @gotags: copier:"JobState" + string queue = 4; // @gotags: copier:"Partition" + string user = 5; // @gotags: copier:"UserId" + string node_used = 6; // @gotags: copier:"ExcNodes" + int32 proc_num_used = 7; // @gotags: copier:"NumCpus" + string job_start_time = 8; // @gotags: copier:"StartTime" + string job_run_time = 9; // @gotags: copier:"JobRunTime" + string job_manager_id = 10; // @gotags: copier:"JobmanagerId" string job_manager_name = 11; // @gotags: copier:"JobmanagerName" string job_manager_type = 12; // @gotags: copier:"JobmanagerType" - string error_path = 13; // @gotags: copier:"ErrorPath" - string output_path = 14; // @gotags: copier:"OutputPath" - string work_dir = 15; // @gotags: copier:"WorkDir" - string reason = 16; // @gotags: copier:"Reason" - string app_type = 17; // @gotags: copier:"AppType" + string error_path = 13; // @gotags: copier:"ErrorPath" + string output_path = 14; // @gotags: copier:"OutputPath" + string work_dir = 15; // @gotags: copier:"WorkDir" + string reason = 16; // @gotags: copier:"Reason" + string app_type = 17; // @gotags: copier:"AppType" } message ListJobReq{ } message ListJobResp{ - uint32 code = 1; // @gotags: copier:"Code" - string msg = 2; // @gotags: copier:"Msg" + 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" + repeated job jobs = 4; // @gotags: copier:"Jobs" } /******************Job End*************************/ /******************History Job Start*************************/ message historyJob{ - string acct_time = 1; // @gotags: copier:"AcctTime" - string app_type = 2; // @gotags: copier:"AppType" - string job_end_time = 3; // @gotags: copier:"End" - string job_exec_host = 4; // @gotags: copier:"Nodes" - int32 job_exit_status = 5; // @gotags: copier:"ExitCode" - int64 job_id = 6; // @gotags: copier:"JobId" - string job_name = 7; // @gotags: copier:"JobName" - string job_queue_time = 8; // @gotags: copier:"JobQueueTime" - string job_start_time = 9; // @gotags: copier:"Start" - string job_state = 10; // @gotags: copier:"State" + string acct_time = 1; // @gotags: copier:"AcctTime" + string app_type = 2; // @gotags: copier:"AppType" + string job_end_time = 3; // @gotags: copier:"End" + string job_exec_host = 4; // @gotags: copier:"Nodes" + int32 job_exit_status = 5; // @gotags: copier:"ExitCode" + int64 job_id = 6; // @gotags: copier:"JobId" + string job_name = 7; // @gotags: copier:"JobName" + string job_queue_time = 8; // @gotags: copier:"JobQueueTime" + string job_start_time = 9; // @gotags: copier:"Start" + string job_state = 10; // @gotags: copier:"State" string job_walltime_used = 11; // @gotags: copier:"JobWalltimeUsed" - int64 job_manager_id = 12; // @gotags: copier:"JobManagerId" - int32 node_ct = 13; // @gotags: copier:"AllocNodes" - string queue = 14; // @gotags: copier:"Partition" - string user_name = 15; // @gotags: copier:"User" - string workdir = 16; // @gotags: copier:"WorkDir" + int64 job_manager_id = 12; // @gotags: copier:"JobManagerId" + int32 node_ct = 13; // @gotags: copier:"AllocNodes" + string queue = 14; // @gotags: copier:"Partition" + string user_name = 15; // @gotags: copier:"User" + string workdir = 16; // @gotags: copier:"WorkDir" } message ListHistoryJobReq{ - string startTime = 1;// @gotags: copier:"StartTime" - string endTime = 2;// @gotags: copier:"EndTime" - string timeType = 3;// @gotags: copier:"TimeType" - int32 start = 4;// @gotags: copier:"Start" - int32 limit = 5;// @gotags: copier:"Limit" + string startTime = 1;// @gotags: copier:"StartTime" + string endTime = 2;// @gotags: copier:"EndTime" + string timeType = 3;// @gotags: copier:"TimeType" + int32 start = 4;// @gotags: copier:"Start" + int32 limit = 5;// @gotags: copier:"Limit" int32 isQueryByQueueTime = 6;// @gotags: copier:"IsQueryByQueueTime" } message ListHistoryJobResp{ - uint32 code = 1; // @gotags: copier:"Code" - string msg = 2; // @gotags: copier:"Msg" + 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" } @@ -277,6 +277,110 @@ message MapAppJobInfo{ } /******************Job(Submit) End*************************/ +message FileContentResp{ + string code = 1; // @gotags: copier:"Code" //状态码 示例:0 + string msg = 2; // @gotags: copier:"Msg" //信息 示例:success + FileDataResp data = 3; // @gotags: copier:"Data" //对象数据 +} + +message FileDataReq{ + string hostName = 1; // @gotags: copier:"HostName" //服务器hostname 示例:127.0.0.1 + string dirPath = 2; // @gotags: copier:"DirPath" //服务器文件绝对路径 示例:/public/home/test/BASE/STDIN_1210_114429/std.out.22 + int32 triggerNum = 3; // @gotags: copier:"TriggerNum" //翻页次数,第一次打开传1,文件每超过1000行,该参数累加1(类似分页,每页显示1000行数据) 示例:1 + string rollDirection = 4; // @gotags: copier:"RollDirection" //文件查看方向,传参UP,从文件尾向上看;传参DOWN,从文件头向下看 示例:UP +} + +message FileDataResp{ + int32 allLineTotal = 1; // @gotags: copier:"AllLineTotal" //文件总行数 示例:100 + string success = 2; // @gotags: copier:"Success" //请求是否成功 示例:true + int32 totalTriggerTimes = 3; // @gotags: copier:"TotalTriggerTimes" //总次数(类似分页总页数) 示例:1 + string errmsg = 4; // @gotags: copier:"Errmsg" //错误信息 示例:false + string data = 5; // @gotags: copier:"Data" //返回的文件内容 示例:start time is: 2021-10-14 +} + +message QueueReq{ + string user = 1; // @gotags: copier:"User" //用户 示例:test + string strJobManagerID = 2; // @gotags: copier:"StrJobManagerID" //调度器ID 示例:1626190154 +} + +message QueueResp{ + string code = 1; // @gotags: copier:"Code" //状态码 示例:0 + string msg = 2; // @gotags: copier:"Msg" //信息 示例:success + repeated QueueData data = 3; // @gotags: copier:"Data" //队列数组 +} + +message QueueData{ + string aclHosts = 1; // @gotags: copier:"aclHosts" //可用节点,多个节点用逗号隔开 示例:node1,node2 + string id = 2; // @gotags: copier:"id" //队列名称 示例:debug + string text = 3; // @gotags: copier:"text" //队列名称 示例:debug + string queNodes = 4; // @gotags: copier:"queNodes" //队列节点总数 示例:3 + string queMinNodect = 5; // @gotags: copier:"queMinNodect" //队列最小节点数 示例:1 + string queMaxNgpus = 6; // @gotags: copier:"queMaxNgpus" //队列最大GPU卡数 示例:0 + string queMaxPPN = 7; // @gotags: copier:"queMaxPPN" //使用该队列作业最大CPU核心数 示例:4 + string queChargeRate = 8; // @gotags: copier:"queChargeRate" //费率 示例:1 + string queMaxNcpus = 9; // @gotags: copier:"queMaxNcpus" //用户最大可用核心数 示例:4 + string queMaxNdcus = 10; // @gotags: copier:"queMaxNdcus" //队列总DCU卡数 示例:0 + string queueName = 11; // @gotags: copier:"queueName" //队列名称 示例:debug + string queMinNcpus = 12; // @gotags: copier:"queMinNcpus" //队列最小CPU核数 示例:1 + string queFreeNodes = 13; // @gotags: copier:"queFreeNodes" //队列空闲节点数 示例:1 + string queMaxNodect = 14; // @gotags: copier:"queMaxNodect" //队列作业最大节点数 示例:1 + string queMaxGpuPN = 15; // @gotags: copier:"queMaxGpuPN" //队列单作业最大GPU卡数 示例:0 + string queMaxWalltime = 16; // @gotags: copier:"queMaxWalltime" //队列最大运行时间 示例:unlimit + string queMaxDcuPN = 17; // @gotags: copier:"queMaxDcuPN" //队列单作业最大DCU卡数 示例:0 +} + +message QueueDetailsResp{ + string code = 1; // @gotags: copier:"Code" //状态码 示例:0 + string msg = 2; // @gotags: copier:"Msg" //信息 示例:success + repeated QueueDetailsData data = 3; // @gotags: copier:"Data" //队列数组 +} + +message QueueDetailsData{ + int32 queNodes = 1; // @gotags: copier:"queNodes" //队列节点总数 示例:3 + int32 queMinNodect = 2; // @gotags: copier:"queMinNodect" //队列最小节点数 示例:1 + int32 queMaxNgpus = 3; // @gotags: copier:"queMaxNgpus" //队列最大GPU卡数 示例:0 + int32 queMaxPPN = 4; // @gotags: copier:"queMaxPPN" //使用该队列作业最大CPU核心数 示例:4 + float queChargeRate = 5; // @gotags: copier:"queChargeRate" //费率 示例:1 + int32 queMaxNcpus = 6; // @gotags: copier:"queMaxNcpus" //用户最大可用核心数 示例:4 + int32 queMaxNdcus = 7; // @gotags: copier:"queMaxNdcus" //队列总DCU卡数 示例:0 + string queueName = 8; // @gotags: copier:"queueName" //队列名称 示例:debug + int32 queMinNcpus = 9; // @gotags: copier:"queMinNcpus" //队列最小CPU核数 示例:1 + int32 queFreeNodes = 10; // @gotags: copier:"queFreeNodes" //队列空闲节点数 示例:1 + int32 queMaxNodect = 11; // @gotags: copier:"queMaxNodect" //队列作业最大节点数 示例:1 + int32 queMaxGpuPN = 12; // @gotags: copier:"queMaxGpuPN" //队列单作业最大GPU卡数 示例:0 + int32 queMaxWalltime = 13; // @gotags: copier:"queMaxWalltime" //队列最大运行时间 示例:unlimit + int32 queMaxDcuPN = 14; // @gotags: copier:"queMaxDcuPN" //队列单作业最大DCU卡数 示例:0 +} + +message UserQuotasLimitResp{ + string code = 1; // @gotags: copier:"Code" //状态码 示例:0 + string msg = 2; // @gotags: copier:"Msg" //信息 示例:success + UserQuotasLimitData data = 3; // @gotags: copier:"Data" //队列数组 +} + +message UserQuotasLimitData{ + string userName = 1; // @gotags: copier:"userName" //用户名称 + string accountName = 2; // @gotags: copier:"accountName" //用户所关联的默认的账号名 + int64 userMaxCpu = 3; // @gotags: copier:"userMaxCpu" //用户最大CPU核数,单位:个,如果未做限制,则值为-1 + int64 userMaxDcu = 4; // @gotags: copier:"userMaxDcu" //用户最大DCU卡数,单位:个,如果未做限制,则值为-1 + int64 userMaxGpu = 5; // @gotags: copier:"userMaxGpu" //用户最大GPU卡数,单位:个,如果未做限制,则值为-1 + int64 userMaxMlu = 6; // @gotags: copier:"userMaxMlu" //用户最大MLU卡数,单位:个,如果未做限制,则值为-1 + int64 userMaxMem = 7; // @gotags: copier:"userMaxMem" //用户最大内存,单位:m,如果未做限制,则值为-1 + int64 userMaxNode = 8; // @gotags: copier:"userMaxNode" //用户最大节点数,单位:个,如果未做限制,则值为-1 + int64 userMaxSubmitJob = 9; // @gotags: copier:"userMaxSubmitJob" //用户最大提交作业数,单位:个,如果未做限制,则值为-1 + int64 userMaxRunJob = 10; // @gotags: copier:"userMaxRunJob" //用户最大运行作业数,单位:个,如果未做限制,则值为-1 + int64 accountMaxCpu = 11; // @gotags: copier:"accountMaxCpu" //账户最大CPU核数,单位:个,如果未做限制,则值为-1 + int64 accountMaxDcu = 12; // @gotags: copier:"accountMaxDcu" //账户最大DCU卡数,单位:个,如果未做限制,则值为-1 + int64 accountMaxGpu = 13; // @gotags: copier:"accountMaxGpu" //账户最大GPU卡数,单位:个,如果未做限制,则值为-1 + int64 accountMaxMlu = 14; // @gotags: copier:"accountMaxMlu" //账户最大MLU卡数,单位:个,如果未做限制,则值为-1 + int64 accountMaxMem = 15; // @gotags: copier:"accountMaxMem" //账户最大内存,单位:m,如果未做限制,则值为-1 + int64 accountMaxNode = 16; // @gotags: copier:"accountMaxNode" //账户最大节点数,单位:个,如果未做限制,则值为-1 + int64 accountMaxSubmitJob = 17; // @gotags: copier:"accountMaxSubmitJob" //账户最大提交作业数,单位:个,如果未做限制,则值为-1 + int64 accountMaxRunJob = 18; // @gotags: copier:"accountMaxRunJob" //账户最大运行作业数,单位:个,如果未做限制,则值为-1 + int64 userMinCpu = 19; // @gotags: copier:"userMinCpu" //用户最小CPU核数,单位:个,如果未做限制,则值为-1 + int64 userMinNode = 20; // @gotags: copier:"userMinNode" //用户最小节点数,单位:个,如果未做限制,则值为-1 + int64 maxWallTime = 21; // @gotags: copier:"maxWallTime" //用户关联的glod账号的机时,机时单位:s,如果未做限制,则值为-1 +} // HPC Services for AC service hpcAC { @@ -293,9 +397,23 @@ service hpcAC { // ListJobManager list all job managers rpc ListJobManager(JobManagerReq) returns (ListJobManagerResp); +<<<<<<< HEAD // GetJobDetail get job detail rpc GetJobDetail(JobDetailReq) returns (GetJobDetailResp); // DeleteJob delete job rpc DeleteJob(DeleteJobReq) returns (DeleteJobResp); +======= + //FileContent 查看文件内容 + rpc FileContent(FileDataReq) returns (FileContentResp); + + //SelectQueueByUser 查询用户可访问队列列表 + rpc SelectQueueByUser(QueueReq) returns(QueueResp); + + //QueryQueueDetails 查询队列资源详细信息 + rpc QueryQueueDetails(QueueReq) returns(QueueDetailsResp); + + ///QueryUserQuotasLimit 查询用户资源限制信息 + rpc QueryUserQuotasLimit(QueueReq) returns(UserQuotasLimitResp); +>>>>>>> ff7628a455a0eb264866e5bde762cd1c671eb8f3 } \ No newline at end of file diff --git a/common/tool/httpclient/base.go b/common/tool/httpclient/base.go new file mode 100644 index 00000000..77f55b80 --- /dev/null +++ b/common/tool/httpclient/base.go @@ -0,0 +1,54 @@ +package httpclient + +import ( + "crypto/tls" + "github.com/go-resty/resty/v2" + "time" +) + +const ( + ContentType = "Content-Type" + ApplicationJson = "application/json" + MutipartFormData = "multipart/form-data; boundary=" + ApplicationFromUrlencoded = "application/x-www-from-urlencoded" +) + +var httpClient *resty.Client = nil +var httpsClient *resty.Client = nil + +func NewHttpClient() *resty.Client { + if httpClient != nil { + return httpClient + } + httpClient = resty.New() + httpClient.SetTimeout(5 * time.Second) + httpClient.SetRetryCount(3) + + //debug := config.GetConfig("httpclient.debug") + debug := "ture" + if len(debug) > 0 && debug == "ON" { + httpClient.SetDebug(true) + } + + return httpClient +} + +func NewHttpsClient() *resty.Client { + if httpsClient != nil { + return httpsClient + } + + c := resty.New() + c.SetTLSClientConfig(&tls.Config{InsecureSkipVerify: true}) + c.SetTimeout(5 * time.Second) + c.SetRetryCount(3) + + //debug := config.GetConfig("httpclient.debug") + debug := "ture" + if len(debug) > 0 && debug == "ON" { + c.SetDebug(true) + } + + httpsClient = c + return c +} diff --git a/go.mod b/go.mod index 7673698d..68fbfc26 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.19 require ( github.com/bitly/go-simplejson v0.5.0 - github.com/go-sql-driver/mysql v1.7.0 + github.com/go-resty/resty/v2 v2.7.0 github.com/jinzhu/copier v0.3.5 github.com/pkg/errors v0.9.1 github.com/shopspring/decimal v1.3.1 @@ -14,6 +14,7 @@ require ( google.golang.org/protobuf v1.28.1 gorm.io/driver/mysql v1.4.7 gorm.io/gorm v1.24.5 + k8s.io/api v0.22.9 sigs.k8s.io/yaml v1.2.0 ) @@ -31,6 +32,7 @@ require ( github.com/go-logr/logr v1.2.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-redis/redis/v8 v8.11.5 // indirect + github.com/go-sql-driver/mysql v1.7.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang-jwt/jwt/v4 v4.4.3 // indirect github.com/golang/mock v1.6.0 // indirect @@ -84,7 +86,6 @@ require ( gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.22.9 // indirect k8s.io/apimachinery v0.22.9 // indirect k8s.io/client-go v0.22.9 // indirect k8s.io/klog/v2 v2.80.1 // indirect diff --git a/go.sum b/go.sum index bc2d3736..bac406dd 100644 --- a/go.sum +++ b/go.sum @@ -371,6 +371,7 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ClickHouse/clickhouse-go v1.5.4/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI= github.com/ClickHouse/clickhouse-go/v2 v2.0.14/go.mod h1:iq2DUGgpA4BBki2CVwrF8x43zqBjdgHtbexkFkh5a6M= +github.com/DATA-DOG/go-sqlmock v1.5.0 h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20OEh60= github.com/DATA-DOG/go-sqlmock v1.5.0/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= @@ -489,6 +490,8 @@ github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL9 github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI= github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo= +github.com/go-resty/resty/v2 v2.7.0 h1:me+K9p3uhSmXtrBZ4k9jcEAfJmuC8IivWHwaLZwPrFY= +github.com/go-resty/resty/v2 v2.7.0/go.mod h1:9PWDzw47qPphMRFfhsyk0NnSgvluHcljSMVIq3w7q0I= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.7.0 h1:ueSltNNllEqE3qcWBTD0iQd3IpL/6U+mJxLkazJ7YPc= github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= @@ -967,6 +970,7 @@ golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210917221730-978cfadd31cf/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211029224645-99673261e6eb/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=