diff --git a/adaptor/slurm/slurmCore/api/internal/types/types.go b/adaptor/slurm/slurmCore/api/internal/types/types.go index 89d18dc0..07e94b61 100644 --- a/adaptor/slurm/slurmCore/api/internal/types/types.go +++ b/adaptor/slurm/slurmCore/api/internal/types/types.go @@ -181,89 +181,89 @@ type SubmitJobReq struct { Appname string `json:"appname"` StrJobManagerID int64 `json:"strJobManagerID"` MapAppJobInfo MapAppJobInfo `json:"mapAppJobInfo"` - Account string `json:"account,omitempty"` - Acctg_freq string `json:"acctg_freq,omitempty"` - Alloc_node string `json:"alloc_node,omitempty"` - Alloc_resp_port int32 `json:"alloc_resp_port,omitempty"` - Alloc_sid int32 `json:"alloc_sid,omitempty"` - Argc int32 `json:"argc,omitempty"` - Argv []Argv `json:"Argv,omitempty"` - Array_inx string `json:"array_inx,omitempty"` - Begin_time int64 `json:"begin_time,omitempty"` - Ckpt_interval int32 `json:"ckpt_interval,omitempty"` - Ckpt_dir string `json:"ckpt_dir,omitempty"` - Comment string `json:"comment,omitempty"` - Contiguous int32 `json:"contiguous,omitempty"` - Cpu_bind string `json:"cpu_bind,omitempty"` - Cpu_bind_type int32 `json:"cpu_bind_type,omitempty"` - Dependency string `json:"dependency,omitempty"` - End_time int64 `json:"end_time,omitempty"` - Environment []Environment `json:"Environment,omitempty"` - Env_size int32 `json:"env_size,omitempty"` - Exc_nodes string `json:"exc_nodes,omitempty"` - Features string `json:"features,omitempty"` - Gres string `json:"gres,omitempty"` - Group_id int32 `json:"group_id,omitempty"` - Immediate int32 `json:"immediate,omitempty"` - Job_id int32 `json:"job_id,omitempty"` - Kill_on_node_fail int32 `json:"kill_on_node_fail,omitempty"` - Licenses string `json:"licenses,omitempty"` - Mail_type int32 `json:"mail_type,omitempty"` - Mail_user string `json:"mail_user,omitempty"` - Mem_bind string `json:"mem_bind,omitempty"` - Mem_bind_type int32 `json:"mem_bind_type,omitempty"` - Name string `json:"name,omitempty"` - Network string `json:"network,omitempty"` - Nice int32 `json:"nice,omitempty"` - Num_tasks int32 `json:"num_tasks,omitempty"` - Open_mode int32 `json:"open_mode,omitempty"` - Other_port int32 `json:"other_port,omitempty"` - Overcommit int32 `json:"overcommit,omitempty"` - Partition string `json:"partition,omitempty"` - Plane_size int32 `json:"plane_size,omitempty"` - Priority int32 `json:"priority,omitempty"` - Profile int32 `json:"profile,omitempty"` - Qos string `json:"qos,omitempty"` - Resp_host string `json:"resp_host,omitempty"` - Req_nodes string `json:"req_nodes,omitempty"` - Requeue int32 `json:"requeue,omitempty"` - Reservation string `json:"reservation,omitempty"` - Script string `json:"script,omitempty"` - Shared int32 `json:"shared,omitempty"` - Spank_job_env_size int32 `json:"spank_job_env_size,omitempty"` - Task_dist int32 `json:"task_dist,omitempty"` - Time_limit int32 `json:"time_limit,omitempty"` - Time_min int32 `json:"time_min,omitempty"` - User_id int32 `json:"user_id,omitempty"` - Wait_all_nodes int32 `json:"wait_all_nodes,omitempty"` - Warn_signal int32 `json:"warn_signal,omitempty"` - Warn_time int32 `json:"warn_time,omitempty"` - Work_dir string `json:"work_dir,omitempty"` - Cpus_per_task int32 `json:"cpus_per_task,omitempty"` - Min_cpus int32 `json:"min_cpus,omitempty"` - Max_cpus int32 `json:"max_cpus,omitempty"` - Min_nodes int32 `json:"min_nodes,omitempty"` - Max_nodes int32 `json:"max_nodes,omitempty"` - Boards_per_node int32 `json:"boards_per_node,omitempty"` - Sockets_per_board int32 `json:"sockets_per_board,omitempty"` - Sockets_per_node int32 `json:"sockets_per_node,omitempty"` - Cores_per_socket int32 `json:"cores_per_socket,omitempty"` - Threads_per_core int32 `json:"threads_per_core,omitempty"` - Ntasks_per_node int32 `json:"ntasks_per_node,omitempty"` - Ntasks_per_socket int32 `json:"ntasks_per_socket,omitempty"` - Ntasks_per_core int32 `json:"ntasks_per_core,omitempty"` - Ntasks_per_board int32 `json:"ntasks_per_board,omitempty"` - Pn_min_cpus int32 `json:"pn_min_cpus,omitempty"` - Pn_min_memory int32 `json:"pn_min_memory,omitempty"` - Pn_min_tmp_disk int32 `json:"pn_min_tmp_disk,omitempty"` - Reboot int32 `json:"reboot,omitempty"` - Rotate int32 `json:"rotate,omitempty"` - Req_switch int32 `json:"req_switch,omitempty"` - Std_err string `json:"std_err,omitempty"` - Std_in string `json:"std_in,omitempty"` - Std_out string `json:"std_out,omitempty"` - Wait4switch int32 `json:"wait4switch,omitempty"` - Wckey string `json:"wckey,omitempty"` + Account string `json:"account,optional"` + Acctg_freq string `json:"acctg_freq,optional"` + Alloc_node string `json:"alloc_node,optional"` + Alloc_resp_port int32 `json:"alloc_resp_port,optional"` + Alloc_sid int32 `json:"alloc_sid,optional"` + Argc int32 `json:"argc,optional"` + Argv []Argv `json:"Argv,optional"` + Array_inx string `json:"array_inx,optional"` + Begin_time int64 `json:"begin_time,optional"` + Ckpt_interval int32 `json:"ckpt_interval,optional"` + Ckpt_dir string `json:"ckpt_dir,optional"` + Comment string `json:"comment,optional"` + Contiguous int32 `json:"contiguous,optional"` + Cpu_bind string `json:"cpu_bind,optional"` + Cpu_bind_type int32 `json:"cpu_bind_type,optional"` + Dependency string `json:"dependency,optional"` + End_time int64 `json:"end_time,optional"` + Environment []Environment `json:"Environment,optional"` + Env_size int32 `json:"env_size,optional"` + Exc_nodes string `json:"exc_nodes,optional"` + Features string `json:"features,optional"` + Gres string `json:"gres,optional"` + Group_id int32 `json:"group_id,optional"` + Immediate int32 `json:"immediate,optional"` + Job_id int32 `json:"job_id,optional"` + Kill_on_node_fail int32 `json:"kill_on_node_fail,optional"` + Licenses string `json:"licenses,optional"` + Mail_type int32 `json:"mail_type,optional"` + Mail_user string `json:"mail_user,optional"` + Mem_bind string `json:"mem_bind,optional"` + Mem_bind_type int32 `json:"mem_bind_type,optional"` + Name string `json:"name,optional"` + Network string `json:"network,optional"` + Nice int32 `json:"nice,optional"` + Num_tasks int32 `json:"num_tasks,optional"` + Open_mode int32 `json:"open_mode,optional"` + Other_port int32 `json:"other_port,optional"` + Overcommit int32 `json:"overcommit,optional"` + Partition string `json:"partition,optional"` + Plane_size int32 `json:"plane_size,optional"` + Priority int32 `json:"priority,optional"` + Profile int32 `json:"profile,optional"` + Qos string `json:"qos,optional"` + Resp_host string `json:"resp_host,optional"` + Req_nodes string `json:"req_nodes,optional"` + Requeue int32 `json:"requeue,optional"` + Reservation string `json:"reservation,optional"` + Script string `json:"script,optional"` + Shared int32 `json:"shared,optional"` + Spank_job_env_size int32 `json:"spank_job_env_size,optional"` + Task_dist int32 `json:"task_dist,optional"` + Time_limit int32 `json:"time_limit,optional"` + Time_min int32 `json:"time_min,optional"` + User_id int32 `json:"user_id,optional"` + Wait_all_nodes int32 `json:"wait_all_nodes,optional"` + Warn_signal int32 `json:"warn_signal,optional"` + Warn_time int32 `json:"warn_time,optional"` + Work_dir string `json:"work_dir,optional"` + Cpus_per_task int32 `json:"cpus_per_task,optional"` + Min_cpus int32 `json:"min_cpus,optional"` + Max_cpus int32 `json:"max_cpus,optional"` + Min_nodes int32 `json:"min_nodes,optional"` + Max_nodes int32 `json:"max_nodes,optional"` + Boards_per_node int32 `json:"boards_per_node,optional"` + Sockets_per_board int32 `json:"sockets_per_board,optional"` + Sockets_per_node int32 `json:"sockets_per_node,optional"` + Cores_per_socket int32 `json:"cores_per_socket,optional"` + Threads_per_core int32 `json:"threads_per_core,optional"` + Ntasks_per_node int32 `json:"ntasks_per_node,optional"` + Ntasks_per_socket int32 `json:"ntasks_per_socket,optional"` + Ntasks_per_core int32 `json:"ntasks_per_core,optional"` + Ntasks_per_board int32 `json:"ntasks_per_board,optional"` + Pn_min_cpus int32 `json:"pn_min_cpus,optional"` + Pn_min_memory int32 `json:"pn_min_memory,optional"` + Pn_min_tmp_disk int32 `json:"pn_min_tmp_disk,optional"` + Reboot int32 `json:"reboot,optional"` + Rotate int32 `json:"rotate,optional"` + Req_switch int32 `json:"req_switch,optional"` + Std_err string `json:"std_err,optional"` + Std_in string `json:"std_in,optional"` + Std_out string `json:"std_out,optional"` + Wait4switch int32 `json:"wait4switch,optional"` + Wckey string `json:"wckey,optional"` } type SubmitJobResp struct { @@ -273,24 +273,32 @@ type SubmitJobResp struct { } type MapAppJobInfo struct { - GAP_CMD_FILE string `json:"GAP_CMD_FILE"` //命令行内容 - GAP_NNODE string `json:"GAP_NNODE"` //节点个数 - GAP_SUBMIT_TYPE string `json:"GAP_SUBMIT_TYPE"` //cmd(命令行模式) - GAP_JOB_NAME string `json:"GAP_JOB_NAME"` //作业名称 - GAP_WORK_DIR string `json:"GAP_WORK_DIR"` //工作路径 - GAP_QUEUE string `json:"GAP_QUEUE"` //队列名称 - GAP_WALL_TIME string `json:"GAP_WALL_TIME"` //最大运行时长(HH:MM:ss) - GAP_APPNAME string `json:"GAP_APPNAME"` //BASE(基础应用),支持填写具体的应用英文名称 - GAP_STD_OUT_FILE string `json:"GAP_STD_OUT_FILE"` //工作路径/std.out.%j - GAP_STD_ERR_FILE string `json:"GAP_STD_ERR_FILE"` //工作路径/std.err.%j + GAP_CMD_FILE string `json:"GAP_CMD_FILE"` //命令行内容 + GAP_NNODE string `json:"GAP_NNODE"` //节点个数(当指定该参数时,GAP_NODE_STRING必须为"") + GAP_NODE_STRING string `json:"GAP_NODE_STRING,optional"` //指定节点(当指定该参数时,GAP_NNODE必须为"") + GAP_SUBMIT_TYPE string `json:"GAP_SUBMIT_TYPE"` //cmd(命令行模式) + GAP_JOB_NAME string `json:"GAP_JOB_NAME"` //作业名称 + GAP_WORK_DIR string `json:"GAP_WORK_DIR"` //工作路径 + GAP_QUEUE string `json:"GAP_QUEUE"` //队列名称 + GAP_NPROC string `json:"GAP_NPROC,optional"` //总核心数(GAP_NPROC和GAP_PPN选其一填写) + GAP_PPN string `json:"GAP_PPN,optional"` //CPU核心/节点(GAP_NPROC和GAP_PPN选其一填写) + GAP_NGPU string `json:"GAP_NGPU,optional"` //GPU卡数/节点 + GAP_NDCU string `json:"GAP_NDCU,optional"` //DCU卡数/节点 + GAP_JOB_MEM string `json:"GAP_JOB_MEM,optional"` //每个节点内存值,单位为MB/GB + GAP_WALL_TIME string `json:"GAP_WALL_TIME"` //最大运行时长(HH:MM:ss) + GAP_EXCLUSIVE string `json:"GAP_EXCLUSIVE,optional"` // 是否独占节点,1为独占,空为非独占 + GAP_APPNAME string `json:"GAP_APPNAME"` //BASE(基础应用),支持填写具体的应用英文名称 + GAP_MULTI_SUB string `json:"GAP_MULTI_SUB,optional"` //作业组长度,建议为小于等于50的正整数 + GAP_STD_OUT_FILE string `json:"GAP_STD_OUT_FILE"` //工作路径/std.out.%j + GAP_STD_ERR_FILE string `json:"GAP_STD_ERR_FILE"` //工作路径/std.err.%j } type Argv struct { - Argv string `json:"argv,omitempty"` + Argv string `json:"argv,optional"` } type Environment struct { - Environment string `json:"environment,omitempty"` + Environment string `json:"environment,optional"` } type GetRegionResp struct { diff --git a/adaptor/slurm/slurmCore/api/slurmCore.api b/adaptor/slurm/slurmCore/api/slurmCore.api index 507794d9..9f0e6b08 100644 --- a/adaptor/slurm/slurmCore/api/slurmCore.api +++ b/adaptor/slurm/slurmCore/api/slurmCore.api @@ -200,89 +200,89 @@ type ( MapAppJobInfo MapAppJobInfo `json:"mapAppJobInfo"` /****************parmas from shuguang********************/ - Account string `json:"account,omitempty"` - Acctg_freq string `json:"acctg_freq,omitempty"` - Alloc_node string `json:"alloc_node,omitempty"` - Alloc_resp_port int32 `json:"alloc_resp_port,omitempty"` - Alloc_sid int32 `json:"alloc_sid,omitempty"` - Argc int32 `json:"argc,omitempty"` - Argv []Argv `json:"Argv,omitempty"` - Array_inx string `json:"array_inx,omitempty"` - Begin_time int64 `json:"begin_time,omitempty"` - Ckpt_interval int32 `json:"ckpt_interval,omitempty"` - Ckpt_dir string `json:"ckpt_dir,omitempty"` - Comment string `json:"comment,omitempty"` - Contiguous int32 `json:"contiguous,omitempty"` - Cpu_bind string `json:"cpu_bind,omitempty"` - Cpu_bind_type int32 `json:"cpu_bind_type,omitempty"` - Dependency string `json:"dependency,omitempty"` - End_time int64 `json:"end_time,omitempty"` - Environment []Environment `json:"Environment,omitempty"` - Env_size int32 `json:"env_size,omitempty"` - Exc_nodes string `json:"exc_nodes,omitempty"` - Features string `json:"features,omitempty"` - Gres string `json:"gres,omitempty"` - Group_id int32 `json:"group_id,omitempty"` - Immediate int32 `json:"immediate,omitempty"` - Job_id int32 `json:"job_id,omitempty"` - Kill_on_node_fail int32 `json:"kill_on_node_fail,omitempty"` - Licenses string `json:"licenses,omitempty"` - Mail_type int32 `json:"mail_type,omitempty"` - Mail_user string `json:"mail_user,omitempty"` - Mem_bind string `json:"mem_bind,omitempty"` - Mem_bind_type int32 `json:"mem_bind_type,omitempty"` - Name string `json:"name,omitempty"` - Network string `json:"network,omitempty"` - Nice int32 `json:"nice,omitempty"` - Num_tasks int32 `json:"num_tasks,omitempty"` - Open_mode int32 `json:"open_mode,omitempty"` - Other_port int32 `json:"other_port,omitempty"` - Overcommit int32 `json:"overcommit,omitempty"` - Partition string `json:"partition,omitempty"` - Plane_size int32 `json:"plane_size,omitempty"` - Priority int32 `json:"priority,omitempty"` - Profile int32 `json:"profile,omitempty"` - Qos string `json:"qos,omitempty"` - Resp_host string `json:"resp_host,omitempty"` - Req_nodes string `json:"req_nodes,omitempty"` - Requeue int32 `json:"requeue,omitempty"` - Reservation string `json:"reservation,omitempty"` - Script string `json:"script,omitempty"` - Shared int32 `json:"shared,omitempty"` - Spank_job_env_size int32 `json:"spank_job_env_size,omitempty"` - Task_dist int32 `json:"task_dist,omitempty"` - Time_limit int32 `json:"time_limit,omitempty"` - Time_min int32 `json:"time_min,omitempty"` - User_id int32 `json:"user_id,omitempty"` - Wait_all_nodes int32 `json:"wait_all_nodes,omitempty"` - Warn_signal int32 `json:"warn_signal,omitempty"` - Warn_time int32 `json:"warn_time,omitempty"` - Work_dir string `json:"work_dir,omitempty"` - Cpus_per_task int32 `json:"cpus_per_task,omitempty"` - Min_cpus int32 `json:"min_cpus,omitempty"` - Max_cpus int32 `json:"max_cpus,omitempty"` - Min_nodes int32 `json:"min_nodes,omitempty"` - Max_nodes int32 `json:"max_nodes,omitempty"` - Boards_per_node int32 `json:"boards_per_node,omitempty"` - Sockets_per_board int32 `json:"sockets_per_board,omitempty"` - Sockets_per_node int32 `json:"sockets_per_node,omitempty"` - Cores_per_socket int32 `json:"cores_per_socket,omitempty"` - Threads_per_core int32 `json:"threads_per_core,omitempty"` - Ntasks_per_node int32 `json:"ntasks_per_node,omitempty"` - Ntasks_per_socket int32 `json:"ntasks_per_socket,omitempty"` - Ntasks_per_core int32 `json:"ntasks_per_core,omitempty"` - Ntasks_per_board int32 `json:"ntasks_per_board,omitempty"` - Pn_min_cpus int32 `json:"pn_min_cpus,omitempty"` - Pn_min_memory int32 `json:"pn_min_memory,omitempty"` - Pn_min_tmp_disk int32 `json:"pn_min_tmp_disk,omitempty"` - Reboot int32 `json:"reboot,omitempty"` - Rotate int32 `json:"rotate,omitempty"` - Req_switch int32 `json:"req_switch,omitempty"` - Std_err string `json:"std_err,omitempty"` - Std_in string `json:"std_in,omitempty"` - Std_out string `json:"std_out,omitempty"` - Wait4switch int32 `json:"wait4switch,omitempty"` - Wckey string `json:"wckey,omitempty"` + Account string `json:"account,optional"` + Acctg_freq string `json:"acctg_freq,optional"` + Alloc_node string `json:"alloc_node,optional"` + Alloc_resp_port int32 `json:"alloc_resp_port,optional"` + Alloc_sid int32 `json:"alloc_sid,optional"` + Argc int32 `json:"argc,optional"` + Argv []Argv `json:"Argv,optional"` + Array_inx string `json:"array_inx,optional"` + Begin_time int64 `json:"begin_time,optional"` + Ckpt_interval int32 `json:"ckpt_interval,optional"` + Ckpt_dir string `json:"ckpt_dir,optional"` + Comment string `json:"comment,optional"` + Contiguous int32 `json:"contiguous,optional"` + Cpu_bind string `json:"cpu_bind,optional"` + Cpu_bind_type int32 `json:"cpu_bind_type,optional"` + Dependency string `json:"dependency,optional"` + End_time int64 `json:"end_time,optional"` + Environment []Environment `json:"Environment,optional"` + Env_size int32 `json:"env_size,optional"` + Exc_nodes string `json:"exc_nodes,optional"` + Features string `json:"features,optional"` + Gres string `json:"gres,optional"` + Group_id int32 `json:"group_id,optional"` + Immediate int32 `json:"immediate,optional"` + Job_id int32 `json:"job_id,optional"` + Kill_on_node_fail int32 `json:"kill_on_node_fail,optional"` + Licenses string `json:"licenses,optional"` + Mail_type int32 `json:"mail_type,optional"` + Mail_user string `json:"mail_user,optional"` + Mem_bind string `json:"mem_bind,optional"` + Mem_bind_type int32 `json:"mem_bind_type,optional"` + Name string `json:"name,optional"` + Network string `json:"network,optional"` + Nice int32 `json:"nice,optional"` + Num_tasks int32 `json:"num_tasks,optional"` + Open_mode int32 `json:"open_mode,optional"` + Other_port int32 `json:"other_port,optional"` + Overcommit int32 `json:"overcommit,optional"` + Partition string `json:"partition,optional"` + Plane_size int32 `json:"plane_size,optional"` + Priority int32 `json:"priority,optional"` + Profile int32 `json:"profile,optional"` + Qos string `json:"qos,optional"` + Resp_host string `json:"resp_host,optional"` + Req_nodes string `json:"req_nodes,optional"` + Requeue int32 `json:"requeue,optional"` + Reservation string `json:"reservation,optional"` + Script string `json:"script,optional"` + Shared int32 `json:"shared,optional"` + Spank_job_env_size int32 `json:"spank_job_env_size,optional"` + Task_dist int32 `json:"task_dist,optional"` + Time_limit int32 `json:"time_limit,optional"` + Time_min int32 `json:"time_min,optional"` + User_id int32 `json:"user_id,optional"` + Wait_all_nodes int32 `json:"wait_all_nodes,optional"` + Warn_signal int32 `json:"warn_signal,optional"` + Warn_time int32 `json:"warn_time,optional"` + Work_dir string `json:"work_dir,optional"` + Cpus_per_task int32 `json:"cpus_per_task,optional"` + Min_cpus int32 `json:"min_cpus,optional"` + Max_cpus int32 `json:"max_cpus,optional"` + Min_nodes int32 `json:"min_nodes,optional"` + Max_nodes int32 `json:"max_nodes,optional"` + Boards_per_node int32 `json:"boards_per_node,optional"` + Sockets_per_board int32 `json:"sockets_per_board,optional"` + Sockets_per_node int32 `json:"sockets_per_node,optional"` + Cores_per_socket int32 `json:"cores_per_socket,optional"` + Threads_per_core int32 `json:"threads_per_core,optional"` + Ntasks_per_node int32 `json:"ntasks_per_node,optional"` + Ntasks_per_socket int32 `json:"ntasks_per_socket,optional"` + Ntasks_per_core int32 `json:"ntasks_per_core,optional"` + Ntasks_per_board int32 `json:"ntasks_per_board,optional"` + Pn_min_cpus int32 `json:"pn_min_cpus,optional"` + Pn_min_memory int32 `json:"pn_min_memory,optional"` + Pn_min_tmp_disk int32 `json:"pn_min_tmp_disk,optional"` + Reboot int32 `json:"reboot,optional"` + Rotate int32 `json:"rotate,optional"` + Req_switch int32 `json:"req_switch,optional"` + Std_err string `json:"std_err,optional"` + Std_in string `json:"std_in,optional"` + Std_out string `json:"std_out,optional"` + Wait4switch int32 `json:"wait4switch,optional"` + Wckey string `json:"wckey,optional"` } submitJobResp { @@ -296,24 +296,32 @@ type ( } MapAppJobInfo { - GAP_CMD_FILE string `json:"GAP_CMD_FILE"` //命令行内容 - GAP_NNODE string `json:"GAP_NNODE"` //节点个数 - GAP_SUBMIT_TYPE string `json:"GAP_SUBMIT_TYPE"` //cmd(命令行模式) - GAP_JOB_NAME string `json:"GAP_JOB_NAME"` //作业名称 - GAP_WORK_DIR string `json:"GAP_WORK_DIR"` //工作路径 - GAP_QUEUE string `json:"GAP_QUEUE"` //队列名称 - GAP_WALL_TIME string `json:"GAP_WALL_TIME"` //最大运行时长(HH:MM:ss) - GAP_APPNAME string `json:"GAP_APPNAME"` //BASE(基础应用),支持填写具体的应用英文名称 - GAP_STD_OUT_FILE string `json:"GAP_STD_OUT_FILE"` //工作路径/std.out.%j - GAP_STD_ERR_FILE string `json:"GAP_STD_ERR_FILE"` //工作路径/std.err.%j + GAP_CMD_FILE string `json:"GAP_CMD_FILE"` //命令行内容 + GAP_NNODE string `json:"GAP_NNODE"` //节点个数(当指定该参数时,GAP_NODE_STRING必须为"") + GAP_NODE_STRING string `json:"GAP_NODE_STRING,optional"` //指定节点(当指定该参数时,GAP_NNODE必须为"") + GAP_SUBMIT_TYPE string `json:"GAP_SUBMIT_TYPE"` //cmd(命令行模式) + GAP_JOB_NAME string `json:"GAP_JOB_NAME"` //作业名称 + GAP_WORK_DIR string `json:"GAP_WORK_DIR"` //工作路径 + GAP_QUEUE string `json:"GAP_QUEUE"` //队列名称 + GAP_NPROC string `json:"GAP_NPROC,optional"` //总核心数(GAP_NPROC和GAP_PPN选其一填写) + GAP_PPN string `json:"GAP_PPN,optional"` //CPU核心/节点(GAP_NPROC和GAP_PPN选其一填写) + GAP_NGPU string `json:"GAP_NGPU,optional"` //GPU卡数/节点 + GAP_NDCU string `json:"GAP_NDCU,optional"` //DCU卡数/节点 + GAP_JOB_MEM string `json:"GAP_JOB_MEM,optional"` //每个节点内存值,单位为MB/GB + GAP_WALL_TIME string `json:"GAP_WALL_TIME"` //最大运行时长(HH:MM:ss) + GAP_EXCLUSIVE string `json:"GAP_EXCLUSIVE,optional"` // 是否独占节点,1为独占,空为非独占 + GAP_APPNAME string `json:"GAP_APPNAME"` //BASE(基础应用),支持填写具体的应用英文名称 + GAP_MULTI_SUB string `json:"GAP_MULTI_SUB,optional"` //作业组长度,建议为小于等于50的正整数 + GAP_STD_OUT_FILE string `json:"GAP_STD_OUT_FILE"` //工作路径/std.out.%j + GAP_STD_ERR_FILE string `json:"GAP_STD_ERR_FILE"` //工作路径/std.err.%j } Argv { - Argv string `json:"argv,omitempty"` + Argv string `json:"argv,optional"` } Environment { - Environment string `json:"environment,omitempty"` + Environment string `json:"environment,optional"` } ) diff --git a/adaptor/slurm/slurmCore/api/slurmcore.go b/adaptor/slurm/slurmCore/api/slurmcore.go index eb4ed3d2..5d6b4c5a 100644 --- a/adaptor/slurm/slurmCore/api/slurmcore.go +++ b/adaptor/slurm/slurmCore/api/slurmcore.go @@ -12,7 +12,7 @@ import ( "github.com/zeromicro/go-zero/rest" ) -var configFile = flag.String("f", "adaptor/slurm/slurmCore/api/etc/slurmcore-api.yaml", "the config file") +var configFile = flag.String("f", "C:\\Users\\admin\\Documents\\122\\jcce\\PCM\\adaptor\\slurm\\slurmCore\\api\\etc\\slurmcore-api.yaml", "the config file") func main() { flag.Parse() diff --git a/adaptor/slurm/slurmShuguang/rpc/internal/logic/submitjoblogic.go b/adaptor/slurm/slurmShuguang/rpc/internal/logic/submitjoblogic.go index 024c55b3..52f984a5 100644 --- a/adaptor/slurm/slurmShuguang/rpc/internal/logic/submitjoblogic.go +++ b/adaptor/slurm/slurmShuguang/rpc/internal/logic/submitjoblogic.go @@ -41,13 +41,12 @@ func (l *SubmitJobLogic) SubmitJob(in *slurmShuguang.SubmitJobReq) (*slurmShugua jsonStr, _ := json.Marshal(in) req_url, err := http.NewRequest("POST", "https://api01.hpccube.com:65106/"+jobSubmitUrl, bytes.NewBuffer(jsonStr)) - Gtoken := util.GetToken() var token string - if util.GetTokenState(Gtoken) { - token = Gtoken + if util.GetTokenState(util.Gtoken) { + token = util.Gtoken } else { token = util.GetToken() - Gtoken = token + util.Gtoken = token } req_url.Header.Add("content-type", "application/json") @@ -65,7 +64,7 @@ func (l *SubmitJobLogic) SubmitJob(in *slurmShuguang.SubmitJobReq) (*slurmShugua defer respUrl.Body.Close() if err != nil { - log.Fatal(err) + return resp, err } result, _ := ioutil.ReadAll(respUrl.Body) diff --git a/adaptor/slurm/slurmShuguang/rpc/internal/util/shuguangAuth.go b/adaptor/slurm/slurmShuguang/rpc/internal/util/shuguangAuth.go index dddd6e7d..56a044cb 100644 --- a/adaptor/slurm/slurmShuguang/rpc/internal/util/shuguangAuth.go +++ b/adaptor/slurm/slurmShuguang/rpc/internal/util/shuguangAuth.go @@ -69,10 +69,10 @@ type dataToken struct { Token string `json:"token"` } -var configFile = flag.String("flll", "adaptor/slurm/slurmShuguang/rpc/etc/slurmshuguang.yaml", "the config file") +var configFile = flag.String("flll", "C:\\Users\\admin\\Documents\\122\\jcce\\pcm\\adaptor\\slurm\\slurmShuguang\\rpc\\etc\\slurmshuguang.yaml", "the config file") func GetClusterId() int { - httpClient := http.Client{Timeout: time.Duration(5) * time.Second} + httpClient := http.Client{Timeout: time.Duration(3) * time.Second} var cf config.Config conf.MustLoad(*configFile, &cf) ctx := svc.NewServiceContext(cf) @@ -94,7 +94,7 @@ func GetClusterId() int { req.Header.Add("token", token) resp, err := httpClient.Do(req) if err != nil { - log.Fatal(err) + return 0 } body, err := io.ReadAll(resp.Body) var res cluster @@ -118,7 +118,7 @@ func GetClusterId() int { } func GetToken() string { - httpClient := http.Client{Timeout: time.Duration(5) * time.Second} + httpClient := http.Client{Timeout: time.Duration(3) * time.Second} var cf config.Config conf.MustLoad(*configFile, &cf) ctx := svc.NewServiceContext(cf) @@ -133,7 +133,7 @@ func GetToken() string { resp, err := httpClient.Do(req) if err != nil { - log.Fatal(err) + return "" } body, err := io.ReadAll(resp.Body) @@ -158,7 +158,7 @@ func GetToken() string { } func GetTokenState(token string) bool { - httpClient := http.Client{Timeout: time.Duration(5) * time.Second} + httpClient := http.Client{Timeout: time.Duration(3) * time.Second} var cf config.Config conf.MustLoad(*configFile, &cf) ctx := svc.NewServiceContext(cf) @@ -171,7 +171,7 @@ func GetTokenState(token string) bool { resp, err := httpClient.Do(req) var res stateToken if err != nil { - log.Fatal(err) + return false } body, err := io.ReadAll(resp.Body) err = json.Unmarshal(body, &res) diff --git a/adaptor/slurm/slurmShuguang/rpc/pb/slurmShuguang.proto b/adaptor/slurm/slurmShuguang/rpc/pb/slurmShuguang.proto index 6284531d..6e995638 100644 --- a/adaptor/slurm/slurmShuguang/rpc/pb/slurmShuguang.proto +++ b/adaptor/slurm/slurmShuguang/rpc/pb/slurmShuguang.proto @@ -91,15 +91,23 @@ message SubmitJobResp{ message MapAppJobInfo{ string GAP_CMD_FILE = 1; // @gotags: copier:"GAP_CMD_FILE" //命令行内容 - string GAP_NNODE = 2; // @gotags: copier:"GAP_NNODE" //节点个数 - string GAP_SUBMIT_TYPE = 3; // @gotags: copier:"GAP_SUBMIT_TYPE" //cmd(命令行模式) - string GAP_JOB_NAME = 4; // @gotags: copier:"GAP_JOB_NAME" //作业名称 - string GAP_WORK_DIR = 5; // @gotags: copier:"GAP_WORK_DIR" //工作路径 - string GAP_QUEUE = 6; // @gotags: copier:"GAP_QUEUE" //队列名称 - string GAP_WALL_TIME = 7; // @gotags: copier:"GAP_WALL_TIME" //最大运行时长(HH:MM:ss) - string GAP_APPNAME = 8; // @gotags: copier:"GAP_APPNAME" //BASE(基础应用),支持填写具体的应用英文名称 - string GAP_STD_OUT_FILE = 9; // @gotags: copier:"GAP_STD_OUT_FILE" //工作路径/std.out.%j - string GAP_STD_ERR_FILE = 10; // @gotags: copier:"GAP_STD_ERR_FILE" //工作路径/std.err.%j + string GAP_NNODE = 2; // @gotags: copier:"GAP_NNODE" //节点个数(当指定该参数时,GAP_NODE_STRING必须为"") + string GAP_NODE_STRING = 3; // @gotags: copier:"GAP_NODE_STRING" //指定节点(当指定该参数时,GAP_NNODE必须为"") + string GAP_SUBMIT_TYPE = 4; // @gotags: copier:"GAP_SUBMIT_TYPE" //cmd(命令行模式) + string GAP_JOB_NAME = 5; // @gotags: copier:"GAP_JOB_NAME" //作业名称 + string GAP_WORK_DIR = 6; // @gotags: copier:"GAP_WORK_DIR" //工作路径 + string GAP_QUEUE = 7; // @gotags: copier:"GAP_QUEUE" //队列名称 + string GAP_NPROC = 8; // @gotags: copier:"GAP_NPROC" //总核心数(GAP_NPROC和GAP_PPN选其一填写) + string GAP_PPN = 9; // @gotags: copier:"GAP_PPN" //CPU核心/节点(GAP_NPROC和GAP_PPN选其一填写) + string GAP_NGPU = 10; // @gotags: copier:"GAP_NGPU" //GPU卡数/节点 + string GAP_NDCU = 11; // @gotags: copier:"GAP_NDCU" //DCU卡数/节点 + string GAP_JOB_MEM = 12; // @gotags: copier:"GAP_JOB_MEM" //每个节点内存值,单位为MB/GB + string GAP_WALL_TIME = 13; // @gotags: copier:"GAP_WALL_TIME" //最大运行时长(HH:MM:ss) + string GAP_EXCLUSIVE = 14; // @gotags: copier:"GAP_EXCLUSIVE" // 是否独占节点,1为独占,空为非独占 + string GAP_APPNAME = 15; // @gotags: copier:"GAP_APPNAME" //BASE(基础应用),支持填写具体的应用英文名称 + string GAP_MULTI_SUB = 16; // @gotags: copier:"GAP_MULTI_SUB" //作业组长度,建议为小于等于50的正整数 + string GAP_STD_OUT_FILE = 17; // @gotags: copier:"GAP_STD_OUT_FILE" //工作路径/std.out.%j + string GAP_STD_ERR_FILE = 18; // @gotags: copier:"GAP_STD_ERR_FILE" //工作路径/std.err.%j } /******************Job(Submit) End*************************/ diff --git a/adaptor/slurm/slurmShuguang/rpc/slurmShuguang/slurmShuguang.pb.go b/adaptor/slurm/slurmShuguang/rpc/slurmShuguang/slurmShuguang.pb.go index 2da310ff..46197cc0 100644 --- a/adaptor/slurm/slurmShuguang/rpc/slurmShuguang/slurmShuguang.pb.go +++ b/adaptor/slurm/slurmShuguang/rpc/slurmShuguang/slurmShuguang.pb.go @@ -772,15 +772,23 @@ type MapAppJobInfo struct { unknownFields protoimpl.UnknownFields 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_SUBMIT_TYPE string `protobuf:"bytes,3,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,4,opt,name=GAP_JOB_NAME,json=GAPJOBNAME,proto3" json:"GAP_JOB_NAME,omitempty"` // @gotags: copier:"GAP_JOB_NAME" //作业名称 - GAP_WORK_DIR string `protobuf:"bytes,5,opt,name=GAP_WORK_DIR,json=GAPWORKDIR,proto3" json:"GAP_WORK_DIR,omitempty"` // @gotags: copier:"GAP_WORK_DIR" //工作路径 - GAP_QUEUE string `protobuf:"bytes,6,opt,name=GAP_QUEUE,json=GAPQUEUE,proto3" json:"GAP_QUEUE,omitempty"` // @gotags: copier:"GAP_QUEUE" //队列名称 - GAP_WALL_TIME string `protobuf:"bytes,7,opt,name=GAP_WALL_TIME,json=GAPWALLTIME,proto3" json:"GAP_WALL_TIME,omitempty"` // @gotags: copier:"GAP_WALL_TIME" //最大运行时长(HH:MM:ss) - GAP_APPNAME string `protobuf:"bytes,8,opt,name=GAP_APPNAME,json=GAPAPPNAME,proto3" json:"GAP_APPNAME,omitempty"` // @gotags: copier:"GAP_APPNAME" //BASE(基础应用),支持填写具体的应用英文名称 - GAP_STD_OUT_FILE string `protobuf:"bytes,9,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,10,opt,name=GAP_STD_ERR_FILE,json=GAPSTDERRFILE,proto3" json:"GAP_STD_ERR_FILE,omitempty"` // @gotags: copier:"GAP_STD_ERR_FILE" //工作路径/std.err.%j + 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() { @@ -829,6 +837,13 @@ func (x *MapAppJobInfo) GetGAP_NNODE() string { return "" } +func (x *MapAppJobInfo) GetGAP_NODE_STRING() string { + if x != nil { + return x.GAP_NODE_STRING + } + return "" +} + func (x *MapAppJobInfo) GetGAP_SUBMIT_TYPE() string { if x != nil { return x.GAP_SUBMIT_TYPE @@ -857,6 +872,41 @@ func (x *MapAppJobInfo) GetGAP_QUEUE() string { return "" } +func (x *MapAppJobInfo) GetGAP_NPROC() string { + if x != nil { + return x.GAP_NPROC + } + return "" +} + +func (x *MapAppJobInfo) GetGAP_PPN() string { + if x != nil { + return x.GAP_PPN + } + return "" +} + +func (x *MapAppJobInfo) GetGAP_NGPU() string { + if x != nil { + return x.GAP_NGPU + } + return "" +} + +func (x *MapAppJobInfo) GetGAP_NDCU() string { + if x != nil { + return x.GAP_NDCU + } + return "" +} + +func (x *MapAppJobInfo) GetGAP_JOB_MEM() string { + if x != nil { + return x.GAP_JOB_MEM + } + return "" +} + func (x *MapAppJobInfo) GetGAP_WALL_TIME() string { if x != nil { return x.GAP_WALL_TIME @@ -864,6 +914,13 @@ func (x *MapAppJobInfo) GetGAP_WALL_TIME() string { return "" } +func (x *MapAppJobInfo) GetGAP_EXCLUSIVE() string { + if x != nil { + return x.GAP_EXCLUSIVE + } + return "" +} + func (x *MapAppJobInfo) GetGAP_APPNAME() string { if x != nil { return x.GAP_APPNAME @@ -871,6 +928,13 @@ func (x *MapAppJobInfo) GetGAP_APPNAME() string { return "" } +func (x *MapAppJobInfo) GetGAP_MULTI_SUB() string { + if x != nil { + return x.GAP_MULTI_SUB + } + return "" +} + func (x *MapAppJobInfo) GetGAP_STD_OUT_FILE() string { if x != nil { return x.GAP_STD_OUT_FILE @@ -1003,46 +1067,62 @@ var file_slurmShuguang_proto_rawDesc = []byte{ 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, 0xee, 0x02, 0x0a, 0x0d, 0x4d, 0x61, 0x70, 0x41, 0x70, 0x70, 0x4a, 0x6f, 0x62, 0x49, 0x6e, + 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, 0x53, 0x55, 0x42, 0x4d, 0x49, 0x54, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x18, 0x03, 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, 0x04, 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, 0x05, 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, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x47, 0x41, 0x50, 0x51, 0x55, 0x45, 0x55, 0x45, 0x12, 0x22, 0x0a, 0x0d, 0x47, 0x41, - 0x50, 0x5f, 0x57, 0x41, 0x4c, 0x4c, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x47, 0x41, 0x50, 0x57, 0x41, 0x4c, 0x4c, 0x54, 0x49, 0x4d, 0x45, 0x12, 0x1f, - 0x0a, 0x0b, 0x47, 0x41, 0x50, 0x5f, 0x41, 0x50, 0x50, 0x4e, 0x41, 0x4d, 0x45, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x47, 0x41, 0x50, 0x41, 0x50, 0x50, 0x4e, 0x41, 0x4d, 0x45, 0x12, - 0x27, 0x0a, 0x10, 0x47, 0x41, 0x50, 0x5f, 0x53, 0x54, 0x44, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x46, - 0x49, 0x4c, 0x45, 0x18, 0x09, 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, 0x0a, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x47, 0x41, 0x50, 0x53, 0x54, 0x44, 0x45, 0x52, 0x52, 0x46, 0x49, 0x4c, - 0x45, 0x32, 0xf0, 0x01, 0x0a, 0x0d, 0x53, 0x6c, 0x75, 0x72, 0x6d, 0x53, 0x68, 0x75, 0x67, 0x75, - 0x61, 0x6e, 0x67, 0x12, 0x40, 0x0a, 0x07, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x12, 0x19, - 0x2e, 0x73, 0x6c, 0x75, 0x72, 0x6d, 0x53, 0x68, 0x75, 0x67, 0x75, 0x61, 0x6e, 0x67, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x73, 0x6c, 0x75, 0x72, - 0x6d, 0x53, 0x68, 0x75, 0x67, 0x75, 0x61, 0x6e, 0x67, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, - 0x62, 0x52, 0x65, 0x73, 0x70, 0x12, 0x55, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x69, 0x73, - 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x12, 0x20, 0x2e, 0x73, 0x6c, 0x75, 0x72, 0x6d, 0x53, - 0x68, 0x75, 0x67, 0x75, 0x61, 0x6e, 0x67, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x69, 0x73, 0x74, - 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x73, 0x6c, 0x75, 0x72, - 0x6d, 0x53, 0x68, 0x75, 0x67, 0x75, 0x61, 0x6e, 0x67, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x69, - 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x12, 0x46, 0x0a, 0x09, - 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4a, 0x6f, 0x62, 0x12, 0x1b, 0x2e, 0x73, 0x6c, 0x75, 0x72, - 0x6d, 0x53, 0x68, 0x75, 0x67, 0x75, 0x61, 0x6e, 0x67, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, - 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x73, 0x6c, 0x75, 0x72, 0x6d, 0x53, 0x68, + 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, 0x32, 0xf0, + 0x01, 0x0a, 0x0d, 0x53, 0x6c, 0x75, 0x72, 0x6d, 0x53, 0x68, 0x75, 0x67, 0x75, 0x61, 0x6e, 0x67, + 0x12, 0x40, 0x0a, 0x07, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x12, 0x19, 0x2e, 0x73, 0x6c, + 0x75, 0x72, 0x6d, 0x53, 0x68, 0x75, 0x67, 0x75, 0x61, 0x6e, 0x67, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x73, 0x6c, 0x75, 0x72, 0x6d, 0x53, 0x68, + 0x75, 0x67, 0x75, 0x61, 0x6e, 0x67, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x55, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, + 0x79, 0x4a, 0x6f, 0x62, 0x12, 0x20, 0x2e, 0x73, 0x6c, 0x75, 0x72, 0x6d, 0x53, 0x68, 0x75, 0x67, + 0x75, 0x61, 0x6e, 0x67, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, + 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x73, 0x6c, 0x75, 0x72, 0x6d, 0x53, 0x68, + 0x75, 0x67, 0x75, 0x61, 0x6e, 0x67, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, + 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x12, 0x46, 0x0a, 0x09, 0x53, 0x75, 0x62, + 0x6d, 0x69, 0x74, 0x4a, 0x6f, 0x62, 0x12, 0x1b, 0x2e, 0x73, 0x6c, 0x75, 0x72, 0x6d, 0x53, 0x68, 0x75, 0x67, 0x75, 0x61, 0x6e, 0x67, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4a, 0x6f, 0x62, - 0x52, 0x65, 0x73, 0x70, 0x42, 0x10, 0x5a, 0x0e, 0x2f, 0x73, 0x6c, 0x75, 0x72, 0x6d, 0x53, 0x68, - 0x75, 0x67, 0x75, 0x61, 0x6e, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x73, 0x6c, 0x75, 0x72, 0x6d, 0x53, 0x68, 0x75, 0x67, 0x75, + 0x61, 0x6e, 0x67, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, + 0x70, 0x42, 0x10, 0x5a, 0x0e, 0x2f, 0x73, 0x6c, 0x75, 0x72, 0x6d, 0x53, 0x68, 0x75, 0x67, 0x75, + 0x61, 0x6e, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var (