Get desktop application:
View/edit binary Protocol Buffers messages
RPCs called from ccancel
Possible ErrCodes in reply.code: ERR_INVALID_UID, ERR_INVALID_OP_USER, ERR_PERMISSION_USER, ERR_USER_ACCESS_TO_ACCOUNT_DENIED, ERR_ACCOUNT_ALREADY_EXISTS, ERR_INVALID_PARENT_ACCOUNT, ERR_INVALID_PARTITION, ERR_PARENT_ACCOUNT_PARTITION_MISSING, ERR_INVALID_QOS, ERR_PARENT_ACCOUNT_QOS_MISSING, ERR_DEFAULT_QOS_NOT_INHERITED, ERR_UPDATE_DATABASE
Possible ErrCodes in reply.rich_err.code: ERR_INVALID_USER, ERR_USER_NO_PRIVILEGE, ERR_RESOURCE_ALREADY_EXIST, ERR_RESOURCE_NOT_FOUND, ERR_INVALID_ARGUMENT, ERR_UPDATE_DATABASE
Possible ErrCodes in reply.code: ERR_INVALID_UID, ERR_INVALID_OP_USER, ERR_PERMISSION_USER, ERR_INVALID_PARAM, ERR_TIME_LIMIT, ERR_DB_QOS_ALREADY_EXISTS, ERR_UPDATE_DATABASE
Possible ErrCodes in reply.code: ERR_INVALID_UID, ERR_INVALID_OP_USER, ERR_PERMISSION_USER, ERR_INVALID_USERNAME, ERR_NO_ACCOUNT_SPECIFIED, ERR_USER_ALREADY_EXISTS, ERR_INVALID_ACCOUNT, ERR_INVALID_PARTITION, ERR_PARENT_ACCOUNT_PARTITION_MISSING, ERR_PARTITION_MISSING, ERR_INVALID_QOS, ERR_UPDATE_DATABASE
Possible ErrCodes in reply.code: ERR_INVALID_UID, ERR_INVALID_OP_USER, ERR_PERMISSION_USER, ERR_INVALID_WCKEY, ERR_WCKEY_ALREADY_EXISTS, ERR_INVALID_USER, ERR_UPDATE_DATABASE
Possible ErrCodes in reply.status.code: ERR_INVALID_PARAM, ERR_NON_EXISTENT, ERR_CRI_CONTAINER_NOT_READY, ERR_CRI_MULTIPLE_NODES, ERR_PERMISSION_USER, ERR_RPC_FAILURE, ERR_CRI_GENERIC
Possible ErrCodes in reply.rich_error_list[].code: ERR_INVALID_UID, ERR_INVALID_OP_USER, ERR_PERMISSION_USER, ERR_USER_ACCESS_TO_ACCOUNT_DENIED, ERR_INVALID_ACCOUNT, ERR_INVALID_USER, ERR_USER_ACCOUNT_MISMATCH, ERR_UPDATE_DATABASE
Filters
Possible ErrCodes in reply.rich_error_list[].code: ERR_INVALID_UID, ERR_INVALID_OP_USER, ERR_PERMISSION_USER, ERR_USER_ACCESS_TO_ACCOUNT_DENIED, ERR_NOT_FORCE, ERR_INVALID_ACCOUNT, ERR_ACCOUNT_HAS_CHILDREN, ERR_USER_HAS_JOB, ERR_UPDATE_DATABASE
Possible ErrCodes in reply.rich_err.code: ERR_INVALID_USER, ERR_USER_NO_PRIVILEGE, ERR_NOT_FORCE, ERR_RESOURCE_NOT_FOUND, ERR_UPDATE_DATABASE
Possible ErrCodes in reply.rich_error_list[].code: ERR_INVALID_UID, ERR_INVALID_OP_USER, ERR_PERMISSION_USER, ERR_NOT_FORCE, ERR_INVALID_QOS, ERR_QOS_REFERENCES_EXIST, ERR_UPDATE_DATABASE
Possible ErrCodes in reply.rich_error_list[].code: ERR_INVALID_UID, ERR_INVALID_OP_USER, ERR_PERMISSION_USER, ERR_NOT_FORCE, ERR_INVALID_ACCOUNT, ERR_INVALID_USER, ERR_USER_ACCOUNT_MISMATCH, ERR_USER_HAS_JOB, ERR_UPDATE_DATABASE
Possible ErrCodes in reply.rich_error.code: ERR_INVALID_UID, ERR_INVALID_OP_USER, ERR_PERMISSION_USER, ERR_NOT_FORCE, ERR_INVALID_USER, ERR_INVALID_WCKEY, ERR_DEL_DEFAULT_WCKEY, ERR_UPDATE_DATABASE
Possible ErrCodes in reply.status.code: ERR_INVALID_PARAM, ERR_NON_EXISTENT, ERR_CRI_CONTAINER_NOT_READY, ERR_CRI_MULTIPLE_NODES, ERR_PERMISSION_USER, ERR_RPC_FAILURE, ERR_CRI_GENERIC
Possible ErrCodes in reply.rich_error_list[].code: ERR_INVALID_UID, ERR_INVALID_OP_USER, ERR_PERMISSION_USER, ERR_USER_ACCESS_TO_ACCOUNT_DENIED, ERR_INVALID_ACCOUNT, ERR_NO_ACCOUNT_SPECIFIED, ERR_INVALID_PARTITION, ERR_PARENT_ACCOUNT_PARTITION_MISSING, ERR_PARTITION_ALREADY_EXISTS, ERR_PARTITION_MISSING, ERR_CHILD_HAS_PARTITION, ERR_INVALID_QOS, ERR_PARENT_ACCOUNT_QOS_MISSING, ERR_QOS_ALREADY_EXISTS, ERR_QOS_MISSING, ERR_SET_ACCOUNT_QOS, ERR_DUPLICATE_DEFAULT_QOS, ERR_DEFAULT_QOS_MODIFICATION_DENIED, ERR_CHILD_HAS_DEFAULT_QOS, ERR_SET_ALLOWED_QOS, ERR_DEFAULT_QOS_NOT_INHERITED, ERR_UPDATE_DATABASE
Possible ErrCodes in reply.code: ERR_INVALID_UID, ERR_INVALID_OP_USER, ERR_PERMISSION_USER, ERR_INVALID_USER, ERR_INVALID_WCKEY, ERR_UPDATE_DATABASE
If hold_seconds == 0, release the hold constraint timer if any exists; If hold_seconds > 0, add or overwrite a hold constraint timer; If hold_seconds == MaxInt64, add a hold constraint without timer.
Possible ErrCodes in reply.code: ERR_INVALID_UID, ERR_INVALID_OP_USER, ERR_PERMISSION_USER, ERR_INVALID_PARTITION, ERR_PARTITION_MISSING, ERR_INVALID_ACCOUNT
Possible ErrCodes in reply.rich_error_list[].code: ERR_INVALID_UID, ERR_INVALID_OP_USER, ERR_PERMISSION_USER, ERR_INVALID_QOS, ERR_TIME_LIMIT, ERR_CONVERT_TO_INTEGER, ERR_CONVERT_TO_RESOURCE_VIEW, ERR_UPDATE_DATABASE
Possible ErrCodes in reply.rich_error_list[].code: ERR_INVALID_UID, ERR_INVALID_OP_USER, ERR_PERMISSION_USER, ERR_USER_ACCESS_TO_ACCOUNT_DENIED, ERR_INVALID_USER, ERR_INVALID_ACCOUNT, ERR_USER_ACCOUNT_MISMATCH, ERR_INVALID_ADMIN_LEVEL, ERR_INVALID_PARTITION, ERR_PARENT_ACCOUNT_PARTITION_MISSING, ERR_PARTITION_ALREADY_EXISTS, ERR_PARTITION_MISSING, ERR_INVALID_QOS, ERR_USER_EMPTY_PARTITION, ERR_QOS_ALREADY_EXISTS, ERR_QOS_MISSING, ERR_SET_ALLOWED_QOS, ERR_SET_DEFAULT_QOS, ERR_DUPLICATE_DEFAULT_QOS, ERR_DEFAULT_QOS_MODIFICATION_DENIED, ERR_UPDATE_DATABASE
Possible ErrCodes in reply.rich_error_list[].code: ERR_INVALID_UID, ERR_INVALID_OP_USER, ERR_INVALID_ACCOUNT, ERR_USER_ACCESS_TO_ACCOUNT_DENIED
Possible ErrCodes in reply.rich_err.code: ERR_RESOURCE_NOT_FOUND
Possible ErrCodes in reply.rich_error_list[].code: ERR_INVALID_UID, ERR_INVALID_OP_USER, ERR_INVALID_QOS, ERR_QOS_MISSING
Possible ErrCodes in reply.code: ERR_INVALID_USER, ERR_USER_NO_PRIVILEGE, ERR_GENERIC_FAILURE
Possible ErrCodes in reply.rich_error_list[].code: ERR_INVALID_UID, ERR_INVALID_OP_USER, ERR_INVALID_USER, ERR_PERMISSION_USER
Possible ErrCodes in reply.code: ERR_INVALID_UID, ERR_INVALID_OP_USER, ERR_PERMISSION_USER
RPCs called from ccontrol requeue
Reset to this value (0 = default to 1)
Reset to this value (0 = default to 1)
true: reload defaults from config, false: clear all
Possible ErrCodes in reply.rich_error_list[].code: ERR_INVALID_UID, ERR_INVALID_OP_USER, ERR_PERMISSION_USER, ERR_INVALID_USER, ERR_REVOKE_CERTIFICATE, ERR_UPDATE_DATABASE
Possible ErrCodes in reply.reason: ERR_INVALID_PARAM, ERR_PERMISSION_USER, ERR_SIGN_CERTIFICATE, ERR_DUPLICATE_CERTIFICATE, ERR_INVALID_USER, ERR_UPDATE_DATABASE
"localhost, *.domainSuffix"
Possible ErrCodes in reply.code: ERR_CRI_DISABLED, ERR_LUA_FAILED, ERR_INVALID_PARTITION, ERR_INVALID_PARAM, ERR_BLOCKED_ACCOUNT, ERR_BLOCKED_USER, ERR_NO_RESOURCE, ERR_PERMISSION_DENIED, ERR_INVALID_USER, ERR_INVALID_UID, ERR_MAX_JOB_COUNT_PER_USER, ERR_MAX_JOB_COUNT_PER_ACCOUNT, ERR_QOS_JOB_COUNT_EXCEEDED, ERR_NOT_IN_ALLOWED_LIST, ERR_IN_DENIED_LIST, ERR_TRES_PER_JOB_BEYOND, ERR_MAX_TRES_PER_USER_BEYOND, ERR_MAX_TRES_PER_ACCOUNT_BEYOND, ERR_MISSING_DEPENDENCY, ERR_INVALID_DEADLINE, ERR_USER_ACCOUNT_MISMATCH, ERR_PARTITION_MISSING, ERR_HAS_NO_QOS_IN_PARTITION, ERR_DB_INSERT_FAILED, ERR_BEYOND_JOB_ID, ERR_TIME_TIMIT_BEYOND, ERR_INVALID_NODE_LIST, ERR_INVALID_EX_NODE_LIST, ERR_INVALID_WCKEY, ERR_LICENSE_LEGAL_FAILED, ERR_NO_ENOUGH_NODE, ERR_INVALID_NODE_NUM, ERR_INVALID_RESOURCE
Possible ErrCodes in reply.code_list (per-job, no Lua check unlike SubmitBatchJob): ERR_CRI_DISABLED, ERR_INVALID_PARTITION, ERR_INVALID_PARAM, ERR_BLOCKED_ACCOUNT, ERR_BLOCKED_USER, ERR_NO_RESOURCE, ERR_PERMISSION_DENIED, ERR_INVALID_USER, ERR_INVALID_UID, ERR_MAX_JOB_COUNT_PER_USER, ERR_MAX_JOB_COUNT_PER_ACCOUNT, ERR_QOS_JOB_COUNT_EXCEEDED, ERR_NOT_IN_ALLOWED_LIST, ERR_IN_DENIED_LIST, ERR_TRES_PER_JOB_BEYOND, ERR_MAX_TRES_PER_USER_BEYOND, ERR_MAX_TRES_PER_ACCOUNT_BEYOND, ERR_MISSING_DEPENDENCY, ERR_INVALID_DEADLINE, ERR_USER_ACCOUNT_MISMATCH, ERR_PARTITION_MISSING, ERR_HAS_NO_QOS_IN_PARTITION, ERR_DB_INSERT_FAILED, ERR_BEYOND_JOB_ID, ERR_TIME_TIMIT_BEYOND, ERR_INVALID_NODE_LIST, ERR_INVALID_EX_NODE_LIST, ERR_INVALID_WCKEY, ERR_LICENSE_LEGAL_FAILED, ERR_NO_ENOUGH_NODE, ERR_INVALID_NODE_NUM, ERR_INVALID_RESOURCE
Possible ErrCodes in reply.code: ERR_INVALID_PARAM, ERR_CRI_DISABLED, ERR_NON_EXISTENT, ERR_STEP_RES_BEYOND, ERR_PERMISSION_DENIED, ERR_INVALID_NODE_LIST, ERR_INVALID_EX_NODE_LIST, ERR_INVALID_RESOURCE, ERR_TIME_TIMIT_BEYOND, ERR_NO_ENOUGH_NODE
RPCs called from Cfored
RPCs called from Craned
(message has no fields)
(message has no fields)
Craned will proxy the following container-related RPCs to CRI Service.
----------------------------------- Called from PMIX --------------------------------------------------------
----------------------------------- Called from CraneCtld ----------------------------------------------------
(message has no fields)
(message has no fields)
----------------------------------- Called from Craned ------------------------------------------------------
Resume operations are applied on job granularity.
----------------------------------- Called from Supervisor ---------------------------------------------------
Suspend operations are applied on job granularity.
If the job is an interactive job, the resource uuid is also revoked. If there's no process in this interactive job, just deallocate all the resources. If there are processes in this interactive job, kill all the processes and deallocate resources. If the job is a batch job, just kill it.
----------------------------------- Called from Pam Module ---------------------------------------------------
User ID for authorization
Node names to query, empty means all nodes
User ID for authorization
Used in: ,
Used in:
Used in: ,
Used in: , , ,
Used as response type in: CraneCtld.AttachContainerStep, Craned.AttachContainerStep
Used as request type in: CraneCtld.AttachContainerStep, Craned.AttachContainerStep
Used in: , ,
Used as response type in: CraneCtldForInternal.BroadcastPmixPort, Craned.BroadcastPmixPort
Used as request type in: CraneCtldForInternal.BroadcastPmixPort, Craned.BroadcastPmixPort
sender
nodes
grpc port or ucx addr (must bytes)
Used in:
Used in:
from InteractiveMeta.Pty
set when crun used --input=<task_id>
for --layout
for --layout
for --layout and execCranedIds parsing
Used in:
Used in: , , ,
env in container
CDI fully-qualified names for devices allocated to this container. Populated by craned at step dispatch time; NOT persisted to database.
Used in:
Used in: , , , , ,
Used in:
Physical CPU topology of this node.
Used in: , , , ,
Used in:
Used in:
Used in: , ,
Used in: ,
Used in:
Used in: ,
Used in:
Used in:
Used in:
Used in:
Used in: , , , , , , , , , , , , , ,
Success
Invalid UID passed
Invalid operation user
Invalid user
User permissions too low, no permission to operate
User duplicate account insertion
User does not have permission for the account
Invalid permission level
User does not belong to the account
Invalid account
Duplicate account insertion
Invalid parent account
Account has child nodes,cannot be deleted.
Invalid partition, partition does not exist
Account/user does not include this partition
Account/user duplicate insertion
Parent account does not include this partition
Cannot add QoS when user has no partition
Failed to delete the account partition as child nodes contain this partition.
Invalid QoS, QoS does not exist
Duplicate QoS insertion in the database.
QoS reference count is not zero.
String to integer conversion failed
Invalid time value
Account/user does not include this QoS.
Account/user duplicate insertion.
Parent account does not include this QoS.
QoS is the default QoS, but not found in the new QoS list.
Default QoS is not in the allowed QoS list
Duplicate default QoS setting
Failed to delete the account QoS as child nodes have set it as the default QoS.
QoS is used by some descendant node or itself of the account.
Qos not in allowed qos list or is already the default qos
// QoS cannot be directly deleted when it is set as the default QoS.
Database update failed
The current account is not in the allowed account list for the partition.
The current account has been explicitly added to the deny list for the partition.
CRI runtime returns error. For other errors in Crane, use ERR_GENERIC_FAILURE.
CRI support is disabled in the cluster.
Job/step is pending or container is not ready.
Requested CRI operation is not supported in multi-node steps.
Invalid mem format when parsing mem
Step resource request exceeds job resource.
PMIx initialization or runtime error
Partition max_tres_per_job exceeded
Partition max_wall_duration_per_job exceeded
Partition max_submit_jobs exceeded (user dimension)
Partition max_submit_jobs exceeded (account dimension)
Used as response type in: CraneCtld.ExecInContainerStep, Craned.ExecInContainerStep
Used as request type in: CraneCtld.ExecInContainerStep, Craned.ExecInContainerStep
Used in:
Used in: , ,
Used in: , ,
Task ID to forward crun input to
Used in: ,
Used in: , ,
Append mode for output and error files
For crun only
Used in:
CPU usage in nanoseconds
Memory usage in bytes
Process count
Used in: , ,
Used in: , ,
Static job information
This is only used when querying Container jobs. For other types of jobs, this field is ignored.
25-28 Reserved
Dynamic job information
The time of different nodes across the whole cluster might not always be synchronized. If the time on the front end node is more than several seconds ahead of the CraneCtld node, a negative elapsed time might occur. To avoid this, the elapsed time of a job is calculated on the CraneCtld side.
Used in:
Used in: , , , , , , , , , , ,
Used in: , , ,
Used in:
Used in:
Used in: , , , , ,
-------- Fields that are set at the submission time. -------
egid
cbatch --pod: Pod ccon (standalone): Pod + Container ccon (nested): Container (StepToCtld only)
Crun and cbatch script content
Current working directory
Array submission spec for this job. Child identity is runtime-only.
Used in:
Used in: ,
Used in: , , , , ,
Used in: ,
(message has no fields)
Used in:
Used in:
Used in:
Used in:
user and account
account and qos
user
qos
account/user-partition
wckey
Used in: , ,
modify item field
new value
Used in:
Used in: ,
Used in:
Unix timestamp in nanoseconds
Unix timestamp in nanoseconds
Physical CPU topology of a node or job topology constraint.
Used in: ,
Used in:
Used in:
Used in:
Used in: ,
Used in: ,
Used in: , , ,
Used in: , ,
Pod name, will use to generate hostname
Runtimes only support userns in Pod level. RunAsUser and RunAsGroup is also limited to Pod. (But can be extended to Container level)
User-specified DNS servers; prepended before system defaults. Full DNSConfig (searches/options) is handled by backend only.
Used in:
Used in:
UserNamespace userns_options = 5; NOTE: UserNamespace is handled by backend only.
Used in:
Used in:
Used in:
Used in: ,
Used as response type in: CraneCtld.QueryCranedInfo, CraneCtldForInternal.QueryCranedInfo
Used as request type in: CraneCtld.QueryCranedInfo, CraneCtldForInternal.QueryCranedInfo
Used in:
Used as response type in: CraneForeD.QueryStepFromPort, Craned.QueryStepFromPort
Used as request type in: CraneForeD.QueryStepFromPort, Craned.QueryStepFromPort
Used in:
Used in:
Used in:
grpc port or ucx addr (must bytes)
Used in:
Used in: , , , ,
Used in: ,
Used in: , , , , ,
Used in: , , , , , , , , , , , , , , , ,
Used in:
Fields that won't change after this job is accepted.
Fields that will change after this job is accepted.
Wall-clock time when the job was suspended. Used to extend end_time upon resume so that suspended time does not count toward the execution timeout.
For array children: the materialized array-task identity.
For array parents: whether child jobs have been materialized.
Used in:
Fields that won't change after this step is accepted.
Fields that will change after this step is accepted.
Used in: ,
seconds_before_kill
Used in:
(B) Send the signal only to the batch shell, not to other job steps.
(R) Allow this job to overlap with a reservation that has MaxStartDelay set
Used in:
Used in:
Static step information
24-29 Reserved
Dynamic step information
The time of different nodes across the whole cluster might not always be synchronized. If the time on the front end node is more than several seconds ahead of the CraneCtld node, a negative elapsed time might occur. To avoid this, the elapsed time of a step is calculated on the CraneCtld side.
Used as response type in: CraneCtldForInternal.StepStatusChange, Craned.StepStatusChange
Used as request type in: CraneCtldForInternal.StepStatusChange, Craned.StepStatusChange
Used in: , , ,
-------- Fields that are set at the submission time. -------
account, qos from job
Only for authorization
Step <-> Container
Current working directory
Used in: , , ,
For execution step
If this step is PENDING, start_time is either not set (default constructed) or an estimated start time. If this step is RUNNING, start_time is the actual starting time.
Currently Only used in CraneCtld
Currently Only used in CraneCtld
Not used now.
task_node_list[task_id] = index of the node in nodelist that owns this task. Size equals ntasks. Provides the authoritative task_id -> node_idx mapping.
Used in: , ,
Used in:
Used in:
(message has no fields)
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
(message has no fields)
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
If set, deliver stdin only to the specified task; otherwise broadcast.
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
(message has no fields)
Used in:
Used in:
Used in:
The rank/id of the task that produced this output.
Used in:
Used in: ,
Used in: ,
Used in:
Used in:
Used in:
Note: UserInfo DIFFERS from the `User` struct in C++ code and database representation and is ONLY used for communication between CraneCtld and cacctmgr command. If an user belongs to multiple accounts, There will be multiple `UserInfo` messages with `account` pointing to each account. For example, if a user (uid=1) belongs to accounts `1,2,3`, there will be three `UserInfo` messages: (uid=1, account=1), (uid=1, account=2), (uid=1, account=3). The c++ code and database representation use a Map<account name, AttrsInAccount> to contain in ONE UserInfo message all the information belonging to different accounts.
Used in: ,
Used in:
Used in:
Used in:
Used in:
Used in: