From 1aa09cf81aad046503d818141fa98cbe5db0fdce Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Thu, 11 Jun 2026 17:07:10 +0100 Subject: [PATCH] Update SLURM client and job scheduler to v0.0.44 of REST api Generate new slurm reset v0.0.44 models from OpenAPI data. Factor out common models from slurmdb models. Rename two fields called list to list_1 that confuses type annotation, alias CurrentEnum as JobStateEnum, and drop root field reference in job_state. Update workflow to use Python 3.11 --- .github/workflows/python-package.yml | 2 +- ParProcCo/job_scheduler.py | 14 +- ParProcCo/slurm/README.md | 6 +- ParProcCo/slurm/generate_models.py | 2 +- ParProcCo/slurm/slurm_client.py | 2 +- ParProcCo/slurm/slurm_rest.py | 3448 +++++++++-------- ParProcCo/slurm/slurmdb_rest.py | 5311 ++------------------------ pyproject.toml | 6 + tests/utils.py | 2 +- 9 files changed, 2115 insertions(+), 6678 deletions(-) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index 4886b3a..d0bc679 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -15,7 +15,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.10"] + python-version: ["3.11"] steps: - uses: actions/checkout@v4 diff --git a/ParProcCo/job_scheduler.py b/ParProcCo/job_scheduler.py index 0f9487c..1a09e19 100644 --- a/ParProcCo/job_scheduler.py +++ b/ParProcCo/job_scheduler.py @@ -15,10 +15,10 @@ from .job_scheduling_information import JobSchedulingInformation from .slurm.slurm_client import SlurmClient from .slurm.slurm_rest import ( + CurrentEnum as JobStateEnum, JobDescMsg, JobInfo, JobSubmitReq, - JobStateEnum, StringArray, Uint32NoValStruct, Uint64NoValStruct, @@ -38,13 +38,6 @@ ], ) -# class NewJobStateEnum(Enum): -# CANCELLED = "CANCELLED" # -# LAUNCH_FAILED = "LAUNCH_FAILED" # -# UPDATE_DB = "UPDATE_DB" # -# RECONFIG_FAIL = "RECONFIG_FAIL" # -# POWER_UP_NODE = "POWER_UP_NODE" # - class STATEGROUP(tuple[SLURMSTATE], Enum): # type: ignore OUTOFTIME = (SLURMSTATE.TIMEOUT, SLURMSTATE.DEADLINE) @@ -151,7 +144,7 @@ def fetch_and_update_state( job_id = job_info.job_id if job_id is None or job_id < 0: raise ValueError(f"Job info has invalid job id: {job_info}") - state = job_info.job_state.root + state = job_info.job_state slurm_state = SLURMSTATE[state[0].value] if state else None start_time = ( @@ -532,13 +525,14 @@ def handle_timeouts( if deadline is not None ] ) + logging.debug("Next deadline: %s", next_deadline) check_time = min( ((next_deadline - datetime.now()) / 2), timedelta(minutes=1) ) if not_started: not_started = handle_not_started(not_started, check_time=check_time) - logging.info("Not started: %i", len(not_started)) + logging.info("Not started: %i (%s)", len(not_started), check_time) for jsi in wait_for_ended( [v for k, v in running_jobs.items() if k not in not_started], diff --git a/ParProcCo/slurm/README.md b/ParProcCo/slurm/README.md index 0f010c5..2568dff 100644 --- a/ParProcCo/slurm/README.md +++ b/ParProcCo/slurm/README.md @@ -1,6 +1,6 @@ Get OpenAPI schema from endpoint: ``` -$ curl -H X-SLURM-USER-NAME:${USER} -H X-SLURM-USER-TOKEN:${SLURM_TOKEN) "${SLURM_REST_URL}/openapi" -o slurm-rest.json +$ curl -H X-SLURM-USER-NAME:${USER} -H X-SLURM-USER-TOKEN:${SLURM_TOKEN} "${SLURM_REST_URL}/openapi" -o slurm-rest.json ``` Filter and rename schema and refs to remove version ``` @@ -9,7 +9,7 @@ $ python generate_models.py -d slurm-rest.json slurmdb-rest.yaml ``` Run datamodel generating script ``` -$ datamodel-codegen --input slurm-rest.yaml --target-python-version 3.11 --use-schema-description --use-field-description --output-model-type pydantic_v2.BaseModel --use-union-operator --use-standard-collections --field-constraints --use-double-quotes --output slurm_rest.py -$ datamodel-codegen --input slurmdb-rest.yaml --target-python-version 3.11 --use-schema-description --use-field-description --output-model-type pydantic_v2.BaseModel --use-union-operator --use-standard-collections --field-constraints --use-double-quotes --output slurmdb_rest.py +$ datamodel-codegen --input slurm-rest.yaml --target-python-version 3.12 --use-schema-description --use-field-description --output-model-type pydantic_v2.BaseModel --use-union-operator --use-standard-collections --field-constraints --use-double-quotes --output slurm_rest.py +$ datamodel-codegen --input slurmdb-rest.yaml --target-python-version 3.12 --use-schema-description --use-field-description --output-model-type pydantic_v2.BaseModel --use-union-operator --use-standard-collections --field-constraints --use-double-quotes --output slurmdb_rest.py ``` diff --git a/ParProcCo/slurm/generate_models.py b/ParProcCo/slurm/generate_models.py index b09ae20..dce50e4 100755 --- a/ParProcCo/slurm/generate_models.py +++ b/ParProcCo/slurm/generate_models.py @@ -81,7 +81,7 @@ def create_argparser(): default=False, ) ap.add_argument( - "--version", "-v", help="str: slurm OpenAPI version string", default="v0.0.38" + "--version", "-v", help="str: slurm OpenAPI version string", default="v0.0.44" ) ap.add_argument( "input_file", diff --git a/ParProcCo/slurm/slurm_client.py b/ParProcCo/slurm/slurm_client.py index 92c5b86..3c4c57c 100644 --- a/ParProcCo/slurm/slurm_client.py +++ b/ParProcCo/slurm/slurm_client.py @@ -16,7 +16,7 @@ OpenapiKillJobResp, ) -_SLURM_VERSION = "v0.0.42" +_SLURM_VERSION = "v0.0.44" def get_slurm_token() -> str: diff --git a/ParProcCo/slurm/slurm_rest.py b/ParProcCo/slurm/slurm_rest.py index e3295f8..d98b29c 100644 --- a/ParProcCo/slurm/slurm_rest.py +++ b/ParProcCo/slurm/slurm_rest.py @@ -1,16 +1,14 @@ # generated by datamodel-codegen: -# filename: slurm-rest.yaml -# timestamp: 2025-03-20T16:17:28+00:00 +# filename: slurm-rest-44.yaml +# timestamp: 2026-06-11T15:12:31+00:00 from __future__ import annotations - -from enum import Enum -from typing import Any - +from enum import StrEnum from pydantic import BaseModel, Field, RootModel +from typing import Any -class AccountFlag(Enum): +class Flag(StrEnum): DELETED = "DELETED" WithAssociations = "WithAssociations" WithCoordinators = "WithCoordinators" @@ -18,10 +16,6 @@ class AccountFlag(Enum): UsersAreCoords = "UsersAreCoords" -class AccountFlags(RootModel[list[AccountFlag]]): - root: list[AccountFlag] - - class AccountShort(BaseModel): description: str | None = None """ @@ -40,30 +34,6 @@ class Allocated(BaseModel): """ -class AcctGatherProfileEnum(Enum): - NOT_SET = "NOT_SET" - NONE = "NONE" - ENERGY = "ENERGY" - LUSTRE = "LUSTRE" - NETWORK = "NETWORK" - TASK = "TASK" - - -class AcctGatherProfile(RootModel[list[AcctGatherProfileEnum]]): - root: list[AcctGatherProfileEnum] - - -class AdminLvlEnum(Enum): - Not_Set = "Not Set" - None_ = "None" - Operator = "Operator" - Administrator = "Administrator" - - -class AdminLvl(RootModel[list[AdminLvlEnum]]): - root: list[AdminLvlEnum] - - class Default(BaseModel): qos: str | None = None """ @@ -71,7 +41,7 @@ class Default(BaseModel): """ -class AssocFlag(Enum): +class Flag1(StrEnum): DELETED = "DELETED" NoUpdate = "NoUpdate" Exact = "Exact" @@ -79,19 +49,11 @@ class AssocFlag(Enum): UsersAreCoords = "UsersAreCoords" -class AssocFlags(RootModel[list[AssocFlag]]): - root: list[AssocFlag] - - -class AssocSharesObjWrapTypeEnum(Enum): +class TypeEnum(StrEnum): USER = "USER" ASSOCIATION = "ASSOCIATION" -class AssocSharesObjWrapType(RootModel[list[AssocSharesObjWrapTypeEnum]]): - root: list[AssocSharesObjWrapTypeEnum] - - class AssocShort(BaseModel): account: str | None = None """ @@ -164,18 +126,14 @@ class Controller(BaseModel): """ -class ClusterRecFlag(Enum): +class Flag2(StrEnum): + DELETED = "DELETED" REGISTERING = "REGISTERING" MULTIPLE_SLURMD = "MULTIPLE_SLURMD" - FRONT_END = "FRONT_END" FEDERATION = "FEDERATION" EXTERNAL = "EXTERNAL" -class ClusterRecFlags(RootModel[list[ClusterRecFlag]]): - root: list[ClusterRecFlag] - - class ControllerPing(BaseModel): hostname: str | None = None """ @@ -185,17 +143,17 @@ class ControllerPing(BaseModel): """ Number of microseconds it took to successfully ping or timeout """ - mode: str | None = None + mode: str | None = Field(None, deprecated=True) """ The operating mode of the responding slurmctld """ - pinged: str | None = None + pinged: str | None = Field(None, deprecated=True) """ Ping result """ primary: bool """ - Is responding slurmctld the primary controller + Is responding slurmctld the primary controller (Is responding slurmctld the primary controller) """ responding: bool """ @@ -222,41 +180,12 @@ class CoordList(RootModel[list[Coord]]): root: list[Coord] -class CpuBindingFlag(Enum): - CPU_BIND_TO_THREADS = "CPU_BIND_TO_THREADS" - CPU_BIND_TO_CORES = "CPU_BIND_TO_CORES" - CPU_BIND_TO_SOCKETS = "CPU_BIND_TO_SOCKETS" - CPU_BIND_TO_LDOMS = "CPU_BIND_TO_LDOMS" - CPU_BIND_NONE = "CPU_BIND_NONE" - CPU_BIND_RANK = "CPU_BIND_RANK" - CPU_BIND_MAP = "CPU_BIND_MAP" - CPU_BIND_MASK = "CPU_BIND_MASK" - CPU_BIND_LDRANK = "CPU_BIND_LDRANK" - CPU_BIND_LDMAP = "CPU_BIND_LDMAP" - CPU_BIND_LDMASK = "CPU_BIND_LDMASK" - VERBOSE = "VERBOSE" - CPU_BIND_ONE_THREAD_PER_CORE = "CPU_BIND_ONE_THREAD_PER_CORE" - - -class CpuBindingFlags(RootModel[list[CpuBindingFlag]]): - root: list[CpuBindingFlag] - - -class CrTypeEnum(Enum): - CPU = "CPU" - SOCKET = "SOCKET" - CORE = "CORE" - BOARD = "BOARD" - MEMORY = "MEMORY" - ONE_TASK_PER_CORE = "ONE_TASK_PER_CORE" - PACK_NODES = "PACK_NODES" - CORE_DEFAULT_DIST_BLOCK = "CORE_DEFAULT_DIST_BLOCK" - LLN = "LLN" - LINEAR = "LINEAR" - - -class CrType(RootModel[list[CrTypeEnum]]): - root: list[CrTypeEnum] +class Flag3(StrEnum): + WILD_MINUTE = "WILD_MINUTE" + WILD_HOUR = "WILD_HOUR" + WILD_DAY_OF_MONTH = "WILD_DAY_OF_MONTH" + WILD_MONTH = "WILD_MONTH" + WILD_DAY_OF_WEEK = "WILD_DAY_OF_WEEK" class Line(BaseModel): @@ -270,16 +199,40 @@ class Line(BaseModel): """ -class CronEntryFlag(Enum): - WILD_MINUTE = "WILD_MINUTE" - WILD_HOUR = "WILD_HOUR" - WILD_DAY_OF_MONTH = "WILD_DAY_OF_MONTH" - WILD_MONTH = "WILD_MONTH" - WILD_DAY_OF_WEEK = "WILD_DAY_OF_WEEK" - - -class CronEntryFlags(RootModel[list[CronEntryFlag]]): - root: list[CronEntryFlag] +class CronEntry(BaseModel): + command: str | None = None + """ + Command to run + """ + day_of_month: str | None = None + """ + Ranged string specifying eligible day of month values (e.g. 0-10,29) + """ + day_of_week: str | None = None + """ + Ranged string specifying eligible day of week values (e.g.0-3,7) + """ + flags: list[Flag3] | None = None + """ + Flags + """ + hour: str | None = None + """ + Ranged string specifying eligible hour values (e.g. 0-5,23) + """ + line: Line | None = None + minute: str | None = None + """ + Ranged string specifying eligible minute values (e.g. 0-10,50) + """ + month: str | None = None + """ + Ranged string specifying eligible month values (e.g. 0-5,12) + """ + specification: str | None = None + """ + Complete time specification (* means valid for all allowed values) - minute hour day_of_month month day_of_week + """ class CsvString(RootModel[list[str]]): @@ -301,22 +254,22 @@ class Float64NoValStruct(BaseModel): """ -class Hostlist(RootModel[list[str]]): - root: list[str] +class Hostlist(CsvString): + pass -class HostlistString(RootModel[list[str]]): - root: list[str] +class HostlistString(CsvString): + pass class Time(BaseModel): time_end: int | None = None """ - When the instance will end (UNIX timestamp) + When the instance will end (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]')) """ time_start: int | None = None """ - When the instance will start (UNIX timestamp) + When the instance will start (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]')) """ @@ -378,6 +331,17 @@ class Comment(BaseModel): """ +class Flag4(StrEnum): + NONE = "NONE" + CLEAR_SCHEDULING = "CLEAR_SCHEDULING" + NOT_SET = "NOT_SET" + STARTED_ON_SUBMIT = "STARTED_ON_SUBMIT" + STARTED_ON_SCHEDULE = "STARTED_ON_SCHEDULE" + STARTED_ON_BACKFILL = "STARTED_ON_BACKFILL" + START_RECEIVED = "START_RECEIVED" + JOB_ALTERED = "JOB_ALTERED" + + class Mcs(BaseModel): label: str | None = None """ @@ -394,6 +358,52 @@ class Reservation(BaseModel): """ Name of reservation to use """ + requested: str | None = None + """ + Comma-separated list of requested reservation names + """ + + +class CurrentEnum(StrEnum): + PENDING = "PENDING" + RUNNING = "RUNNING" + SUSPENDED = "SUSPENDED" + COMPLETED = "COMPLETED" + CANCELLED = "CANCELLED" + FAILED = "FAILED" + TIMEOUT = "TIMEOUT" + NODE_FAIL = "NODE_FAIL" + PREEMPTED = "PREEMPTED" + BOOT_FAIL = "BOOT_FAIL" + DEADLINE = "DEADLINE" + OUT_OF_MEMORY = "OUT_OF_MEMORY" + LAUNCH_FAILED = "LAUNCH_FAILED" + REQUEUED = "REQUEUED" + REQUEUE_HOLD = "REQUEUE_HOLD" + SPECIAL_EXIT = "SPECIAL_EXIT" + RESIZING = "RESIZING" + CONFIGURING = "CONFIGURING" + COMPLETING = "COMPLETING" + STOPPED = "STOPPED" + RECONFIG_FAIL = "RECONFIG_FAIL" + POWER_UP_NODE = "POWER_UP_NODE" + REVOKED = "REVOKED" + REQUEUE_FED = "REQUEUE_FED" + RESV_DEL_HOLD = "RESV_DEL_HOLD" + SIGNALING = "SIGNALING" + STAGE_OUT = "STAGE_OUT" + EXPEDITING = "EXPEDITING" + + +class State(BaseModel): + current: list[CurrentEnum] | None = None + """ + Current state + """ + reason: str | None = None + """ + Reason for previous Pending or Failed state + """ class System(BaseModel): @@ -452,7 +462,23 @@ class JobArrayResponseMsgEntry(BaseModel): """ -class JobFlag(Enum): +class CpuBindingFlag(StrEnum): + CPU_BIND_TO_THREADS = "CPU_BIND_TO_THREADS" + CPU_BIND_TO_CORES = "CPU_BIND_TO_CORES" + CPU_BIND_TO_SOCKETS = "CPU_BIND_TO_SOCKETS" + CPU_BIND_TO_LDOMS = "CPU_BIND_TO_LDOMS" + CPU_BIND_NONE = "CPU_BIND_NONE" + CPU_BIND_RANK = "CPU_BIND_RANK" + CPU_BIND_MAP = "CPU_BIND_MAP" + CPU_BIND_MASK = "CPU_BIND_MASK" + CPU_BIND_LDRANK = "CPU_BIND_LDRANK" + CPU_BIND_LDMAP = "CPU_BIND_LDMAP" + CPU_BIND_LDMASK = "CPU_BIND_LDMASK" + VERBOSE = "VERBOSE" + CPU_BIND_ONE_THREAD_PER_CORE = "CPU_BIND_ONE_THREAD_PER_CORE" + + +class Flag5(StrEnum): KILL_INVALID_DEPENDENCY = "KILL_INVALID_DEPENDENCY" NO_KILL_INVALID_DEPENDENCY = "NO_KILL_INVALID_DEPENDENCY" HAS_STATE_DIRECTORY = "HAS_STATE_DIRECTORY" @@ -476,6 +502,7 @@ class JobFlag(Enum): JOB_ACCRUE_TIME_RESET = "JOB_ACCRUE_TIME_RESET" CRON_JOB = "CRON_JOB" EXACT_MEMORY_REQUESTED = "EXACT_MEMORY_REQUESTED" + EXTERNAL_JOB = "EXTERNAL_JOB" USING_DEFAULT_ACCOUNT = "USING_DEFAULT_ACCOUNT" USING_DEFAULT_PARTITION = "USING_DEFAULT_PARTITION" USING_DEFAULT_QOS = "USING_DEFAULT_QOS" @@ -486,21 +513,27 @@ class JobFlag(Enum): BACKFILL_ATTEMPTED = "BACKFILL_ATTEMPTED" SCHEDULING_ATTEMPTED = "SCHEDULING_ATTEMPTED" STEPMGR_ENABLED = "STEPMGR_ENABLED" + SPREAD_SEGMENTS = "SPREAD_SEGMENTS" + CONSOLIDATE_SEGMENTS = "CONSOLIDATE_SEGMENTS" + EXPEDITED_REQUEUE = "EXPEDITED_REQUEUE" -class JobFlags(RootModel[list[JobFlag]]): - root: list[JobFlag] - - -class Power(BaseModel): - flags: list | None = None - - -class JobInfoGresDetail(RootModel[list[str]]): - root: list[str] +class KillWarningFlag(StrEnum): + BATCH_JOB = "BATCH_JOB" + ARRAY_TASK = "ARRAY_TASK" + FULL_STEPS_ONLY = "FULL_STEPS_ONLY" + FULL_JOB = "FULL_JOB" + FEDERATION_REQUEUE = "FEDERATION_REQUEUE" + HURRY = "HURRY" + OUT_OF_MEMORY = "OUT_OF_MEMORY" + NO_SIBLING_JOBS = "NO_SIBLING_JOBS" + RESERVATION_JOB = "RESERVATION_JOB" + VERBOSE = "VERBOSE" + CRON_JOBS = "CRON_JOBS" + WARNING_SENT = "WARNING_SENT" -class JobMailFlag(Enum): +class MailTypeEnum(StrEnum): BEGIN = "BEGIN" END = "END" FAIL = "FAIL" @@ -514,19 +547,92 @@ class JobMailFlag(Enum): INVALID_DEPENDENCY = "INVALID_DEPENDENCY" -class JobMailFlags(RootModel[list[JobMailFlag]]): - root: list[JobMailFlag] +class MemoryBindingTypeEnum(StrEnum): + NONE = "NONE" + RANK = "RANK" + MAP = "MAP" + MASK = "MASK" + LOCAL = "LOCAL" + VERBOSE = "VERBOSE" + PREFER = "PREFER" + + +class OpenModeEnum(StrEnum): + APPEND = "APPEND" + TRUNCATE = "TRUNCATE" + + +class ProfileEnum(StrEnum): + NOT_SET = "NOT_SET" + NONE = "NONE" + ENERGY = "ENERGY" + LUSTRE = "LUSTRE" + NETWORK = "NETWORK" + TASK = "TASK" + + +class SharedEnum(StrEnum): + none = "none" + oversubscribe = "oversubscribe" + user = "user" + mcs = "mcs" + topo = "topo" + + +class X11Enum(StrEnum): + FORWARD_ALL_NODES = "FORWARD_ALL_NODES" + BATCH_NODE = "BATCH_NODE" + FIRST_NODE = "FIRST_NODE" + LAST_NODE = "LAST_NODE" + + +class Power(BaseModel): + flags: list[Any] | None = Field(None, deprecated=True) + + +class JobInfoGresDetail(CsvString): + pass + + +class SelectTypeEnum(StrEnum): + AVAILABLE = "AVAILABLE" + ONE_ROW = "ONE_ROW" + RESERVED = "RESERVED" + + +class SelectTypeEnum1(StrEnum): + CPU = "CPU" + SOCKET = "SOCKET" + CORE = "CORE" + BOARD = "BOARD" + MEMORY = "MEMORY" + ONE_TASK_PER_CORE = "ONE_TASK_PER_CORE" + PACK_NODES = "PACK_NODES" + CORE_DEFAULT_DIST_BLOCK = "CORE_DEFAULT_DIST_BLOCK" + LLN = "LLN" + LINEAR = "LINEAR" -class JobResCoreStatu(Enum): +class StatusEnum(StrEnum): INVALID = "INVALID" UNALLOCATED = "UNALLOCATED" ALLOCATED = "ALLOCATED" IN_USE = "IN_USE" -class JobResCoreStatus(RootModel[list[JobResCoreStatu]]): - root: list[JobResCoreStatu] +class JobResCore(BaseModel): + index: int + """ + Core index + """ + status: list[StatusEnum] + """ + Core status + """ + + +class JobResCoreArray(RootModel[list[JobResCore]]): + root: list[JobResCore] class Cpus(BaseModel): @@ -551,54 +657,23 @@ class Memory(BaseModel): """ -class JobSharedEnum(Enum): - none = "none" - oversubscribe = "oversubscribe" - user = "user" - mcs = "mcs" - topo = "topo" - - -class JobShared(RootModel[list[JobSharedEnum]]): - root: list[JobSharedEnum] - - -class JobStateEnum(Enum): - PENDING = "PENDING" - RUNNING = "RUNNING" - SUSPENDED = "SUSPENDED" - COMPLETED = "COMPLETED" - CANCELLED = "CANCELLED" - FAILED = "FAILED" - TIMEOUT = "TIMEOUT" - NODE_FAIL = "NODE_FAIL" - PREEMPTED = "PREEMPTED" - BOOT_FAIL = "BOOT_FAIL" - DEADLINE = "DEADLINE" - OUT_OF_MEMORY = "OUT_OF_MEMORY" - LAUNCH_FAILED = "LAUNCH_FAILED" - REQUEUED = "REQUEUED" - REQUEUE_HOLD = "REQUEUE_HOLD" - SPECIAL_EXIT = "SPECIAL_EXIT" - RESIZING = "RESIZING" - CONFIGURING = "CONFIGURING" - COMPLETING = "COMPLETING" - STOPPED = "STOPPED" - RECONFIG_FAIL = "RECONFIG_FAIL" - POWER_UP_NODE = "POWER_UP_NODE" - REVOKED = "REVOKED" - REQUEUE_FED = "REQUEUE_FED" - RESV_DEL_HOLD = "RESV_DEL_HOLD" - SIGNALING = "SIGNALING" - STAGE_OUT = "STAGE_OUT" +class JobResSocket(BaseModel): + cores: JobResCoreArray + """ + Core in socket + """ + index: int + """ + Core index + """ -class JobState(RootModel[list[JobStateEnum]]): - root: list[JobStateEnum] +class JobResSocketArray(RootModel[list[JobResSocket]]): + root: list[JobResSocket] -class KillJobsMsgJobsArray(RootModel[list[str]]): - root: list[str] +class KillJobsMsgJobsArray(CsvString): + pass class Error(BaseModel): @@ -638,12 +713,16 @@ class License(BaseModel): """ LastUpdate: int | None = None """ - When the license information was last updated (UNIX Timestamp) + When the license information was last updated (UNIX Timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]')) """ LicenseName: str | None = None """ Name of the license """ + Nodes: str | None = None + """ + HRes nodes + """ Remote: bool | None = None """ Indicates whether licenses are served by the database @@ -666,32 +745,11 @@ class Licenses(RootModel[list[License]]): root: list[License] -class MemoryBindingTypeEnum(Enum): - NONE = "NONE" - RANK = "RANK" - MAP = "MAP" - MASK = "MASK" - LOCAL = "LOCAL" - VERBOSE = "VERBOSE" - SORT = "SORT" - PREFER = "PREFER" - - -class MemoryBindingType(RootModel[list[MemoryBindingTypeEnum]]): - root: list[MemoryBindingTypeEnum] - - -class NodeCrTypeEnum(Enum): - AVAILABLE = "AVAILABLE" - ONE_ROW = "ONE_ROW" - RESERVED = "RESERVED" - - -class NodeCrType(RootModel[list[NodeCrTypeEnum]]): - root: list[NodeCrTypeEnum] +class CertFlag(StrEnum): + TOKEN_SET = "TOKEN_SET" -class NodeState(Enum): +class NextStateAfterRebootEnum(StrEnum): INVALID = "INVALID" UNKNOWN = "UNKNOWN" DOWN = "DOWN" @@ -700,6 +758,7 @@ class NodeState(Enum): ERROR = "ERROR" MIXED = "MIXED" FUTURE = "FUTURE" + EXTERNAL = "EXTERNAL" RESERVED = "RESERVED" UNDRAIN = "UNDRAIN" CLOUD = "CLOUD" @@ -722,19 +781,30 @@ class NodeState(Enum): POWER_UP = "POWER_UP" POWER_DRAIN = "POWER_DRAIN" DYNAMIC_NORM = "DYNAMIC_NORM" + BLOCKED = "BLOCKED" -class NodeStates(RootModel[list[NodeState]]): - root: list[NodeState] - - -class OpenModeEnum(Enum): - APPEND = "APPEND" - TRUNCATE = "TRUNCATE" +class NodeGresLayout(BaseModel): + count: int | None = None + """ + Count + """ + index: str | None = None + """ + Index + """ + name: str + """ + GRES name + """ + type: str | None = None + """ + GRES type (optional) + """ -class OpenMode(RootModel[list[OpenModeEnum]]): - root: list[OpenModeEnum] +class NodeGresLayoutList(RootModel[list[NodeGresLayout]]): + root: list[NodeGresLayout] class OpenapiError(BaseModel): @@ -836,14 +906,6 @@ class OpenapiWarnings(RootModel[list[OpenapiWarning]]): root: list[OpenapiWarning] -class OversubscribeFlag(Enum): - force = "force" - - -class OversubscribeFlags(RootModel[list[OversubscribeFlag]]): - root: list[OversubscribeFlag] - - class PartPrio(BaseModel): partition: str | None = None """ @@ -858,34 +920,38 @@ class PartPrio(BaseModel): class Accounts(BaseModel): allowed: str | None = None """ - AllowAccounts + AllowAccounts - Comma-separated list of accounts which may execute jobs in the partition """ deny: str | None = None """ - DenyAccounts + DenyAccounts - Comma-separated list of accounts which may not execute jobs in the partition """ class Cpus1(BaseModel): task_binding: int | None = None """ - CpuBind + CpuBind - Default method controlling how tasks are bound to allocated resources """ total: int | None = None """ - TotalCPUs + TotalCPUs - Number of CPUs available in this partition """ class Groups(BaseModel): allowed: str | None = None """ - AllowGroups + AllowGroups - Comma-separated list of group names which may execute jobs in this partition """ +class Flag8(StrEnum): + force = "force" + + class Oversubscribe(BaseModel): - flags: OversubscribeFlags | None = None + flags: list[Flag8] | None = None """ Flags applicable to the OverSubscribe setting """ @@ -898,79 +964,82 @@ class Oversubscribe(BaseModel): class Minimums(BaseModel): nodes: int | None = None """ - MinNodes + MinNodes - Minimum count of nodes which may be allocated to any single job """ class Nodes2(BaseModel): allowed_allocation: str | None = None """ - AllocNodes + AllocNodes - Comma-separated list of nodes from which users can submit jobs in the partition """ configured: str | None = None """ - Nodes + Nodes - Comma-separated list of nodes which are associated with this partition """ total: int | None = None """ - TotalNodes + TotalNodes - Number of nodes available in this partition + """ + + +class StateEnum1(StrEnum): + INACTIVE = "INACTIVE" + UNKNOWN = "UNKNOWN" + UP = "UP" + DOWN = "DOWN" + DRAIN = "DRAIN" + + +class Partition(BaseModel): + state: list[StateEnum1] | None = None + """ + Current state(s) """ class Priority(BaseModel): job_factor: int | None = None """ - PriorityJobFactor + PriorityJobFactor - Partition factor used by priority/multifactor plugin in calculating job priority """ tier: int | None = None """ - PriorityTier + PriorityTier - Controls the order in which the scheduler evaluates jobs from different partitions """ class Qos(BaseModel): allowed: str | None = None """ - AllowQOS + AllowQOS - Comma-separated list of Qos which may execute jobs in the partition """ assigned: str | None = None """ - QOS + QOS - QOS name containing limits that will apply to all jobs in this partition """ deny: str | None = None """ - DenyQOS + DenyQOS - Comma-separated list of Qos which may not execute jobs in the partition """ -class Tres4(BaseModel): +class Tres5(BaseModel): billing_weights: str | None = None """ - TRESBillingWeights + TRESBillingWeights - Billing weights of each tracked TRES type that will be used in calculating the usage of a job """ configured: str | None = None """ - TRES + TRES - Number of each applicable TRES type available in this partition """ -class PartitionState(Enum): - INACTIVE = "INACTIVE" - UNKNOWN = "UNKNOWN" - UP = "UP" - DOWN = "DOWN" - DRAIN = "DRAIN" - - -class PartitionStates(RootModel[list[PartitionState]]): - root: list[PartitionState] - - class PriorityByPartition(RootModel[list[PartPrio]]): root: list[PartPrio] -class ProcessExitCodeStatu(Enum): +class StatusEnum1(StrEnum): INVALID = "INVALID" PENDING = "PENDING" SUCCESS = "SUCCESS" @@ -979,14 +1048,11 @@ class ProcessExitCodeStatu(Enum): CORE_DUMPED = "CORE_DUMPED" -class ProcessExitCodeStatus(RootModel[list[ProcessExitCodeStatu]]): - root: list[ProcessExitCodeStatu] - - -class QosFlag(Enum): +class Flag9(StrEnum): NOT_SET = "NOT_SET" ADD = "ADD" REMOVE = "REMOVE" + DELETED = "DELETED" PARTITION_MINIMUM_NODE = "PARTITION_MINIMUM_NODE" PARTITION_MAXIMUM_NODE = "PARTITION_MAXIMUM_NODE" PARTITION_TIME_LIMIT = "PARTITION_TIME_LIMIT" @@ -995,20 +1061,13 @@ class QosFlag(Enum): REQUIRED_RESERVATION = "REQUIRED_RESERVATION" DENY_LIMIT = "DENY_LIMIT" OVERRIDE_PARTITION_QOS = "OVERRIDE_PARTITION_QOS" + PARTITION_QOS = "PARTITION_QOS" NO_DECAY = "NO_DECAY" USAGE_FACTOR_SAFE = "USAGE_FACTOR_SAFE" RELATIVE = "RELATIVE" -class QosFlags(RootModel[list[QosFlag]]): - root: list[QosFlag] - - -class QosPreemptList(RootModel[list[str]]): - root: list[str] - - -class QosPreemptMode(Enum): +class ModeEnum(StrEnum): DISABLED = "DISABLED" SUSPEND = "SUSPEND" REQUEUE = "REQUEUE" @@ -1016,8 +1075,8 @@ class QosPreemptMode(Enum): GANG = "GANG" -class QosPreemptModes(RootModel[list[QosPreemptMode]]): - root: list[QosPreemptMode] +class QosPreemptList(CsvString): + pass class QosStringIdList(RootModel[list[str]]): @@ -1042,7 +1101,7 @@ class ReservationCoreSpec(BaseModel): """ -class ReservationFlag(Enum): +class Flag10(StrEnum): MAINT = "MAINT" NO_MAINT = "NO_MAINT" DAILY = "DAILY" @@ -1052,6 +1111,7 @@ class ReservationFlag(Enum): IGNORE_JOBS = "IGNORE_JOBS" NO_IGNORE_JOBS = "NO_IGNORE_JOBS" ANY_NODES = "ANY_NODES" + NO_ANY_NODES = "NO_ANY_NODES" STATIC = "STATIC" NO_STATIC = "NO_STATIC" PART_NODES = "PART_NODES" @@ -1071,18 +1131,18 @@ class ReservationFlag(Enum): DURATION_PLUS = "DURATION_PLUS" DURATION_MINUS = "DURATION_MINUS" NO_HOLD_JOBS_AFTER_END = "NO_HOLD_JOBS_AFTER_END" + REPLACE_DOWN = "REPLACE_DOWN" NO_PURGE_COMP = "NO_PURGE_COMP" MAGNETIC = "MAGNETIC" + NO_MAGNETIC = "NO_MAGNETIC" SKIP = "SKIP" HOURLY = "HOURLY" NO_HOURLY = "NO_HOURLY" USER_DELETE = "USER_DELETE" + FORCE_START = "FORCE_START" NO_USER_DELETE = "NO_USER_DELETE" REOCCURRING = "REOCCURRING" - - -class ReservationFlags(RootModel[list[ReservationFlag]]): - root: list[ReservationFlag] + TRES_PER_NODE = "TRES_PER_NODE" class ReservationInfoCoreSpec(RootModel[list[ReservationCoreSpec]]): @@ -1112,7 +1172,7 @@ class Daily(BaseModel): duration: Duration | None = None last_run: int | None = None """ - Last time daily rollup ran (UNIX timestamp) + Last time daily rollup ran (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]')) """ @@ -1139,7 +1199,7 @@ class Hourly(BaseModel): duration: Duration1 | None = None last_run: int | None = None """ - Last time hourly rollup ran (UNIX timestamp) + Last time hourly rollup ran (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]')) """ @@ -1166,7 +1226,7 @@ class Monthly(BaseModel): duration: Duration2 | None = None last_run: int | None = None """ - Last time monthly rollup ran (UNIX timestamp) + Last time monthly rollup ran (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]')) """ @@ -1203,6 +1263,10 @@ class ScheduleExitFields(BaseModel): """ +class SelectedStepList(CsvString): + pass + + class SharesFloat128Tres(BaseModel): name: str | None = None """ @@ -1218,20 +1282,6 @@ class SharesFloat128TresList(RootModel[list[SharesFloat128Tres]]): root: list[SharesFloat128Tres] -class SlurmdbJobFlag(Enum): - NONE = "NONE" - CLEAR_SCHEDULING = "CLEAR_SCHEDULING" - NOT_SET = "NOT_SET" - STARTED_ON_SUBMIT = "STARTED_ON_SUBMIT" - STARTED_ON_SCHEDULE = "STARTED_ON_SCHEDULE" - STARTED_ON_BACKFILL = "STARTED_ON_BACKFILL" - START_RECEIVED = "START_RECEIVED" - - -class SlurmdbJobFlags(RootModel[list[SlurmdbJobFlag]]): - root: list[SlurmdbJobFlag] - - class SlurmdbdPing(BaseModel): hostname: str """ @@ -1243,7 +1293,7 @@ class SlurmdbdPing(BaseModel): """ primary: bool """ - Is responding slurmdbd the primary controller + Is responding slurmdbd the primary controller (Is responding slurmctld the primary controller) """ responding: bool """ @@ -1262,7 +1312,7 @@ class StatsMsgRpcDump(BaseModel): """ message_type: str """ - Message type as string + Message type as string (Slurm RPC message type) """ type_id: int """ @@ -1277,7 +1327,7 @@ class StatsMsgRpcQueue(BaseModel): """ message_type: str """ - Message type as string + Message type as string (Slurm RPC message type) """ type_id: int """ @@ -1375,12 +1425,36 @@ class CPU1(BaseModel): class Step1(BaseModel): id: str | None = None """ - Step ID + Step ID (Slurm job step ID) """ name: str | None = None """ Step name """ + stderr: str | None = None + """ + Path to stderr file + """ + stderr_expanded: str | None = None + """ + Step stderr with expanded fields + """ + stdin: str | None = None + """ + Path to stdin file + """ + stdin_expanded: str | None = None + """ + Step stdin with expanded fields + """ + stdout: str | None = None + """ + Path to stdout file + """ + stdout_expanded: str | None = None + """ + Step stdout with expanded fields + """ class Task(BaseModel): @@ -1430,12 +1504,12 @@ class User1(BaseModel): """ -class StringArray(RootModel[list[str]]): - root: list[str] +class StringArray(CsvString): + pass -class StringList(RootModel[list[str]]): - root: list[str] +class StringList(CsvString): + pass class Tres(BaseModel): @@ -1476,34 +1550,12 @@ class Uint16NoValStruct(BaseModel): """ -class Uint32NoValStruct(BaseModel): - infinite: bool | None = None - """ - True if number has been set to infinite; "set" and "number" will be ignored - """ - number: int | None = None - """ - If "set" is True the number will be set with value; otherwise ignore number contents - """ - set: bool | None = None - """ - True if number has been set; False if number is unset - """ +class Uint32NoValStruct(Uint16NoValStruct): + pass -class Uint64NoValStruct(BaseModel): - infinite: bool | None = None - """ - True if number has been set to infinite; "set" and "number" will be ignored - """ - number: int | None = None - """ - If "set" is True the number will be set with value; otherwise ignore number contents - """ - set: bool | None = None - """ - True if number has been set; False if number is unset - """ +class Uint64NoValStruct(Uint16NoValStruct): + pass class UpdateNodeMsg(BaseModel): @@ -1553,40 +1605,51 @@ class UpdateNodeMsg(BaseModel): """ resume_after: Uint32NoValStruct | None = None """ - Number of seconds after which to automatically resume DOWN or DRAINED node + Number of seconds after which to automatically resume DOWN or DRAINED node (32 bit integer number with flags) """ - state: NodeStates | None = None + state: list[NextStateAfterRebootEnum] | None = None """ New state to assign to the node """ + topology_str: str | None = None + """ + Topology + """ weight: Uint32NoValStruct | None = None """ - Weight of the node for scheduling purposes + Weight of the node for scheduling purposes (32 bit integer number with flags) """ +class AdministratorLevelEnum(StrEnum): + Not_Set = "Not Set" + None_ = "None" + Operator = "Operator" + Administrator = "Administrator" + + class Default1(BaseModel): account: str | None = None """ Default account """ + qos: int | None = None + """ + Default QOS + """ wckey: str | None = None """ Default WCKey """ -class UserFlag(Enum): +class Flag12(StrEnum): NONE = "NONE" DELETED = "DELETED" -class UserFlags(RootModel[list[UserFlag]]): - root: list[UserFlag] - - class UserShort(BaseModel): - adminlevel: AdminLvl | None = None + adminlevel: list[AdministratorLevelEnum] | None = None """ AdminLevel granted to the user """ @@ -1594,49 +1657,26 @@ class UserShort(BaseModel): """ Default account """ + defaultqos: int | None = None + """ + Default QOS + """ defaultwckey: str | None = None """ Default WCKey """ -class WarnFlag(Enum): - BATCH_JOB = "BATCH_JOB" - ARRAY_TASK = "ARRAY_TASK" - FULL_STEPS_ONLY = "FULL_STEPS_ONLY" - FULL_JOB = "FULL_JOB" - FEDERATION_REQUEUE = "FEDERATION_REQUEUE" - HURRY = "HURRY" - OUT_OF_MEMORY = "OUT_OF_MEMORY" - NO_SIBLING_JOBS = "NO_SIBLING_JOBS" - RESERVATION_JOB = "RESERVATION_JOB" - VERBOSE = "VERBOSE" - CRON_JOBS = "CRON_JOBS" - WARNING_SENT = "WARNING_SENT" - - -class WarnFlags(RootModel[list[WarnFlag]]): - root: list[WarnFlag] - - -class WckeyFlag(Enum): +class Flag13(StrEnum): DELETED = "DELETED" -class WckeyFlags(RootModel[list[WckeyFlag]]): - root: list[WckeyFlag] - - -class WckeyTagFlag(Enum): +class Flag14(StrEnum): ASSIGNED_DEFAULT = "ASSIGNED_DEFAULT" -class WckeyTagFlags(RootModel[list[WckeyTagFlag]]): - root: list[WckeyTagFlag] - - class WckeyTagStruct(BaseModel): - flags: WckeyTagFlags + flags: list[Flag14] """ Active flags """ @@ -1646,17 +1686,6 @@ class WckeyTagStruct(BaseModel): """ -class X11Flag(Enum): - FORWARD_ALL_NODES = "FORWARD_ALL_NODES" - BATCH_NODE = "BATCH_NODE" - FIRST_NODE = "FIRST_NODE" - LAST_NODE = "LAST_NODE" - - -class X11Flags(RootModel[list[X11Flag]]): - root: list[X11Flag] - - class Account(BaseModel): associations: AssocShortList | None = None """ @@ -1670,7 +1699,7 @@ class Account(BaseModel): """ Arbitrary string describing the account """ - flags: AccountFlags | None = None + flags: list[Flag] | None = None """ Flags associated with this account """ @@ -1704,7 +1733,7 @@ class Accounting(BaseModel): """ start: int | None = None """ - When the record was started (UNIX timestamp) + When the record was started (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]')) """ @@ -1727,11 +1756,11 @@ class AcctGatherEnergy(BaseModel): """ current_watts: Uint32NoValStruct | None = None """ - The instantaneous power consumption at the time of the last node energy accounting sample, in watts + The instantaneous power consumption at the time of the last node energy accounting sample, in watts (32 bit integer number with flags) """ last_collected: int | None = None """ - Time when energy data was last retrieved (UNIX timestamp) + Time when energy data was last retrieved (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]')) """ previous_consumed_energy: int | None = None """ @@ -1742,42 +1771,42 @@ class AcctGatherEnergy(BaseModel): class Per(BaseModel): accruing: Uint32NoValStruct | None = None """ - GrpJobsAccrue + GrpJobsAccrue - Maximum number of pending jobs able to accrue age priority in this association and its children (32 bit integer number with flags) """ count: Uint32NoValStruct | None = None """ - GrpJobs + GrpJobs - Maximum number of running jobs in this association and its children (32 bit integer number with flags) """ submitted: Uint32NoValStruct | None = None """ - GrpSubmitJobs + GrpSubmitJobs - Maximum number of jobs in a pending or running state at any time in this association and its children (32 bit integer number with flags) """ wall_clock: Uint32NoValStruct | None = None """ - MaxWallDurationPerJob + MaxWallDurationPerJob - Maximum wall clock time in minutes each job can use in this association (32 bit integer number with flags) """ class Jobs(BaseModel): accruing: Uint32NoValStruct | None = None """ - MaxJobsAccrue + MaxJobsAccrue - Maximum number of pending jobs able to accrue age priority at any given time in this association (32 bit integer number with flags) """ active: Uint32NoValStruct | None = None """ - MaxJobs + MaxJobs - Maximum number of running jobs per user in this association (32 bit integer number with flags) """ per: Per | None = None total: Uint32NoValStruct | None = None """ - MaxSubmitJobs + MaxSubmitJobs - Maximum number of jobs in a pending or running state at any time in this association (32 bit integer number with flags) """ class Account1(BaseModel): wall_clock: Uint32NoValStruct | None = None """ - GrpWall + GrpWall - Maximum wall clock time in minutes able to be allocated by running jobs in this association and its children (32 bit integer number with flags) """ @@ -1788,18 +1817,18 @@ class Per1(BaseModel): class Group(BaseModel): active: TresList | None = None """ - GrpTRESRunMins + GrpTRESRunMins - Maximum number of TRES minutes able to be allocated by running jobs in this association and its children """ minutes: TresList | None = None """ - GrpTRESMins + GrpTRESMins - Maximum number of TRES minutes that can possibly be used by past, present, and future jobs in this association and its children """ class Per2(BaseModel): job: TresList | None = None """ - MaxTRESMinsPerJob + MaxTRESMinsPerJob - Maximum number of TRES minutes each job can use in this association """ @@ -1807,18 +1836,18 @@ class Minutes(BaseModel): per: Per2 | None = None total: TresList | None = None """ - MaxTRESMinsPerJob + Not implemented """ class Per3(BaseModel): job: TresList | None = None """ - MaxTRESPerJob + MaxTRESPerJob - Maximum number of TRES each job can use in this association """ node: TresList | None = None """ - MaxTRESPerNode + MaxTRESPerNode - Maximum number of TRES each node in a job allocation can use in this association """ @@ -1828,7 +1857,7 @@ class Tres1(BaseModel): per: Per3 | None = None total: TresList | None = None """ - GrpTRES + GrpTRES - Maximum number of TRES able to be allocated by running jobs in this association and its children """ @@ -1841,7 +1870,7 @@ class Max(BaseModel): class Min(BaseModel): priority_threshold: Uint32NoValStruct | None = None """ - MinPrioThreshold + MinPrioThreshold - Minimum priority required to reserve resources when scheduling (32 bit integer number with flags) """ @@ -1863,13 +1892,13 @@ class Assoc(BaseModel): Arbitrary comment """ default: Default | None = None - flags: AssocFlags | None = None + flags: list[Flag1] | None = None """ Flags on the association """ id: int | None = None """ - Unique ID + Unique ID (Association ID) """ is_default: bool | None = None """ @@ -1891,11 +1920,11 @@ class Assoc(BaseModel): """ priority: Uint32NoValStruct | None = None """ - Association priority factor + Association priority factor (32 bit integer number with flags) """ qos: QosStringIdList | None = None """ - List of available QOS names + List of available QOS names (List of QOS names) """ shares_raw: int | None = None """ @@ -1926,67 +1955,67 @@ class AssocRecSet(BaseModel): """ grpjobs: Uint32NoValStruct | None = None """ - Maximum number of running jobs in this association and its children + GrpJobs - Maximum number of running jobs in this association and its children (32 bit integer number with flags) """ grpjobsaccrue: Uint32NoValStruct | None = None """ - Maximum number of pending jobs able to accrue age priority in this association and its children + GrpJobsAccrue - Maximum number of pending jobs able to accrue age priority in this association and its children (32 bit integer number with flags) """ grpsubmitjobs: Uint32NoValStruct | None = None """ - Maximum number of jobs which can be in a pending or running state at any time in this association and its children + GrpSubmitJobs - Maximum number of jobs in a pending or running state at any time in this association and its children (32 bit integer number with flags) """ grptres: TresList | None = None """ - Maximum number of TRES able to be allocated by running jobs in this association and its children + GrpTRES - Maximum number of TRES able to be allocated by running jobs in this association and its children """ grptresmins: TresList | None = None """ - Total number of TRES minutes that can possibly be used by past, present and future jobs in this association and its children + GrpTRESMins - Maximum number of TRES minutes that can possibly be used by past, present, and future jobs in this association and its children """ grptresrunmins: TresList | None = None """ - Maximum number of TRES minutes able to be allocated by running jobs in this association and its children + GrpTRESRunMins - Maximum number of TRES minutes able to be allocated by running jobs in this association and its children """ grpwall: Uint32NoValStruct | None = None """ - Maximum wall clock time in minutes able to be allocated by running jobs in this association and its children + GrpWall - Maximum wall clock time in minutes able to be allocated by running jobs in this association and its children (32 bit integer number with flags) """ maxjobs: Uint32NoValStruct | None = None """ - Maximum number of running jobs per user in this association + MaxJobs - Maximum number of running jobs per user in this association (32 bit integer number with flags) """ maxjobsaccrue: Uint32NoValStruct | None = None """ - Maximum number of pending jobs able to accrue age priority at any given time in this association + MaxJobsAccrue - Maximum number of pending jobs able to accrue age priority at any given time in this association (32 bit integer number with flags) """ maxsubmitjobs: Uint32NoValStruct | None = None """ - Maximum number of jobs which can be in a pending or running state at any time in this association + MaxSubmitJobs - Maximum number of jobs in a pending or running state at any time in this association (32 bit integer number with flags) """ maxtresminsperjob: TresList | None = None """ - Maximum number of TRES minutes each job is able to use in this association + MaxTRESMinsPerJob - Maximum number of TRES minutes each job can use in this association """ maxtresperjob: TresList | None = None """ - Maximum number of TRES each job is able to use in this association + MaxTRESPerJob - Maximum number of TRES each job can use in this association """ maxtrespernode: TresList | None = None """ - Maximum number of TRES each node is able to use + MaxTRESPerNode - Maximum number of TRES each node in a job allocation can use in this association """ maxtresrunmins: TresList | None = None """ - Maximum number of TRES minutes able to be allocated by running jobs in this association + Not implemented """ maxwalldurationperjob: Uint32NoValStruct | None = None """ - Maximum wall clock time each job is able to use in this association + MaxWallDurationPerJob - Maximum wall clock time in minutes each job can use in this association (32 bit integer number with flags) """ minpriothresh: Uint32NoValStruct | None = None """ - Minimum priority required to reserve resources when scheduling + MinPrioThreshold - Minimum priority required to reserve resources when scheduling (32 bit integer number with flags) """ parent: str | None = None """ @@ -1994,29 +2023,29 @@ class AssocRecSet(BaseModel): """ priority: Uint32NoValStruct | None = None """ - Association priority factor + Association priority factor (32 bit integer number with flags) """ qoslevel: QosStringIdList | None = None """ - List of available QOS names + List of available QOS names (List of QOS names) """ class Fairshare(BaseModel): factor: Float64NoValStruct | None = None """ - Fairshare factor + Fairshare factor (64 bit floating point number with flags) """ level: Float64NoValStruct | None = None """ - Fairshare factor at this level; stored on an assoc as a long double, but that is not needed for display in sshare + Fairshare factor at this level; stored on an assoc as a long double, but that is not needed for display in sshare (64 bit floating point number with flags) """ class ClusterRec(BaseModel): associations: Associations | None = None controller: Controller | None = None - flags: ClusterRecFlags | None = None + flags: list[Flag2] | None = None """ Flags """ @@ -2032,7 +2061,7 @@ class ClusterRec(BaseModel): """ RPC version used in the cluster """ - select_plugin: str | None = None + select_plugin: str | None = Field(None, deprecated=True) tres: TresList | None = None """ Trackable resources @@ -2043,66 +2072,30 @@ class ClusterRecList(RootModel[list[ClusterRec]]): root: list[ClusterRec] -class CronEntry(BaseModel): - command: str | None = None - """ - Command to run +class Array(BaseModel): + job_id: int | None = None """ - day_of_month: str | None = None + Job ID of job array, or 0 if N/A """ - Ranged string specifying eligible day of month values (e.g. 0-10,29) + limits: Limits | None = None + task: str | None = None """ - day_of_week: str | None = None + String expression of task IDs in this record """ - Ranged string specifying eligible day of week values (e.g.0-3,7) + task_id: Uint32NoValStruct | None = None """ - flags: CronEntryFlags | None = None + Task ID of this task in job array (32 bit integer number with flags) """ - Flags + + +class Het(BaseModel): + job_id: int | None = None """ - hour: str | None = None + Heterogeneous job ID, if applicable """ - Ranged string specifying eligible hour values (e.g. 0-5,23) + job_offset: Uint32NoValStruct | None = None """ - line: Line | None = None - minute: str | None = None - """ - Ranged string specifying eligible minute values (e.g. 0-10,50) - """ - month: str | None = None - """ - Ranged string specifying eligible month values (e.g. 0-5,12) - """ - specification: str | None = None - """ - Complete time specification (* means valid for all allowed values) - minute hour day_of_month month day_of_week - """ - - -class Array(BaseModel): - job_id: int | None = None - """ - Job ID of job array, or 0 if N/A - """ - limits: Limits | None = None - task: str | None = None - """ - String expression of task IDs in this record - """ - task_id: Uint32NoValStruct | None = None - """ - Task ID of this task in job array - """ - - -class Het(BaseModel): - job_id: int | None = None - """ - Heterogeneous job ID, if applicable - """ - job_offset: Uint32NoValStruct | None = None - """ - Unique sequence number applied to this component of the heterogeneous job + Unique sequence number applied to this component of the heterogeneous job (32 bit integer number with flags) """ @@ -2113,22 +2106,11 @@ class Required(BaseModel): """ memory_per_cpu: Uint64NoValStruct | None = None """ - Minimum memory in megabytes per allocated CPU + Minimum memory in megabytes per allocated CPU (64 bit integer number with flags) """ memory_per_node: Uint64NoValStruct | None = None """ - Minimum memory in megabytes per allocated node - """ - - -class State(BaseModel): - current: JobState | None = None - """ - Current state - """ - reason: str | None = None - """ - Reason for previous Pending or Failed state + Minimum memory in megabytes per allocated node (64 bit integer number with flags) """ @@ -2139,27 +2121,27 @@ class Time1(BaseModel): """ eligible: int | None = None """ - Time when the job became eligible to run (UNIX timestamp) + Time when the job became eligible to run (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]')) """ end: int | None = None """ - End time (UNIX timestamp) + End time (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]')) """ limit: Uint32NoValStruct | None = None """ - Maximum run time in minutes + Maximum run time in minutes (32 bit integer number with flags) """ planned: Uint64NoValStruct | None = None """ - Time required to start job after becoming eligible to run in seconds + Time required to start job after becoming eligible to run in seconds (64 bit integer number with flags) """ start: int | None = None """ - Time execution began (UNIX timestamp) + Time execution began (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]')) """ submission: int | None = None """ - Time when the job was submitted (UNIX timestamp) + Time when the job was submitted (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]')) """ suspended: int | None = None """ @@ -2188,1748 +2170,1966 @@ class JobArrayResponseArray(RootModel[list[JobArrayResponseMsgEntry]]): class Rlimits(BaseModel): as_: Uint64NoValStruct | None = Field(None, alias="as") """ - Address space limit + Address space limit (Address space limit.) (64 bit integer number with flags) """ core: Uint64NoValStruct | None = None """ - Largest core file that can be created, in bytes + Largest core file that can be created, in bytes (Largest core file that can be created, in bytes.) (64 bit integer number with flags) """ cpu: Uint64NoValStruct | None = None """ - Per-process CPU limit, in seconds + Per-process CPU limit, in seconds (Per-process CPU limit, in seconds.) (64 bit integer number with flags) """ data: Uint64NoValStruct | None = None """ - Maximum size of data segment, in bytes + Maximum size of data segment, in bytes (Maximum size of data segment, in bytes. ) (64 bit integer number with flags) """ fsize: Uint64NoValStruct | None = None """ - Largest file that can be created, in bytes + Largest file that can be created, in bytes (Largest file that can be created, in bytes.) (64 bit integer number with flags) """ memlock: Uint64NoValStruct | None = None """ - Locked-in-memory address space + Locked-in-memory address space (Locked-in-memory address space) (64 bit integer number with flags) """ nofile: Uint64NoValStruct | None = None """ - Number of open files + Number of open files (Number of open files.) (64 bit integer number with flags) """ nproc: Uint64NoValStruct | None = None """ - Number of processes + Number of processes (Number of processes.) (64 bit integer number with flags) """ rss: Uint64NoValStruct | None = None """ - Largest resident set size, in bytes. This affects swapping; processes that are exceeding their resident set size will be more likely to have physical memory taken from them + Largest resident set size, in bytes. This affects swapping; processes that are exceeding their resident set size will be more likely to have physical memory taken from them (Largest resident set size, in bytes. This affects swapping; processes that are exceeding their resident set size will be more likely to have physical memory taken from them.) (64 bit integer number with flags) """ stack: Uint64NoValStruct | None = None """ - Maximum size of stack segment, in bytes + Maximum size of stack segment, in bytes (Maximum size of stack segment, in bytes.) (64 bit integer number with flags) """ -class JobDescMsg(BaseModel): - account: str | None = None +class Tres4(BaseModel): + allocated: TresList | None = None """ - Account associated with the job + Trackable resources allocated to the job """ - account_gather_frequency: str | None = None + + +class JobResNode(BaseModel): + cpus: Cpus | None = None + index: int """ - Job accounting and profiling sampling intervals in seconds + Node index """ - admin_comment: str | None = None + memory: Memory | None = None + name: str """ - Arbitrary comment made by administrator + Node name """ - allocation_node_list: str | None = None + sockets: JobResSocketArray """ - Local node making the resource allocation + Socket allocations in node """ - allocation_node_port: int | None = None + + +class JobResNodes(RootModel[list[JobResNode]]): """ - Port to send allocation confirmation to + Job resources for a node """ - argv: StringArray | None = None + + root: list[JobResNode] """ - Arguments to the script. Note: The slurmstepd always overrides argv[0] with the path to the created script file. If this option is used, argv[0] should be a throwaway value. + Job resources for a node """ - array: str | None = None + + +class KillJobsMsg(BaseModel): + account: str | None = None """ - Job array index value specification + Filter jobs to a specific account """ - batch_features: str | None = None + flags: list[KillWarningFlag] | None = None """ - Features required for batch script's node + Filter jobs according to flags """ - begin_time: Uint64NoValStruct | None = None + job_name: str | None = None """ - Defer the allocation of the job until the specified time (UNIX timestamp) + Filter jobs to a specific name """ - burst_buffer: str | None = None + job_state: list[CurrentEnum] | None = None """ - Burst buffer specifications + Filter jobs to a specific state """ - cluster_constraint: str | None = None + jobs: KillJobsMsgJobsArray | None = None """ - Required features that a federated cluster must have to have a sibling job submitted to it + List of jobs to signal """ - clusters: str | None = None + nodes: HostlistString | None = None """ - Clusters that a federated job can run on + Filter jobs to a set of nodes """ - comment: str | None = None + partition: str | None = None """ - Arbitrary comment made by user + Filter jobs to a specific partition """ - constraints: str | None = None + qos: str | None = None """ - Comma separated list of features that are required + Filter jobs to a specific QOS """ - container: str | None = None + reservation: str | None = None """ - Absolute path to OCI container bundle + Filter jobs to a specific reservation """ - container_id: str | None = None + signal: str | None = None """ - OCI container ID + Signal to send to jobs """ - contiguous: bool | None = None + user_id: str | None = None """ - True if job requires contiguous nodes + Filter jobs to a specific numeric user id """ - core_specification: int | None = None + user_name: str | None = None """ - Specialized core count + Filter jobs to a specific user name """ - cpu_binding: str | None = None + wckey: str | None = None """ - Method for binding tasks to allocated CPUs + Filter jobs to a specific wckey """ - cpu_binding_flags: CpuBindingFlags | None = None + + +class KillJobsRespJob(BaseModel): + error: Error | None = None + federation: Federation | None = None + job_id: Uint32NoValStruct """ - Flags for CPU binding + Job ID that signaling failed (32 bit integer number with flags) """ - cpu_frequency: str | None = None + step_id: str """ - Requested CPU frequency range [-p2][:p3] + Job or Step ID that signaling failed """ - cpus_per_task: int | None = None + + +class KillJobsRespMsg(RootModel[list[KillJobsRespJob]]): """ - Number of CPUs required by each task + List of jobs signal responses """ - cpus_per_tres: str | None = None + + root: list[KillJobsRespJob] """ - Semicolon delimited list of TRES=# values values indicating how many CPUs should be allocated for each specified TRES (currently only used for gres/gpu) + List of jobs signal responses """ - crontab: CronEntry | None = None + + +class Node(BaseModel): + active_features: CsvString | None = None """ - Specification for scrontab job + Currently active features """ - current_working_directory: str | None = None + address: str | None = None """ - Working directory to use for the job + NodeAddr, used to establish a communication path """ - deadline: int | None = None + alloc_cpus: int | None = None """ - Latest time that the job may start (UNIX timestamp) + Total number of CPUs currently allocated for jobs """ - delay_boot: int | None = None + alloc_idle_cpus: int | None = None """ - Number of seconds after job eligible start that nodes will be rebooted to satisfy feature specification + Total number of idle CPUs """ - dependency: str | None = None + alloc_memory: int | None = None """ - Other jobs that must meet certain criteria before this job can start + Total memory in MB currently allocated for jobs """ - distribution: str | None = None + architecture: str | None = None """ - Layout + Computer architecture """ - distribution_plane_size: Uint16NoValStruct | None = None + boards: int | None = None """ - Plane size specification when distribution specifies plane + Number of Baseboards in nodes with a baseboard controller """ - end_time: int | None = None + boot_time: Uint64NoValStruct | None = None """ - Expected end time (UNIX timestamp) + Time when the node booted (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]'); may also be infinite or unset) (64 bit integer number with flags) """ - environment: StringArray | None = None + burstbuffer_network_address: str | None = None """ - Environment variables to be set for the job + Alternate network path to be used for sbcast network traffic """ - excluded_nodes: CsvString | None = None + cert_flags: list[CertFlag] | None = None """ - Comma separated list of nodes that may not be used + Certmgr status flags """ - extra: str | None = None + cluster_name: str | None = None """ - Arbitrary string used for node filtering if extra constraints are enabled + Cluster name (only set in federated environments) """ - flags: JobFlags | None = None + comment: str | None = None """ - Job flags + Arbitrary comment """ - group_id: str | None = None + cores: int | None = None """ - Group ID of the user that owns the job + Number of cores in a single physical processor socket """ - hetjob_group: int | None = None + cpu_binding: int | None = None """ - Unique sequence number applied to this component of the heterogeneous job + Default method for binding tasks to allocated CPUs """ - hold: bool | None = None + cpu_load: int | None = None """ - Hold (true) or release (false) job + CPU load as reported by the OS """ - immediate: bool | None = None + cpus: int | None = None """ - If true, exit if resources are not available within the time period specified + Total CPUs, including cores and threads """ - job_id: int | None = None + effective_cpus: int | None = None """ - Job ID + Number of effective CPUs (excluding specialized CPUs) """ - kill_on_node_fail: bool | None = None + energy: AcctGatherEnergy | None = None """ - If true, kill job on node failure + Energy usage data """ - kill_warning_delay: Uint16NoValStruct | None = None + external_sensors: dict[str, Any] | None = Field(None, deprecated=True) + extra: str | None = None """ - Number of seconds before end time to send the warning signal + Arbitrary string used for node filtering if extra constraints are enabled """ - kill_warning_flags: WarnFlags | None = None + features: CsvString | None = None """ - Flags related to job signals + Available features """ - kill_warning_signal: str | None = None + free_mem: Uint64NoValStruct | None = None """ - Signal to send when approaching end time (e.g. "10" or "USR1") + Total memory in MB currently free as reported by the OS (64 bit integer number with flags) """ - licenses: str | None = None + gpu_spec: str | None = None """ - License(s) required by the job + CPU cores reserved for jobs that also use a GPU """ - mail_type: JobMailFlags | None = None + gres: str | None = None """ - Mail event type(s) + Generic resources """ - mail_user: str | None = None + gres_drained: str | None = None """ - User to receive email notifications + Drained generic resources """ - maximum_cpus: int | None = None + gres_used: str | None = None """ - Maximum number of CPUs required + Generic resources currently in use """ - maximum_nodes: int | None = None + hostname: str | None = None """ - Maximum node count + NodeHostname """ - mcs_label: str | None = None + instance_id: str | None = None """ - Multi-Category Security label on the job + Cloud instance ID """ - memory_binding: str | None = None + instance_type: str | None = None """ - Binding map for map/mask_cpu + Cloud instance type """ - memory_binding_type: MemoryBindingType | None = None + last_busy: Uint64NoValStruct | None = None """ - Method for binding tasks to memory + Time when the node was last busy (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]'); may also be infinite or unset) (64 bit integer number with flags) """ - memory_per_cpu: Uint64NoValStruct | None = None + mcs_label: str | None = None """ - Minimum memory in megabytes per allocated CPU + Multi-Category Security label """ - memory_per_node: Uint64NoValStruct | None = None + name: str | None = None """ - Minimum memory in megabytes per allocated node + NodeName """ - memory_per_tres: str | None = None + next_state_after_reboot: list[NextStateAfterRebootEnum] | None = None """ - Semicolon delimited list of TRES=# values indicating how much memory in megabytes should be allocated for each specified TRES (currently only used for gres/gpu) + The state the node will be assigned after rebooting """ - minimum_boards_per_node: int | None = None + operating_system: str | None = None """ - Boards per node required + Operating system reported by the node """ - minimum_cpus: int | None = None + owner: str | None = None """ - Minimum number of CPUs required + User allowed to run jobs on this node (unset if no restriction) """ - minimum_cpus_per_node: int | None = None + partitions: CsvString | None = None """ - Minimum number of CPUs per node + Partitions containing this node """ - minimum_nodes: int | None = None + port: int | None = None """ - Minimum node count + TCP port number of the slurmd """ - minimum_sockets_per_board: int | None = None + power: dict[str, Any] | None = Field(None, deprecated=True) + real_memory: int | None = None """ - Sockets per board required + Total memory in MB on the node """ - name: str | None = None + reason: str | None = None """ - Job name + Describes why the node is in a "DOWN", "DRAINED", "DRAINING", "FAILING" or "FAIL" state """ - network: str | None = None + reason_changed_at: Uint64NoValStruct | None = None """ - Network specs for job step + When the reason changed (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]'); may also be infinite or unset) (64 bit integer number with flags) """ - nice: int | None = None + reason_set_by_user: str | None = None """ - Requested job priority change + User who set the reason """ - nodes: str | None = None + res_cores_per_gpu: int | None = None """ - Node count range specification (e.g. 1-15:4) + Number of CPU cores per GPU restricted to GPU jobs """ - ntasks_per_tres: int | None = None + reservation: str | None = None """ - Number of tasks that can access each GPU + Name of reservation containing this node """ - oom_kill_step: int | None = None + resume_after: Uint64NoValStruct | None = None """ - Kill whole step in case of OOM in one of the tasks + Number of seconds after the node's state is updated to "DOWN" or "DRAIN" before scheduling a node state resume (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]'); may also be infinite or unset) (64 bit integer number with flags) """ - open_mode: OpenMode | None = None + slurmd_start_time: Uint64NoValStruct | None = None """ - Open mode used for stdout and stderr files + Time when the slurmd started (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]'); may also be infinite or unset) (64 bit integer number with flags) """ - overcommit: bool | None = None + sockets: int | None = None """ - Overcommit resources + Number of physical processor sockets/chips on the node """ - partition: str | None = None + specialized_cores: int | None = None """ - Partition assigned to the job + Number of cores reserved for system use """ - power_flags: list | None = None - prefer: str | None = None + specialized_cpus: str | None = None + """ + Abstract CPU IDs on this node reserved for exclusive use by slurmd and slurmstepd """ - Comma separated list of features that are preferred but not required + specialized_memory: int | None = None """ - priority: Uint32NoValStruct | None = None + Combined memory limit, in MB, for Slurm compute node daemons """ - Request specific job priority + state: list[NextStateAfterRebootEnum] | None = None """ - profile: AcctGatherProfile | None = None + Node state(s) applicable to this node """ - Profile used by the acct_gather_profile plugin + temporary_disk: int | None = None """ - qos: str | None = None + Total size in MB of temporary disk storage in TmpFS """ - Quality of Service assigned to the job + threads: int | None = None """ - reboot: bool | None = None + Number of logical threads in a single physical core """ - Node reboot requested before start + tls_cert_last_renewal: Uint64NoValStruct | None = None """ - requeue: bool | None = None + Time when TLS certificate was created (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]'); may also be infinite or unset) (64 bit integer number with flags) """ - Determines whether the job may be requeued + topology: str | None = None """ - required_nodes: CsvString | None = None + Topology """ - Comma separated list of required nodes + tres: str | None = None """ - required_switches: Uint32NoValStruct | None = None + Configured trackable resources """ - Maximum number of switches + tres_used: str | None = None """ - reservation: str | None = None + Trackable resources currently allocated for jobs """ - Name of reservation to use + tres_weighted: float | None = Field(None, deprecated=True) """ - reserve_ports: int | None = None + Ignored. Was weighted number of billable trackable resources allocated """ - Port to send various notification msg to + version: str | None = None """ - rlimits: Rlimits | None = None - script: str | None = None + Slurmd version + """ + weight: int | None = None """ - Job batch script; only the first component in a HetJob is populated or honored + Weight of the node for scheduling purposes """ - segment_size: Uint16NoValStruct | None = None + + +class NodeResourceLayout(BaseModel): + channel: Uint32NoValStruct | None = None """ - Segment size for topology/block + IMEX channel (32 bit integer number with flags) """ - selinux_context: str | None = None + core_bitmap: str | None = None """ - SELinux context + Abstract core bitmap """ - shared: JobShared | None = None + cores_per_socket: int | None = None """ - How the job can share resources with other jobs, if at all + Cores per socket """ - site_factor: int | None = None + gres: NodeGresLayoutList | None = None """ - Site-specific priority factor + Allocated GRES + """ + mem_alloc: int | None = None + """ + Allocated memory + """ + node: str + """ + Node name """ sockets_per_node: int | None = None """ - Sockets per node required + Sockets per node """ - spank_environment: StringArray | None = None + + +class NodeResourceLayoutList(RootModel[list[NodeResourceLayout]]): + root: list[NodeResourceLayout] + + +class Nodes1(RootModel[list[Node]]): + root: list[Node] + + +class OpenapiMeta(BaseModel): + client: Client | None = None + command: StringArray | None = None """ - Environment variables for job prolog/epilog scripts as set by SPANK plugins + CLI command (if applicable) """ - standard_error: str | None = None + plugin: Plugin | None = None + slurm: Slurm | None = None + + +class OpenapiNodesResp(BaseModel): + errors: OpenapiErrors | None = None """ - Path to stderr file + Query errors """ - standard_input: str | None = None + last_update: Uint64NoValStruct """ - Path to stdin file + Time of last node change (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]'); may also be infinite or unset) (64 bit integer number with flags) """ - standard_output: str | None = None + meta: OpenapiMeta | None = None """ - Path to stdout file + Slurm meta values """ - tasks: int | None = None + nodes: Nodes1 """ - Number of tasks + List of nodes """ - tasks_per_board: int | None = None + warnings: OpenapiWarnings | None = None """ - Number of tasks to invoke on each board + Query warnings """ - tasks_per_core: int | None = None + + +class OpenapiPingArrayResp(BaseModel): + errors: OpenapiErrors | None = None """ - Number of tasks to invoke on each core + Query errors """ - tasks_per_node: int | None = None + meta: OpenapiMeta | None = None """ - Number of tasks to invoke on each node + Slurm meta values """ - tasks_per_socket: int | None = None + pings: ControllerPingArray """ - Number of tasks to invoke on each socket + pings """ - temporary_disk_per_node: int | None = None + warnings: OpenapiWarnings | None = None """ - Minimum tmp disk space required per node + Query warnings """ - thread_specification: int | None = None + + +class OpenapiResourceLayoutResp(BaseModel): + errors: OpenapiErrors | None = None """ - Specialized thread count + Query errors """ - threads_per_core: int | None = None + meta: OpenapiMeta | None = None """ - Threads per core required + Slurm meta values """ - time_limit: Uint32NoValStruct | None = None + nodes: NodeResourceLayoutList """ - Maximum run time in minutes + Node resource layouts """ - time_minimum: Uint32NoValStruct | None = None + warnings: OpenapiWarnings | None = None """ - Minimum run time in minutes + Query warnings """ - tres_bind: str | None = None + + +class OpenapiResp(BaseModel): + errors: OpenapiErrors | None = None """ - Task to TRES binding directives + Query errors """ - tres_freq: str | None = None + meta: OpenapiMeta | None = None """ - TRES frequency directives + Slurm meta values """ - tres_per_job: str | None = None + warnings: OpenapiWarnings | None = None """ - Comma separated list of TRES=# values to be allocated for every job + Query warnings """ - tres_per_node: str | None = None + + +class Defaults(BaseModel): + job: str | None = None """ - Comma separated list of TRES=# values to be allocated for every node + JobDefaults - Comma-separated list of job default values (this field is only used to set new defaults) """ - tres_per_socket: str | None = None + memory_per_cpu: int | None = None """ - Comma separated list of TRES=# values to be allocated for every socket + Raw value for DefMemPerCPU or DefMemPerNode """ - tres_per_task: str | None = None + partition_memory_per_cpu: Uint64NoValStruct | None = None """ - Comma separated list of TRES=# values to be allocated for every task + DefMemPerCPU - Default real memory size available per allocated CPU in megabytes (64 bit integer number with flags) """ - user_id: str | None = None + partition_memory_per_node: Uint64NoValStruct | None = None """ - User ID that owns the job + DefMemPerNode - Default real memory size available per allocated node in megabytes (64 bit integer number with flags) """ - wait_all_nodes: bool | None = None + time: Uint32NoValStruct | None = None """ - If true, wait to start until after all nodes have booted + DefaultTime - Run time limit in minutes used for jobs that don't specify a value (32 bit integer number with flags) """ - wait_for_switch: int | None = None + + +class Maximums(BaseModel): + cpus_per_node: Uint32NoValStruct | None = None """ - Maximum time to wait for switches in seconds + MaxCPUsPerNode - Maximum number of CPUs on any node available to all jobs from this partition (32 bit integer number with flags) """ - wckey: str | None = None + cpus_per_socket: Uint32NoValStruct | None = None """ - Workload characterization key + MaxCPUsPerSocket - Maximum number of CPUs on any node available on the all jobs from this partition (32 bit integer number with flags) """ - x11: X11Flags | None = None + memory_per_cpu: int | None = None """ - X11 forwarding options + Raw value for MaxMemPerCPU or MaxMemPerNode """ - x11_magic_cookie: str | None = None + nodes: Uint32NoValStruct | None = None """ - Magic cookie for X11 forwarding + MaxNodes - Maximum count of nodes which may be allocated to any single job (32 bit integer number with flags) """ - x11_target_host: str | None = None + over_time_limit: Uint16NoValStruct | None = None """ - Hostname or UNIX socket if x11_target_port=0 + OverTimeLimit - Number of minutes by which a job can exceed its time limit before being canceled (16 bit integer number with flags) """ - x11_target_port: int | None = None + oversubscribe: Oversubscribe | None = None + partition_memory_per_cpu: Uint64NoValStruct | None = None """ - TCP port + MaxMemPerCPU - Maximum real memory size available per allocated CPU in megabytes (64 bit integer number with flags) + """ + partition_memory_per_node: Uint64NoValStruct | None = None + """ + MaxMemPerNode - Maximum real memory size available per allocated node in a job allocation in megabytes (64 bit integer number with flags) + """ + shares: int | None = None + """ + OverSubscribe - Controls the ability of the partition to execute more than one job at a time on each resource + """ + time: Uint32NoValStruct | None = None + """ + MaxTime - Maximum run time limit for jobs (32 bit integer number with flags) """ -class JobDescMsgList(RootModel[list[JobDescMsg]]): - root: list[JobDescMsg] - - -class JobResCore(BaseModel): - index: int +class Timeouts(BaseModel): + resume: Uint16NoValStruct | None = None """ - Core index + ResumeTimeout - Resumed nodes which fail to respond in this time frame will be marked DOWN (GLOBAL if both set and infinite are false) (16 bit integer number with flags) """ - status: JobResCoreStatus + suspend: Uint16NoValStruct | None = None """ - Core status + SuspendTimeout - Maximum time permitted (in seconds) between when a node suspend request is issued and when the node is shutdown (GLOBAL if both set and infinite are false) (16 bit integer number with flags) """ -class JobResCoreArray(RootModel[list[JobResCore]]): - root: list[JobResCore] - +class PartitionInfo(BaseModel): + accounts: Accounts | None = None + alternate: str | None = None + """ + Alternate - Partition name of alternate partition to be used if the state of this partition is DRAIN or INACTIVE + """ + cluster: str | None = None + """ + Cluster name + """ + cpus: Cpus1 | None = None + defaults: Defaults | None = None + grace_time: int | None = None + """ + GraceTime - Grace time in seconds to be extended to a job which has been selected for preemption + """ + groups: Groups | None = None + maximums: Maximums | None = None + minimums: Minimums | None = None + name: str | None = None + """ + PartitionName - Name by which the partition may be referenced + """ + node_sets: str | None = None + """ + NodeSets - Comma-separated list of nodesets which are associated with this partition + """ + nodes: Nodes2 | None = None + partition: Partition | None = None + priority: Priority | None = None + qos: Qos | None = None + select_type: list[SelectTypeEnum1] | None = None + """ + Scheduler consumable resource selection type + """ + suspend_time: Uint32NoValStruct | None = None + """ + SuspendTime - Nodes which remain idle or down for this number of seconds will be placed into power save mode (GLOBAL if both set and infinite are false) (32 bit integer number with flags) + """ + timeouts: Timeouts | None = None + topology: str | None = None + """ + Topology - Name of the topology, defined in topology.yaml, used by jobs in this partition + """ + tres: Tres5 | None = None -class JobResSocket(BaseModel): - cores: JobResCoreArray + +class PartitionInfoMsg(RootModel[list[PartitionInfo]]): + root: list[PartitionInfo] + + +class Signal(BaseModel): + id: Uint16NoValStruct | None = None """ - Core in socket + Signal sent to process (numeric) (16 bit integer number with flags) """ - index: int + name: str | None = None """ - Core index + Signal sent to process (name) """ -class JobResSocketArray(RootModel[list[JobResSocket]]): - root: list[JobResSocket] +class ProcessExitCodeVerbose(BaseModel): + return_code: Uint32NoValStruct | None = None + """ + Process return code (numeric) (32 bit integer number with flags) + """ + signal: Signal | None = None + status: list[StatusEnum1] | None = None + """ + Status given by return code + """ -class JobSubmitReq(BaseModel): - job: JobDescMsg | None = None +class Per4(BaseModel): + account: Uint32NoValStruct | None = None """ - Job description + MaxJobsAccruePerAccount - Maximum number of pending jobs an account (or subacct) can have accruing age priority (32 bit integer number with flags) """ - jobs: JobDescMsgList | None = None + user: Uint32NoValStruct | None = None """ - HetJob description + MaxJobsAccruePerUser - Maximum number of pending jobs a user can have accruing age priority (32 bit integer number with flags) """ - script: str | None = None + + +class Accruing(BaseModel): + per: Per4 | None = None + + +class ActiveJobs(BaseModel): + accruing: Uint32NoValStruct | None = None + """ + GrpJobsAccrue - Maximum number of pending jobs able to accrue age priority (32 bit integer number with flags) + """ + count: Uint32NoValStruct | None = None """ - Deprecated; Populate script field in jobs[0] or job + GrpJobs - Maximum number of running jobs (32 bit integer number with flags) """ -class KillJobsMsg(BaseModel): - account: str | None = None +class Per5(BaseModel): + account: Uint32NoValStruct | None = None """ - Filter jobs to a specific account + MaxJobsPerAccount - Maximum number of running jobs per account (32 bit integer number with flags) """ - flags: WarnFlags | None = None + user: Uint32NoValStruct | None = None """ - Filter jobs according to flags + MaxJobsPerUser - Maximum number of running jobs per user (32 bit integer number with flags) """ - job_name: str | None = None + + +class ActiveJobs1(BaseModel): + per: Per5 | None = None + + +class Per6(BaseModel): + account: Uint32NoValStruct | None = None """ - Filter jobs to a specific name + MaxSubmitJobsPerAccount - Maximum number of jobs in a pending or running state per account (32 bit integer number with flags) """ - job_state: JobState | None = None + user: Uint32NoValStruct | None = None """ - Filter jobs to a specific state + MaxSubmitJobsPerUser - Maximum number of jobs in a pending or running state per user (32 bit integer number with flags) """ - jobs: KillJobsMsgJobsArray | None = None + + +class Jobs1(BaseModel): + active_jobs: ActiveJobs1 | None = None + count: Uint32NoValStruct | None = None """ - List of jobs to signal + GrpSubmitJobs - Maximum number of jobs in a pending or running state at any time (32 bit integer number with flags) """ - nodes: HostlistString | None = None + per: Per6 | None = None + + +class Per7(BaseModel): + account: TresList | None = None """ - Filter jobs to a set of nodes + MaxTRESRunMinsPerAccount - Maximum number of TRES minutes each account can use """ - partition: str | None = None + job: TresList | None = None """ - Filter jobs to a specific partition + MaxTRESMinsPerJob - Maximum number of TRES minutes each job can use """ - qos: str | None = None + qos: TresList | None = None """ - Filter jobs to a specific QOS + GrpTRESRunMins - Maximum number of TRES minutes able to be allocated by running jobs """ - reservation: str | None = None + user: TresList | None = None """ - Filter jobs to a specific reservation + MaxTRESRunMinsPerUser - Maximum number of TRES minutes each user can use """ - signal: str | None = None + + +class Minutes1(BaseModel): + per: Per7 | None = None + total: TresList | None = None """ - Signal to send to jobs + GrpTRESMins - Maximum number of TRES minutes that can possibly be used by past, present, and future jobs """ - user_id: str | None = None + + +class Per8(BaseModel): + account: TresList | None = None """ - Filter jobs to a specific numeric user id + MaxTRESPerAccount - Maximum number of TRES each account can use """ - user_name: str | None = None + job: TresList | None = None """ - Filter jobs to a specific user name + MaxTRESPerJob - Maximum number of TRES each job can use """ - wckey: str | None = None + node: TresList | None = None """ - Filter jobs to a specific wckey + MaxTRESPerNode - Maximum number of TRES each node in a job allocation can use + """ + user: TresList | None = None + """ + MaxTRESPerUser - Maximum number of TRES each user can use """ -class KillJobsRespJob(BaseModel): - error: Error | None = None - federation: Federation | None = None - job_id: Uint32NoValStruct +class Tres6(BaseModel): + minutes: Minutes1 | None = None + per: Per8 | None = None + total: TresList | None = None """ - Job ID that signaling failed + GrpTRES - Maximum number of TRES able to be allocated by running jobs """ - step_id: str + + +class Per9(BaseModel): + job: Uint32NoValStruct | None = None """ - Job or Step ID that signaling failed + MaxWallDurationPerJob - Maximum wall clock time in minutes each job can use (32 bit integer number with flags) + """ + qos: Uint32NoValStruct | None = None + """ + GrpWall - Maximum wall clock time in minutes able to be allocated by running jobs (32 bit integer number with flags) """ -class KillJobsRespMsg(RootModel[list[KillJobsRespJob]]): +class WallClock(BaseModel): + per: Per9 | None = None + + +class Max2(BaseModel): + accruing: Accruing | None = None + active_jobs: ActiveJobs | None = None + jobs: Jobs1 | None = None + tres: Tres6 | None = None + wall_clock: WallClock | None = None + + +class Per10(BaseModel): + job: TresList | None = None """ - List of jobs signal responses + MinTRESPerJob - Minimum number of TRES each job running under this QOS must request """ - root: list[KillJobsRespJob] + +class Tres7(BaseModel): + per: Per10 | None = None + + +class Min1(BaseModel): + priority_threshold: Uint32NoValStruct | None = None """ - List of jobs signal responses + MinPrioThreshold - Minimum priority required to reserve resources when scheduling (32 bit integer number with flags) """ + tres: Tres7 | None = None -class Node(BaseModel): - active_features: CsvString | None = None +class Limits1(BaseModel): + factor: Float64NoValStruct | None = None """ - Currently active features + LimitFactor - A float that is factored into an association's [Grp|Max]TRES limits (64 bit floating point number with flags) """ - address: str | None = None + grace_time: int | None = None """ - NodeAddr, used to establish a communication path + GraceTime - Preemption grace time in seconds to be extended to a job which has been selected for preemption """ - alloc_cpus: int | None = None + max: Max2 | None = None + min: Min1 | None = None + + +class Preempt(BaseModel): + exempt_time: Uint32NoValStruct | None = None """ - Total number of CPUs currently allocated for jobs + PreemptExemptTime - Specifies a minimum run time for jobs before they are considered for preemption (32 bit integer number with flags) """ - alloc_idle_cpus: int | None = None + list_1: QosPreemptList | None = Field(None, alias="list") """ - Total number of idle CPUs + Other QOS's this QOS can preempt """ - alloc_memory: int | None = None + mode: list[ModeEnum] | None = None """ - Total memory in MB currently allocated for jobs + PreemptMode - Mechanism used to preempt jobs or enable gang scheduling """ - architecture: str | None = None + + +class Qos1(BaseModel): + description: str | None = None """ - Computer architecture + Arbitrary description """ - boards: int | None = None + flags: list[Flag9] | None = None """ - Number of Baseboards in nodes with a baseboard controller + Flags, to avoid modifying current values specify NOT_SET """ - boot_time: Uint64NoValStruct | None = None + id: int | None = None """ - Time when the node booted (UNIX timestamp) + Unique ID """ - burstbuffer_network_address: str | None = None + limits: Limits1 | None = None + name: str | None = None """ - Alternate network path to be used for sbcast network traffic + Name """ - cluster_name: str | None = None + preempt: Preempt | None = None + priority: Uint32NoValStruct | None = None """ - Cluster name (only set in federated environments) + Priority - QOS priority factor (32 bit integer number with flags) + """ + usage_factor: Float64NoValStruct | None = None + """ + UsageFactor - A float that is factored into a job's TRES usage (64 bit floating point number with flags) + """ + usage_threshold: Float64NoValStruct | None = None + """ + UsageThreshold - A float representing the lowest fairshare of an association allowed to run a job (64 bit floating point number with flags) + """ + + +class QosList(RootModel[list[Qos1]]): + root: list[Qos1] + + +class PurgeCompleted(BaseModel): + time: Uint32NoValStruct | None = None + """ + If PURGE_COMP flag is set, the number of seconds this reservation will sit idle until it is revoked (32 bit integer number with flags) + """ + + +class ReservationDescMsg(BaseModel): + accounts: CsvString | None = None + """ + List of permitted accounts + """ + burst_buffer: str | None = None + """ + BurstBuffer """ comment: str | None = None """ - Arbitrary comment + Arbitrary string """ - cores: int | None = None + core_count: Uint32NoValStruct | None = None """ - Number of cores in a single physical processor socket + Number of cores to reserve (32 bit integer number with flags) """ - cpu_binding: int | None = None + duration: Uint32NoValStruct | None = None """ - Default method for binding tasks to allocated CPUs + The length of a reservation in minutes (32 bit integer number with flags) """ - cpu_load: int | None = None + end_time: Uint64NoValStruct | None = None """ - CPU load as reported by the OS + EndTime (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]'); may also be infinite or unset) (64 bit integer number with flags) """ - cpus: int | None = None + features: str | None = None """ - Total CPUs, including cores and threads + Requested node features. Multiple values may be "&" separated if all features are required (AND operation) or separated by "|" if any of the specified features are required (OR operation). Parenthesis are also supported for features to be ANDed together with counts of nodes having the specified features. """ - effective_cpus: int | None = None + flags: list[Flag10] | None = None """ - Number of effective CPUs (excluding specialized CPUs) + Flags associated with this reservation. Note, to remove flags use "NO_" prefixed flag excluding NO_HOLD_JOBS_AFTER_END """ - energy: AcctGatherEnergy | None = None + groups: CsvString | None = None """ - Energy usage data + List of groups permitted to use the reservation. This is mutually exclusive with users. """ - external_sensors: dict[str, Any] | None = None - extra: str | None = None + licenses: CsvString | None = None """ - Arbitrary string used for node filtering if extra constraints are enabled + List of license names """ - features: CsvString | None = None + max_start_delay: Uint32NoValStruct | None = None """ - Available features + MaxStartDelay in seconds (32 bit integer number with flags) """ - free_mem: Uint64NoValStruct | None = None + name: str | None = None """ - Total memory in MB currently free as reported by the OS + ReservationName """ - gpu_spec: str | None = None + node_count: Uint32NoValStruct | None = None """ - CPU cores reserved for jobs that also use a GPU + NodeCnt (32 bit integer number with flags) """ - gres: str | None = None + node_list: HostlistString | None = None """ - Generic resources + The nodes to be reserved. Multiple node names may be specified using simple node range expressions. """ - gres_drained: str | None = None + partition: str | None = None """ - Drained generic resources + Partition used to reserve nodes from. This will attempt to allocate all nodes in the specified partition unless you request fewer resources than are available with core_cnt, node_cnt or tres. """ - gres_used: str | None = None + purge_completed: PurgeCompleted | None = None + start_time: Uint64NoValStruct | None = None """ - Generic resources currently in use + StartTime (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]'); may also be infinite or unset) (64 bit integer number with flags) """ - hostname: str | None = None + tres: TresList | None = None """ - NodeHostname + List of trackable resources """ - instance_id: str | None = None + users: CsvString | None = None """ - Cloud instance ID + List of permitted users """ - instance_type: str | None = None + + +class ReservationDescMsgList(RootModel[list[ReservationDescMsg]]): + root: list[ReservationDescMsg] + + +class ReservationInfo(BaseModel): + accounts: str | None = None """ - Cloud instance type + Comma-separated list of permitted accounts """ - last_busy: Uint64NoValStruct | None = None + burst_buffer: str | None = None """ - Time when the node was last busy (UNIX timestamp) + BurstBuffer - Burst buffer resources reserved """ - mcs_label: str | None = None + core_count: int | None = None """ - Multi-Category Security label + CoreCnt - Number of cores reserved + """ + core_specializations: ReservationInfoCoreSpec | None = None + """ + Reserved cores specification + """ + end_time: Uint64NoValStruct | None = None + """ + EndTime (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]'); may also be infinite or unset) (64 bit integer number with flags) + """ + features: str | None = None + """ + Features - Expression describing the reservation's required node features + """ + flags: list[Flag10] | None = None + """ + Flags associated with this reservation + """ + groups: str | None = None + """ + Groups - Comma-separated list of permitted groups + """ + licenses: str | None = None + """ + Licenses - Comma-separated list of licenses reserved + """ + max_start_delay: int | None = None + """ + MaxStartDelay - Maximum time an eligible job not requesting this reservation can delay a job requesting it in seconds """ name: str | None = None """ - NodeName + ReservationName - Name of the reservation """ - next_state_after_reboot: NodeStates | None = None + node_count: int | None = None """ - The state the node will be assigned after rebooting + NodeCnt - Number of nodes reserved """ - operating_system: str | None = None + node_list: str | None = None """ - Operating system reported by the node + Nodes - Comma-separated list of node names and/or node ranges reserved """ - owner: str | None = None + partition: str | None = None """ - User allowed to run jobs on this node (unset if no restriction) + PartitionName - Partition used to reserve nodes from """ - partitions: CsvString | None = None + purge_completed: PurgeCompleted | None = None + start_time: Uint64NoValStruct | None = None """ - Partitions containing this node + StartTime (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]'); may also be infinite or unset) (64 bit integer number with flags) """ - port: int | None = None + tres: str | None = None """ - TCP port number of the slurmd + Comma-separated list of required TRES """ - power: dict[str, Any] | None = None - real_memory: int | None = None + users: str | None = None """ - Total memory in MB on the node + Comma-separated list of permitted users """ - reason: str | None = None + watts: Uint32NoValStruct | None = Field(None, deprecated=True) """ - Describes why the node is in a "DOWN", "DRAINED", "DRAINING", "FAILING" or "FAIL" state + 32 bit integer number with flags """ - reason_changed_at: Uint64NoValStruct | None = None + + +class ReservationInfoMsg(RootModel[list[ReservationInfo]]): + root: list[ReservationInfo] + + +class ReservationModReq(BaseModel): + reservations: ReservationDescMsgList | None = None """ - When the reason changed (UNIX timestamp) + Array of reservation descriptions """ - reason_set_by_user: str | None = None + + +class SharesUint64Tres(BaseModel): + name: str | None = None + """ + TRES name + """ + value: Uint64NoValStruct | None = None + """ + TRES value (64 bit integer number with flags) + """ + + +class SharesUint64TresList(RootModel[list[SharesUint64Tres]]): + root: list[SharesUint64Tres] + + +class SlurmStepId(BaseModel): + job_id: Uint32NoValStruct | None = None + """ + Job ID (32 bit integer number with flags) + """ + sluid: str | None = None + """ + SLUID (Slurm Lexicographically-sortable Unique ID) + """ + step_het_component: Uint32NoValStruct | None = None + """ + HetJob component (32 bit integer number with flags) + """ + step_id: str | None = None + """ + Job step ID + """ + + +class StatsMsgRpcType(BaseModel): + average_time: Uint64NoValStruct + """ + Average time spent processing RPC in seconds (64 bit integer number with flags) + """ + count: int + """ + Number of RPCs received + """ + cycle_last: int + """ + Number of RPCs processed within the last RPC queue cycle + """ + cycle_max: int + """ + Maximum number of RPCs processed within a RPC queue cycle since start + """ + dropped: int + """ + Number of RPCs dropped + """ + message_type: str + """ + Message type as string (Slurm RPC message type) + """ + queued: int + """ + Number of RPCs queued + """ + total_time: int + """ + Total time spent processing RPC in seconds + """ + type_id: int + """ + Message type as integer + """ + + +class StatsMsgRpcUser(BaseModel): + average_time: Uint64NoValStruct + """ + Average time spent processing RPC in seconds (64 bit integer number with flags) + """ + count: int + """ + Number of RPCs received + """ + total_time: int + """ + Total time spent processing RPC in seconds + """ + user: str + """ + User name + """ + user_id: int + """ + User ID (numeric) + """ + + +class StatsMsgRpcsByType(RootModel[list[StatsMsgRpcType]]): """ - User who set the reason + RPCs by type """ - res_cores_per_gpu: int | None = None + + root: list[StatsMsgRpcType] """ - Number of CPU cores per GPU restricted to GPU jobs + RPCs by type """ - reservation: str | None = None + + +class StatsMsgRpcsByUser(RootModel[list[StatsMsgRpcUser]]): """ - Name of reservation containing this node + RPCs by user """ - resume_after: Uint64NoValStruct | None = None + + root: list[StatsMsgRpcUser] """ - Number of seconds after the node's state is updated to "DOWN" or "DRAIN" before scheduling a node state resume + RPCs by user """ - slurmd_start_time: Uint64NoValStruct | None = None + + +class StatsRec(BaseModel): + RPCs: StatsRpcList | None = None """ - Time when the slurmd started (UNIX timestamp) + List of RPCs sent to the slurmdbd """ - sockets: int | None = None + rollups: RollupStats | None = None """ - Number of physical processor sockets/chips on the node + Rollup statistics """ - specialized_cores: int | None = None + time_start: int | None = None """ - Number of cores reserved for system use + When data collection started (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]')) """ - specialized_cpus: str | None = None + users: StatsUserList | None = None """ - Abstract CPU IDs on this node reserved for exclusive use by slurmd and slurmstepd + List of users that issued RPCs """ - specialized_memory: int | None = None + + +class RequestedFrequency(BaseModel): + max: Uint32NoValStruct | None = None """ - Combined memory limit, in MB, for Slurm compute node daemons + Maximum requested CPU frequency in kHz (32 bit integer number with flags) """ - state: NodeStates | None = None + min: Uint32NoValStruct | None = None """ - Node state(s) applicable to this node + Minimum requested CPU frequency in kHz (32 bit integer number with flags) """ - temporary_disk: int | None = None + + +class CPU(BaseModel): + governor: str | None = None """ - Total size in MB of temporary disk storage in TmpFS + Requested CPU frequency governor in kHz """ - threads: int | None = None + requested_frequency: RequestedFrequency | None = None + + +class Energy(BaseModel): + consumed: Uint64NoValStruct | None = None """ - Number of logical threads in a single physical core + Total energy consumed by all tasks in a job in joules (64 bit integer number with flags) """ - tres: str | None = None + + +class Statistics(BaseModel): + CPU: CPU1 | None = None + energy: Energy | None = None + + +class Time4(BaseModel): + elapsed: int | None = None """ - Configured trackable resources + Elapsed time in seconds """ - tres_used: str | None = None + end: Uint64NoValStruct | None = None """ - Trackable resources currently allocated for jobs + End time (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]'); may also be infinite or unset) (64 bit integer number with flags) """ - tres_weighted: float | None = None + limit: Uint32NoValStruct | None = None """ - Weighted number of billable trackable resources allocated + Maximum run time in minutes (32 bit integer number with flags) """ - version: str | None = None + start: Uint64NoValStruct | None = None """ - Slurmd version + Time execution began (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]'); may also be infinite or unset) (64 bit integer number with flags) """ - weight: int | None = None + suspended: int | None = None """ - Weight of the node for scheduling purposes + Total time in suspended state in seconds """ + system: System1 | None = None + total: Total1 | None = None + user: User1 | None = None -class Nodes1(RootModel[list[Node]]): - root: list[Node] +class StepTresReqMax(TresList): + pass -class OpenapiMeta(BaseModel): - client: Client | None = None - command: StringArray | None = None - """ - CLI command (if applicable) - """ - plugin: Plugin | None = None - slurm: Slurm | None = None +class StepTresReqMin(TresList): + pass -class OpenapiNodesResp(BaseModel): - errors: OpenapiErrors | None = None +class StepTresUsageMax(TresList): + pass + + +class StepTresUsageMin(TresList): + pass + + +class UsersAddCond(BaseModel): + accounts: StringList | None = None """ - Query errors + CSV accounts list """ - last_update: Uint64NoValStruct + association: AssocRecSet | None = None """ - Time of last node change (UNIX timestamp) + Association limits and options """ - meta: OpenapiMeta | None = None + clusters: StringList | None = None """ - Slurm meta values + CSV clusters list """ - nodes: Nodes1 + partitions: StringList | None = None """ - List of nodes + CSV partitions list """ - warnings: OpenapiWarnings | None = None + users: StringList """ - Query warnings + CSV users list """ - - -class OpenapiPingArrayResp(BaseModel): - errors: OpenapiErrors | None = None + wckeys: StringList | None = None """ - Query errors + CSV WCKeys list """ - meta: OpenapiMeta | None = None + + +class Wckey(BaseModel): + accounting: AccountingList | None = None """ - Slurm meta values + Accounting records containing related resource usage """ - pings: ControllerPingArray + cluster: str """ - pings + Cluster name """ - warnings: OpenapiWarnings | None = None + flags: list[Flag13] | None = None """ - Query warnings + Flags associated with this WCKey """ - - -class OpenapiResp(BaseModel): - errors: OpenapiErrors | None = None + id: int | None = None """ - Query errors + Unique ID for this user-cluster-wckey combination """ - meta: OpenapiMeta | None = None + name: str """ - Slurm meta values + WCKey name """ - warnings: OpenapiWarnings | None = None + user: str """ - Query warnings + User name """ -class Defaults(BaseModel): - job: str | None = None +class WckeyList(RootModel[list[Wckey]]): + root: list[Wckey] + + +class AccountsAddCond(BaseModel): + accounts: StringList """ - JobDefaults + CSV accounts list """ - memory_per_cpu: int | None = None + association: AssocRecSet | None = None """ - DefMemPerCPU or DefMemPerNode + Association limits and options """ - partition_memory_per_cpu: Uint64NoValStruct | None = None + clusters: StringList | None = None """ - DefMemPerCPU + CSV clusters list """ - partition_memory_per_node: Uint64NoValStruct | None = None + + +class Tres2(BaseModel): + group_minutes: SharesUint64TresList | None = None """ - DefMemPerNode + TRES-minute limit """ - time: Uint32NoValStruct | None = None + run_seconds: SharesUint64TresList | None = None """ - DefaultTime in minutes + Currently running tres-secs = grp_used_tres_run_secs """ - - -class Maximums(BaseModel): - cpus_per_node: Uint32NoValStruct | None = None + usage: SharesFloat128TresList | None = None """ - MaxCPUsPerNode + Measure of each TRES usage """ - cpus_per_socket: Uint32NoValStruct | None = None + + +class AssocSharesObjWrap(BaseModel): + cluster: str | None = None """ - MaxCPUsPerSocket + Cluster name """ - memory_per_cpu: int | None = None + effective_usage: Float64NoValStruct | None = None """ - MaxMemPerCPU or MaxMemPerNode + Effective, normalized usage (64 bit floating point number with flags) """ - nodes: Uint32NoValStruct | None = None + fairshare: Fairshare | None = None + id: int | None = None """ - MaxNodes + Association ID """ - over_time_limit: Uint16NoValStruct | None = None + name: str | None = None """ - OverTimeLimit + Share name """ - oversubscribe: Oversubscribe | None = None - partition_memory_per_cpu: Uint64NoValStruct | None = None + parent: str | None = None """ - MaxMemPerCPU + Parent name """ - partition_memory_per_node: Uint64NoValStruct | None = None + partition: str | None = None """ - MaxMemPerNode + Partition name """ - shares: int | None = None + shares: Uint32NoValStruct | None = None """ - OverSubscribe + Number of shares allocated (32 bit integer number with flags) """ - time: Uint32NoValStruct | None = None + shares_normalized: Float64NoValStruct | None = None """ - MaxTime + Normalized shares (64 bit floating point number with flags) """ - - -class Partition(BaseModel): - state: PartitionStates | None = None + tres: Tres2 | None = None + type: list[TypeEnum] | None = None """ - Current state(s) + User or account association """ - - -class Timeouts(BaseModel): - resume: Uint16NoValStruct | None = None + usage: int | None = None """ - ResumeTimeout (GLOBAL if both set and infinite are false) + Measure of tresbillableunits usage """ - suspend: Uint16NoValStruct | None = None + usage_normalized: Float64NoValStruct | None = None """ - SuspendTimeout (GLOBAL if both set and infinite are false) + Normalized usage (64 bit floating point number with flags) """ -class PartitionInfo(BaseModel): - accounts: Accounts | None = None - alternate: str | None = None - """ - Alternate - """ - cluster: str | None = None +class JobDescMsg(BaseModel): + account: str | None = None """ - Cluster name + Account associated with the job """ - cpus: Cpus1 | None = None - defaults: Defaults | None = None - grace_time: int | None = None + account_gather_frequency: str | None = None """ - GraceTime + Job accounting and profiling sampling intervals in seconds """ - groups: Groups | None = None - maximums: Maximums | None = None - minimums: Minimums | None = None - name: str | None = None + admin_comment: str | None = None """ - PartitionName + Arbitrary comment made by administrator """ - node_sets: str | None = None + allocation_node_list: str | None = None """ - NodeSets + Local node making the resource allocation """ - nodes: Nodes2 | None = None - partition: Partition | None = None - priority: Priority | None = None - qos: Qos | None = None - select_type: CrType | None = None + allocation_node_port: int | None = None """ - Scheduler consumable resource selection type + Port to send allocation confirmation to """ - suspend_time: Uint32NoValStruct | None = None + argv: StringArray | None = None """ - SuspendTime (GLOBAL if both set and infinite are false) + Arguments to the script. Note: The slurmstepd always overrides argv[0] with the path to the created script file. If this option is used, argv[0] should be a throwaway value. """ - timeouts: Timeouts | None = None - tres: Tres4 | None = None - - -class PartitionInfoMsg(RootModel[list[PartitionInfo]]): - root: list[PartitionInfo] - - -class Signal(BaseModel): - id: Uint16NoValStruct | None = None + array: str | None = None """ - Signal sent to process (numeric) + Job array index value specification """ - name: str | None = None + batch_features: str | None = None """ - Signal sent to process (name) + Features required for batch script's node """ - - -class ProcessExitCodeVerbose(BaseModel): - return_code: Uint32NoValStruct | None = None + begin_time: Uint64NoValStruct | None = None """ - Process return code (numeric) + Defer the allocation of the job until the specified time (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]'); may also be infinite or unset) (64 bit integer number with flags) """ - signal: Signal | None = None - status: ProcessExitCodeStatus | None = None + burst_buffer: str | None = None """ - Status given by return code + Burst buffer specifications """ - - -class Per4(BaseModel): - account: Uint32NoValStruct | None = None + cluster_constraint: str | None = None """ - MaxJobsAccruePerAccount + Required features that a federated cluster must have to have a sibling job submitted to it """ - user: Uint32NoValStruct | None = None + clusters: str | None = None """ - MaxJobsAccruePerUser + Clusters that a federated job can run on """ - - -class Accruing(BaseModel): - per: Per4 | None = None - - -class ActiveJobs(BaseModel): - accruing: Uint32NoValStruct | None = None + comment: str | None = None """ - GrpJobsAccrue + Arbitrary comment made by user """ - count: Uint32NoValStruct | None = None + constraints: str | None = None """ - GrpJobs + Comma-separated list of features that are required """ - - -class Per5(BaseModel): - account: Uint32NoValStruct | None = None + container: str | None = None """ - MaxJobsPerAccount + Absolute path to OCI container bundle """ - user: Uint32NoValStruct | None = None + container_id: str | None = None """ - MaxJobsPerUser + OCI container ID """ - - -class ActiveJobs1(BaseModel): - per: Per5 | None = None - - -class Per6(BaseModel): - account: Uint32NoValStruct | None = None + contiguous: bool | None = None """ - MaxSubmitJobsPerAccount + True if job requires contiguous nodes """ - user: Uint32NoValStruct | None = None + core_specification: int | None = None """ - MaxSubmitJobsPerUser + Specialized core count """ - - -class Jobs1(BaseModel): - active_jobs: ActiveJobs1 | None = None - count: Uint32NoValStruct | None = None + cpu_binding: str | None = None """ - GrpSubmitJobs + Method for binding tasks to allocated CPUs """ - per: Per6 | None = None - - -class Per7(BaseModel): - account: TresList | None = None + cpu_binding_flags: list[CpuBindingFlag] | None = None """ - MaxTRESRunMinsPerAccount + Flags for CPU binding """ - job: TresList | None = None + cpu_frequency: str | None = None """ - MaxTRESMinsPerJob + Requested CPU frequency range [-p2][:p3] """ - qos: TresList | None = None + cpus_per_task: int | None = None """ - GrpTRESRunMins + Number of CPUs required by each task """ - user: TresList | None = None + cpus_per_tres: str | None = None """ - MaxTRESRunMinsPerUser + Semicolon delimited list of TRES=# values values indicating how many CPUs should be allocated for each specified TRES (currently only used for gres/gpu) """ - - -class Minutes1(BaseModel): - per: Per7 | None = None - total: TresList | None = None + crontab: CronEntry | None = None """ - GrpTRESMins + Specification for scrontab job (crontab entry) """ - - -class Per8(BaseModel): - account: TresList | None = None + current_working_directory: str | None = None """ - MaxTRESPerAccount + Working directory to use for the job """ - job: TresList | None = None + deadline: int | None = None """ - MaxTRESPerJob + Latest time that the job may start (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]')) """ - node: TresList | None = None + delay_boot: int | None = None """ - MaxTRESPerNode + Number of seconds after job eligible start that nodes will be rebooted to satisfy feature specification """ - user: TresList | None = None + dependency: str | None = None """ - MaxTRESPerUser + Other jobs that must meet certain criteria before this job can start """ - - -class Tres5(BaseModel): - minutes: Minutes1 | None = None - per: Per8 | None = None - total: TresList | None = None + distribution: str | None = None """ - GrpTRES + Layout """ - - -class Per9(BaseModel): - job: Uint32NoValStruct | None = None + distribution_plane_size: Uint16NoValStruct | None = None """ - MaxWallDurationPerJob + Plane size specification when distribution specifies plane (16 bit integer number with flags) """ - qos: Uint32NoValStruct | None = None + end_time: int | None = None """ - GrpWall + Expected end time (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]')) """ - - -class WallClock(BaseModel): - per: Per9 | None = None - - -class Max2(BaseModel): - accruing: Accruing | None = None - active_jobs: ActiveJobs | None = None - jobs: Jobs1 | None = None - tres: Tres5 | None = None - wall_clock: WallClock | None = None - - -class Per10(BaseModel): - job: TresList | None = None + environment: StringArray | None = None """ - MinTRES + Environment variables to be set for the job """ - - -class Tres6(BaseModel): - per: Per10 | None = None - - -class Min1(BaseModel): - priority_threshold: Uint32NoValStruct | None = None + excluded_nodes: CsvString | None = None """ - MinPrioThreshold + Comma-separated list of nodes that may not be used """ - tres: Tres6 | None = None - - -class Limits1(BaseModel): - factor: Float64NoValStruct | None = None + extra: str | None = None """ - LimitFactor + Arbitrary string used for node filtering if extra constraints are enabled """ - grace_time: int | None = None + flags: list[Flag5] | None = None """ - GraceTime + Job flags """ - max: Max2 | None = None - min: Min1 | None = None - - -class Preempt(BaseModel): - exempt_time: Uint32NoValStruct | None = None + group_id: str | None = None """ - PreemptExemptTime + Group ID of the user that owns the job """ - list: QosPreemptList | None = None + hetjob_group: int | None = None """ - Other QOS's this QOS can preempt + Unique sequence number applied to this component of the heterogeneous job """ - mode: QosPreemptModes | None = None + hold: bool | None = None """ - PreemptMode + Hold (true) or release (false) job (Job held) """ - - -class Qos1(BaseModel): - description: str | None = None + immediate: bool | None = None """ - Arbitrary description + If true, exit if resources are not available within the time period specified """ - flags: QosFlags | None = None + job_id: int | None = None """ - Flags, to avoid modifying current values specify NOT_SET + Job ID """ - id: int | None = None + kill_on_node_fail: bool | None = None """ - Unique ID + If true, kill job on node failure """ - limits: Limits1 | None = None - name: str | None = None + kill_warning_delay: Uint16NoValStruct | None = None """ - Name + Number of seconds before end time to send the warning signal (16 bit integer number with flags) """ - preempt: Preempt | None = None - priority: Uint32NoValStruct | None = None + kill_warning_flags: list[KillWarningFlag] | None = None """ - Priority + Flags related to job signals """ - usage_factor: Float64NoValStruct | None = None + kill_warning_signal: str | None = None """ - UsageFactor + Signal to send when approaching end time (e.g. "10" or "USR1") """ - usage_threshold: Float64NoValStruct | None = None + licenses: str | None = None """ - UsageThreshold + License(s) required by the job """ - - -class QosList(RootModel[list[Qos1]]): - root: list[Qos1] - - -class PurgeCompleted(BaseModel): - time: Uint32NoValStruct | None = None + mail_type: list[MailTypeEnum] | None = None """ - If PURGE_COMP flag is set, the number of seconds this reservation will sit idle until it is revoked + Mail event type(s) """ - - -class ReservationInfo(BaseModel): - accounts: str | None = None + mail_user: str | None = None """ - Comma separated list of permitted accounts + User to receive email notifications """ - burst_buffer: str | None = None + maximum_cpus: int | None = None """ - BurstBuffer + Maximum number of CPUs required """ - core_count: int | None = None + maximum_nodes: int | None = None """ - CoreCnt + Maximum node count """ - core_specializations: ReservationInfoCoreSpec | None = None + mcs_label: str | None = None """ - Reserved cores specification + Multi-Category Security label on the job """ - end_time: Uint64NoValStruct | None = None + memory_binding: str | None = None """ - EndTime (UNIX timestamp) + Binding map for map/mask_cpu """ - features: str | None = None + memory_binding_type: list[MemoryBindingTypeEnum] | None = None """ - Features + Method for binding tasks to memory """ - flags: ReservationFlags | None = None + memory_per_cpu: Uint64NoValStruct | None = None """ - Flags associated with this reservation + Minimum memory in megabytes per allocated CPU (64 bit integer number with flags) """ - groups: str | None = None + memory_per_node: Uint64NoValStruct | None = None """ - Groups + Minimum memory in megabytes per allocated node (64 bit integer number with flags) """ - licenses: str | None = None + memory_per_tres: str | None = None """ - Licenses + Semicolon delimited list of TRES=# values indicating how much memory in megabytes should be allocated for each specified TRES (currently only used for gres/gpu) """ - max_start_delay: int | None = None + minimum_boards_per_node: int | None = None """ - MaxStartDelay in seconds + Boards per node required """ - name: str | None = None + minimum_cpus: int | None = None """ - ReservationName + Minimum number of CPUs required """ - node_count: int | None = None + minimum_cpus_per_node: int | None = None """ - NodeCnt + Minimum number of CPUs per node """ - node_list: str | None = None + minimum_nodes: int | None = None """ - Nodes + Minimum node count """ - partition: str | None = None + minimum_sockets_per_board: int | None = None """ - PartitionName + Sockets per board required """ - purge_completed: PurgeCompleted | None = None - start_time: Uint64NoValStruct | None = None + name: str | None = None """ - StartTime (UNIX timestamp) + Job name """ - tres: str | None = None + network: str | None = None """ - Comma separated list of required TRES + Network specs for job step """ - users: str | None = None + nice: int | None = None """ - Comma separated list of permitted users + Requested job priority change """ - watts: Uint32NoValStruct | None = None + nodes: str | None = None """ - 32 bit integer number with flags + Node count range specification (e.g. 1-15:4) """ - - -class ReservationInfoMsg(RootModel[list[ReservationInfo]]): - root: list[ReservationInfo] - - -class SharesUint64Tres(BaseModel): - name: str | None = None + ntasks_per_tres: int | None = None """ - TRES name + Number of tasks that can access each GPU """ - value: Uint64NoValStruct | None = None + oom_kill_step: int | None = None """ - TRES value + Kill whole step in case of OOM in one of the tasks """ - - -class SharesUint64TresList(RootModel[list[SharesUint64Tres]]): - root: list[SharesUint64Tres] - - -class StatsMsgRpcType(BaseModel): - average_time: Uint64NoValStruct + open_mode: list[OpenModeEnum] | None = None """ - Average time spent processing RPC in seconds + Open mode used for stdout and stderr files """ - count: int + overcommit: bool | None = None """ - Number of RPCs received + Overcommit resources """ - cycle_last: int + partition: str | None = None """ - Number of RPCs processed within the last RPC queue cycle + Partition assigned to the job """ - cycle_max: int + power_flags: list[Any] | None = Field(None, deprecated=True) + prefer: str | None = None """ - Maximum number of RPCs processed within a RPC queue cycle since start + Comma-separated list of features that are preferred but not required """ - dropped: int + priority: Uint32NoValStruct | None = None """ - Number of RPCs dropped + Request specific job priority (32 bit integer number with flags) """ - message_type: str + profile: list[ProfileEnum] | None = None """ - Message type as string + Profile used by the acct_gather_profile plugin """ - queued: int + qos: str | None = None """ - Number of RPCs queued + Quality of Service assigned to the job """ - total_time: int + reboot: bool | None = None """ - Total time spent processing RPC in seconds + Node reboot requested before start """ - type_id: int + requeue: bool | None = None """ - Message type as integer + Determines whether the job may be requeued """ - - -class StatsMsgRpcUser(BaseModel): - average_time: Uint64NoValStruct + required_nodes: CsvString | None = None """ - Average time spent processing RPC in seconds + Comma-separated list of required nodes """ - count: int + required_switches: Uint32NoValStruct | None = None """ - Number of RPCs received + Maximum number of switches (32 bit integer number with flags) """ - total_time: int + reservation: str | None = None """ - Total time spent processing RPC in seconds + Name of reservation to use """ - user: str + reserve_ports: int | None = None """ - User name + Port to send various notification msg to """ - user_id: int + rlimits: Rlimits | None = None + script: str | None = None """ - User ID (numeric) + Job batch script contents; only the first component in a HetJob is populated or honored """ - - -class StatsMsgRpcsByType(RootModel[list[StatsMsgRpcType]]): + segment_size: Uint16NoValStruct | None = None """ - RPCs by type + Segment size for topology/block (16 bit integer number with flags) """ - - root: list[StatsMsgRpcType] + selinux_context: str | None = None """ - RPCs by type + SELinux context """ - - -class StatsMsgRpcsByUser(RootModel[list[StatsMsgRpcUser]]): + shared: list[SharedEnum] | None = None """ - RPCs by user + How the job can share resources with other jobs, if at all """ - - root: list[StatsMsgRpcUser] + site_factor: int | None = None """ - RPCs by user + Site-specific priority factor """ - - -class StatsRec(BaseModel): - RPCs: StatsRpcList | None = None + sockets_per_node: int | None = None """ - List of RPCs sent to the slurmdbd + Sockets per node required """ - rollups: RollupStats | None = None + spank_environment: StringArray | None = None """ - Rollup statistics + Environment variables for job prolog/epilog scripts as set by SPANK plugins """ - time_start: int | None = None + standard_error: str | None = None """ - When data collection started (UNIX timestamp) + Path to stderr file """ - users: StatsUserList | None = None + standard_input: str | None = None """ - List of users that issued RPCs + Path to stdin file """ - - -class RequestedFrequency(BaseModel): - max: Uint32NoValStruct | None = None + standard_output: str | None = None """ - Maximum requested CPU frequency in kHz + Path to stdout file """ - min: Uint32NoValStruct | None = None + step_id: SlurmStepId | None = None """ - Minimum requested CPU frequency in kHz + Job step ID """ - - -class CPU(BaseModel): - governor: str | None = None + tasks: int | None = None """ - Requested CPU frequency governor in kHz + Number of tasks """ - requested_frequency: RequestedFrequency | None = None - - -class Energy(BaseModel): - consumed: Uint64NoValStruct | None = None + tasks_per_board: int | None = None """ - Total energy consumed by all tasks in a job in joules + Number of tasks to invoke on each board """ - - -class Statistics(BaseModel): - CPU: CPU1 | None = None - energy: Energy | None = None - - -class Time4(BaseModel): - elapsed: int | None = None + tasks_per_core: int | None = None """ - Elapsed time in seconds + Number of tasks to invoke on each core """ - end: Uint64NoValStruct | None = None + tasks_per_node: int | None = None """ - End time (UNIX timestamp) + Number of tasks to invoke on each node """ - start: Uint64NoValStruct | None = None + tasks_per_socket: int | None = None """ - Time execution began (UNIX timestamp) + Number of tasks to invoke on each socket """ - suspended: int | None = None + temporary_disk_per_node: int | None = None """ - Total time in suspended state in seconds + Minimum tmp disk space required per node """ - system: System1 | None = None - total: Total1 | None = None - user: User1 | None = None - - -class StepTresReqMax(RootModel[list[Tres]]): - root: list[Tres] - - -class StepTresReqMin(RootModel[list[Tres]]): - root: list[Tres] - - -class StepTresUsageMax(RootModel[list[Tres]]): - root: list[Tres] - - -class StepTresUsageMin(RootModel[list[Tres]]): - root: list[Tres] - - -class UsersAddCond(BaseModel): - accounts: StringList | None = None + thread_specification: int | None = None """ - CSV accounts list + Specialized thread count """ - association: AssocRecSet | None = None + threads_per_core: int | None = None """ - Association limits and options + Threads per core required """ - clusters: StringList | None = None + time_limit: Uint32NoValStruct | None = None """ - CSV clusters list + Maximum run time in minutes (32 bit integer number with flags) """ - partitions: StringList | None = None + time_minimum: Uint32NoValStruct | None = None """ - CSV partitions list + Minimum run time in minutes (32 bit integer number with flags) """ - users: StringList + tres_bind: str | None = None """ - CSV users list + Task to TRES binding directives """ - wckeys: StringList | None = None + tres_freq: str | None = None """ - CSV WCKeys list + TRES frequency directives """ - - -class Wckey(BaseModel): - accounting: AccountingList | None = None + tres_per_job: str | None = None """ - Accounting records containing related resource usage + Comma-separated list of TRES=# values to be allocated for every job """ - cluster: str + tres_per_node: str | None = None """ - Cluster name + Comma-separated list of TRES=# values to be allocated for every node """ - flags: WckeyFlags | None = None + tres_per_socket: str | None = None """ - Flags associated with this WCKey + Comma-separated list of TRES=# values to be allocated for every socket """ - id: int | None = None + tres_per_task: str | None = None """ - Unique ID for this user-cluster-wckey combination + Comma-separated list of TRES=# values to be allocated for every task """ - name: str + user_id: str | None = None """ - WCKey name + User ID that owns the job """ - user: str + wait_all_nodes: bool | None = None """ - User name + If true, wait to start until after all nodes have booted """ - - -class WckeyList(RootModel[list[Wckey]]): - root: list[Wckey] - - -class AccountsAddCond(BaseModel): - accounts: StringList + wait_for_switch: int | None = None """ - CSV accounts list + Maximum time to wait for switches in seconds """ - association: AssocRecSet | None = None + wckey: str | None = None """ - Association limits and options + Workload characterization key """ - clusters: StringList | None = None + x11: list[X11Enum] | None = None """ - CSV clusters list + X11 forwarding options """ - - -class Tres2(BaseModel): - group_minutes: SharesUint64TresList | None = None + x11_magic_cookie: str | None = None """ - TRES-minute limit + Magic cookie for X11 forwarding """ - run_seconds: SharesUint64TresList | None = None + x11_target_host: str | None = None """ - Currently running tres-secs = grp_used_tres_run_secs + Hostname or UNIX socket if x11_target_port=0 """ - usage: SharesFloat128TresList | None = None + x11_target_port: int | None = None """ - Measure of each TRES usage + TCP port """ -class AssocSharesObjWrap(BaseModel): - cluster: str | None = None +class JobDescMsgList(RootModel[list[JobDescMsg]]): + root: list[JobDescMsg] + + +class JobModify(BaseModel): + comment: Comment | None = None + derived_exit_code: ProcessExitCodeVerbose | None = None """ - Cluster name + Highest exit code of all job steps (return code returned by process) """ - effective_usage: Float64NoValStruct | None = None + extra: str | None = None """ - Effective, normalized usage + Arbitrary string used for node filtering if extra constraints are enabled """ - fairshare: Fairshare | None = None - id: int | None = None + tres: Tres4 | None = None + wckey: str | None = None """ - Association ID + Workload characterization key """ - name: str | None = None + + +class Nodes(BaseModel): + allocation: JobResNodes | None = None """ - Share name + Allocated node resources (Job resources for a node) """ - parent: str | None = None + count: int | None = None """ - Parent name + Number of allocated nodes """ - partition: str | None = None + list_1: str | None = Field(None, alias="list") """ - Partition name + Node(s) allocated to the job """ - shares: Uint32NoValStruct | None = None + select_type: list[SelectTypeEnum] | None = None """ - Number of shares allocated + Node scheduling selection method """ - shares_normalized: Float64NoValStruct | None = None + whole: bool | None = None """ - Normalized shares + Whether whole nodes were allocated """ - tres: Tres2 | None = None - type: AssocSharesObjWrapType | None = None + + +class JobRes(BaseModel): + cpus: int """ - User or account association + Number of allocated CPUs """ - usage: int | None = None + nodes: Nodes | None = None + select_type: list[SelectTypeEnum1] """ - Measure of tresbillableunits usage + Scheduler consumable resource selection type """ - usage_normalized: Float64NoValStruct | None = None + threads_per_core: Uint16NoValStruct """ - Normalized usage + Number of processor threads per CPU core (16 bit integer number with flags) """ -class JobAllocReq(BaseModel): - hetjob: JobDescMsgList | None = None +class JobSubmitReq(BaseModel): + job: JobDescMsg | None = None + """ + Job description + """ + jobs: JobDescMsgList | None = None """ HetJob description """ - job: JobDescMsg | None = None + script: str | None = None """ - Job description + Job batch script contents; Same as the script field in jobs[0] or job. """ -class JobResNode(BaseModel): - cpus: Cpus | None = None - index: int - """ - Node index - """ - memory: Memory | None = None - name: str +class OpenapiCreateNodeReq(BaseModel): + errors: OpenapiErrors | None = None """ - Node name + Query errors """ - sockets: JobResSocketArray + meta: OpenapiMeta | None = None """ - Socket allocations in node + Slurm meta values """ - - -class JobResNodes(RootModel[list[JobResNode]]): + node_conf: str """ - Job resources for a node + Node configuration line """ - - root: list[JobResNode] + warnings: OpenapiWarnings | None = None """ - Job resources for a node + Query warnings """ @@ -3967,7 +4167,7 @@ class OpenapiJobPostResponse(BaseModel): """ results: JobArrayResponseArray | None = None """ - Job update results + Job update results (Job update results) """ warnings: OpenapiWarnings | None = None """ @@ -4013,7 +4213,7 @@ class OpenapiKillJobResp(BaseModel): """ status: KillJobsRespMsg """ - resultant status of signal request + resultant status of signal request (List of jobs signal responses) """ warnings: OpenapiWarnings | None = None """ @@ -4021,18 +4221,26 @@ class OpenapiKillJobResp(BaseModel): """ -class OpenapiKillJobsResp(BaseModel): +class OpenapiKillJobsResp(OpenapiKillJobResp): + pass + + +class OpenapiLicensesResp(BaseModel): errors: OpenapiErrors | None = None """ Query errors """ - meta: OpenapiMeta | None = None + last_update: Uint64NoValStruct """ - Slurm meta values + Time of last licenses change (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]'); may also be infinite or unset) (64 bit integer number with flags) """ - status: KillJobsRespMsg + licenses: Licenses + """ + List of licenses + """ + meta: OpenapiMeta | None = None """ - resultant status of signal request + Slurm meta values """ warnings: OpenapiWarnings | None = None """ @@ -4040,45 +4248,41 @@ class OpenapiKillJobsResp(BaseModel): """ -class OpenapiLicensesResp(BaseModel): +class OpenapiPartitionResp(BaseModel): errors: OpenapiErrors | None = None """ Query errors """ last_update: Uint64NoValStruct """ - Time of last licenses change (UNIX timestamp) - """ - licenses: Licenses - """ - List of licenses + Time of last partition change (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]'); may also be infinite or unset) (64 bit integer number with flags) """ meta: OpenapiMeta | None = None """ Slurm meta values """ + partitions: PartitionInfoMsg + """ + List of partitions + """ warnings: OpenapiWarnings | None = None """ Query warnings """ -class OpenapiPartitionResp(BaseModel): +class OpenapiReservationModResp(BaseModel): errors: OpenapiErrors | None = None """ Query errors """ - last_update: Uint64NoValStruct - """ - Time of last partition change (UNIX timestamp) - """ meta: OpenapiMeta | None = None """ Slurm meta values """ - partitions: PartitionInfoMsg + reservations: ReservationDescMsgList """ - List of partitions + Reservation descriptions """ warnings: OpenapiWarnings | None = None """ @@ -4093,7 +4297,7 @@ class OpenapiReservationResp(BaseModel): """ last_update: Uint64NoValStruct """ - Time of last reservation change (UNIX timestamp) + Time of last reservation change (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]'); may also be infinite or unset) (64 bit integer number with flags) """ meta: OpenapiMeta | None = None """ @@ -4212,7 +4416,7 @@ class StatsMsg(BaseModel): """ bf_when_last_cycle: Uint64NoValStruct | None = None """ - When the last backfill scheduling cycle happened (UNIX timestamp) + When the last backfill scheduling cycle happened (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]'); may also be infinite or unset) (64 bit integer number with flags) """ dbd_agent_queue_size: int | None = None """ @@ -4224,7 +4428,7 @@ class StatsMsg(BaseModel): """ job_states_ts: Uint64NoValStruct | None = None """ - When the job state counts were gathered (UNIX timestamp) + When the job state counts were gathered (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]'); may also be infinite or unset) (64 bit integer number with flags) """ jobs_canceled: int | None = None """ @@ -4254,33 +4458,33 @@ class StatsMsg(BaseModel): """ Number of jobs submitted since last reset """ - parts_packed: int | None = None + parts_packed: int | None = Field(None, deprecated=True) """ Zero if only RPC statistic included """ pending_rpcs: StatsMsgRpcsQueue | None = None """ - Pending RPC statistics + Pending RPC statistics (Pending RPCs) """ pending_rpcs_by_hostlist: StatsMsgRpcsDump | None = None """ - Pending RPCs hostlists + Pending RPCs hostlists (Pending RPCs by hostlist) """ req_time: Uint64NoValStruct | None = None """ - When the request was made (UNIX timestamp) + When the request was made (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]'); may also be infinite or unset) (64 bit integer number with flags) """ req_time_start: Uint64NoValStruct | None = None """ - When the data in the report started (UNIX timestamp) + When the data in the report started (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]'); may also be infinite or unset) (64 bit integer number with flags) """ rpcs_by_message_type: StatsMsgRpcsByType | None = None """ - Most frequently issued remote procedure calls (RPCs) + Most frequently issued remote procedure calls (RPCs) (RPCs by type) """ rpcs_by_user: StatsMsgRpcsByUser | None = None """ - RPCs issued by user ID + RPCs issued by user ID (RPCs by user) """ schedule_cycle_depth: int | None = None """ @@ -4366,7 +4570,7 @@ class Requested(BaseModel): """ -class Tres7(BaseModel): +class Tres8(BaseModel): allocated: TresList | None = None """ Trackable resources allocated to the step @@ -4376,21 +4580,21 @@ class Tres7(BaseModel): class Step(BaseModel): - CPU_: CPU | None = None + CPU_1: CPU | None = Field(None, alias="CPU") exit_code: ProcessExitCodeVerbose | None = None """ - Exit code + Exit code (return code returned by process) """ kill_request_user: str | None = None """ User ID that requested termination of the step """ nodes: Nodes3 | None = None - pid: str | None = None + pid: str | None = Field(None, deprecated=True) """ Deprecated; Process ID """ - state: JobState | None = None + state: list[CurrentEnum] | None = None """ Current state """ @@ -4399,7 +4603,7 @@ class Step(BaseModel): task: Task | None = None tasks: Tasks | None = None time: Time4 | None = None - tres: Tres7 | None = None + tres: Tres8 | None = None class StepList(RootModel[list[Step]]): @@ -4407,7 +4611,7 @@ class StepList(RootModel[list[Step]]): class User2(BaseModel): - administrator_level: AdminLvl | None = None + administrator_level: list[AdministratorLevelEnum] | None = None """ AdminLevel granted to the user """ @@ -4420,7 +4624,7 @@ class User2(BaseModel): Accounts this user is a coordinator for """ default: Default1 | None = None - flags: UserFlags | None = None + flags: list[Flag12] | None = None """ Flags associated with this user """ @@ -4479,11 +4683,11 @@ class Job(BaseModel): """ derived_exit_code: ProcessExitCodeVerbose | None = None """ - Highest exit code of all job steps + Highest exit code of all job steps (return code returned by process) """ exit_code: ProcessExitCodeVerbose | None = None """ - Exit code + Exit code (return code returned by process) """ extra: str | None = None """ @@ -4493,7 +4697,7 @@ class Job(BaseModel): """ Name of node that caused job failure """ - flags: SlurmdbJobFlags | None = None + flags: list[Flag4] | None = None """ Flags associated with this job """ @@ -4504,7 +4708,7 @@ class Job(BaseModel): het: Het | None = None hold: bool | None = None """ - Hold (true) or release (false) job + Hold (true) or release (false) job (Job held) """ job_id: int | None = None """ @@ -4533,7 +4737,7 @@ class Job(BaseModel): """ priority: Uint32NoValStruct | None = None """ - Request specific job priority + Request specific job priority (32 bit integer number with flags) """ qos: str | None = None """ @@ -4551,7 +4755,11 @@ class Job(BaseModel): """ script: str | None = None """ - Job batch script; only the first component in a HetJob is populated or honored + Job batch script contents; only the first component in a HetJob is populated or honored + """ + segment_size: int | None = None + """ + Requested segment size """ state: State | None = None stderr: str | None = None @@ -4598,7 +4806,7 @@ class Job(BaseModel): """ wckey: WckeyTagStruct | None = None """ - Workload characterization key + Workload characterization key (WCKey ID with tagging) """ working_directory: str | None = None """ @@ -4606,76 +4814,14 @@ class Job(BaseModel): """ -class JobList(RootModel[list[Job]]): - root: list[Job] - - -class Nodes(BaseModel): - allocation: JobResNodes | None = None - """ - Allocated node resources - """ - count: int | None = None - """ - Number of allocated nodes - """ - list: str | None = None - """ - Node(s) allocated to the job - """ - select_type: NodeCrType | None = None - """ - Node scheduling selection method - """ - whole: bool | None = None - """ - Whether whole nodes were allocated - """ - - -class JobRes(BaseModel): - cpus: int - """ - Number of allocated CPUs - """ - nodes: Nodes | None = None - select_type: CrType - """ - Scheduler consumable resource selection type - """ - threads_per_core: Uint16NoValStruct - """ - Number of processor threads per CPU core - """ - - -class OpenapiDiagResp(BaseModel): - errors: OpenapiErrors | None = None - """ - Query errors - """ - meta: OpenapiMeta | None = None - """ - Slurm meta values - """ - statistics: StatsMsg - """ - statistics - """ - warnings: OpenapiWarnings | None = None - """ - Query warnings - """ - - -class SharesRespMsg(BaseModel): - shares: AssocSharesObjList | None = None +class JobAllocReq(BaseModel): + hetjob: JobDescMsgList | None = None """ - Association shares + HetJob description """ - total_shares: int | None = None + job: JobDescMsg | None = None """ - Total number of shares + Job description """ @@ -4686,7 +4832,7 @@ class JobInfo(BaseModel): """ accrue_time: Uint64NoValStruct | None = None """ - When the job started accruing age priority (UNIX timestamp) + When the job started accruing age priority (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]'); may also be infinite or unset) (64 bit integer number with flags) """ admin_comment: str | None = None """ @@ -4698,15 +4844,15 @@ class JobInfo(BaseModel): """ array_job_id: Uint32NoValStruct | None = None """ - Job ID of job array, or 0 if N/A + Job ID of job array, or 0 if N/A (32 bit integer number with flags) """ array_max_tasks: Uint32NoValStruct | None = None """ - Maximum number of simultaneously running array tasks, 0 if no limit + Maximum number of simultaneously running array tasks, 0 if no limit (32 bit integer number with flags) """ array_task_id: Uint32NoValStruct | None = None """ - Task ID of this task in job array + Task ID of this task in job array (32 bit integer number with flags) """ array_task_string: str | None = None """ @@ -4730,7 +4876,7 @@ class JobInfo(BaseModel): """ billable_tres: Float64NoValStruct | None = None """ - Billable TRES + Billable TRES (64 bit floating point number with flags) """ burst_buffer: str | None = None """ @@ -4774,27 +4920,27 @@ class JobInfo(BaseModel): """ cores_per_socket: Uint16NoValStruct | None = None """ - Cores per socket required + Cores per socket required (16 bit integer number with flags) """ cpu_frequency_governor: Uint32NoValStruct | None = None """ - CPU frequency governor + CPU frequency governor (32 bit integer number with flags) """ cpu_frequency_maximum: Uint32NoValStruct | None = None """ - Maximum CPU frequency + Maximum CPU frequency (32 bit integer number with flags) """ cpu_frequency_minimum: Uint32NoValStruct | None = None """ - Minimum CPU frequency + Minimum CPU frequency (32 bit integer number with flags) """ cpus: Uint32NoValStruct | None = None """ - Minimum number of CPUs required + Minimum number of CPUs required (32 bit integer number with flags) """ cpus_per_task: Uint16NoValStruct | None = None """ - Number of CPUs required by each task + Number of CPUs required by each task (16 bit integer number with flags) """ cpus_per_tres: str | None = None """ @@ -4810,11 +4956,11 @@ class JobInfo(BaseModel): """ deadline: Uint64NoValStruct | None = None """ - Latest time that the job may start (UNIX timestamp) + Latest time that the job may start (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]'); may also be infinite or unset) (64 bit integer number with flags) """ delay_boot: Uint32NoValStruct | None = None """ - Number of seconds after job eligible start that nodes will be rebooted to satisfy feature specification + Number of seconds after job eligible start that nodes will be rebooted to satisfy feature specification (32 bit integer number with flags) """ dependency: str | None = None """ @@ -4822,23 +4968,23 @@ class JobInfo(BaseModel): """ derived_exit_code: ProcessExitCodeVerbose | None = None """ - Highest exit code of all job steps + Highest exit code of all job steps (return code returned by process) """ eligible_time: Uint64NoValStruct | None = None """ - Time when the job became eligible to run (UNIX timestamp) + Time when the job became eligible to run (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]'); may also be infinite or unset) (64 bit integer number with flags) """ end_time: Uint64NoValStruct | None = None """ - End time, real or expected (UNIX timestamp) + End time, real or expected (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]'); may also be infinite or unset) (64 bit integer number with flags) """ excluded_nodes: str | None = None """ - Comma separated list of nodes that may not be used + Comma-separated list of nodes that may not be used """ exit_code: ProcessExitCodeVerbose | None = None """ - Exit code of the job + Exit code of the job (return code returned by process) """ extra: str | None = None """ @@ -4850,7 +4996,7 @@ class JobInfo(BaseModel): """ features: str | None = None """ - Comma separated list of features that are required + Comma-separated list of features that are required """ federation_origin: str | None = None """ @@ -4864,7 +5010,7 @@ class JobInfo(BaseModel): """ Viable sibling job names """ - flags: JobFlags | None = None + flags: list[Flag5] | None = None """ Job flags """ @@ -4882,7 +5028,7 @@ class JobInfo(BaseModel): """ het_job_id: Uint32NoValStruct | None = None """ - Heterogeneous job ID, if applicable + Heterogeneous job ID, if applicable (32 bit integer number with flags) """ het_job_id_set: str | None = None """ @@ -4890,11 +5036,11 @@ class JobInfo(BaseModel): """ het_job_offset: Uint32NoValStruct | None = None """ - Unique sequence number applied to this component of the heterogeneous job + Unique sequence number applied to this component of the heterogeneous job (32 bit integer number with flags) """ hold: bool | None = None """ - Hold (true) or release (false) job + Hold (true) or release (false) job (Job held) """ job_id: int | None = None """ @@ -4908,19 +5054,23 @@ class JobInfo(BaseModel): """ Number of nodes (in a range) required for this job """ - job_state: JobState | None = None + job_state: list[CurrentEnum] | None = None """ Current state """ last_sched_evaluation: Uint64NoValStruct | None = None """ - Last time job was evaluated for scheduling (UNIX timestamp) + Last time job was evaluated for scheduling (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]'); may also be infinite or unset) (64 bit integer number with flags) """ licenses: str | None = None """ License(s) required by the job """ - mail_type: JobMailFlags | None = None + licenses_allocated: str | None = None + """ + License(s) allocated to the job + """ + mail_type: list[MailTypeEnum] | None = None """ Mail event type(s) """ @@ -4930,11 +5080,11 @@ class JobInfo(BaseModel): """ max_cpus: Uint32NoValStruct | None = None """ - Maximum number of CPUs usable by the job + Maximum number of CPUs usable by the job (32 bit integer number with flags) """ max_nodes: Uint32NoValStruct | None = None """ - Maximum number of nodes usable by the job + Maximum number of nodes usable by the job (32 bit integer number with flags) """ maximum_switch_wait_time: int | None = None """ @@ -4946,11 +5096,11 @@ class JobInfo(BaseModel): """ memory_per_cpu: Uint64NoValStruct | None = None """ - Minimum memory in megabytes per allocated CPU + Minimum memory in megabytes per allocated CPU (64 bit integer number with flags) """ memory_per_node: Uint64NoValStruct | None = None """ - Minimum memory in megabytes per allocated node + Minimum memory in megabytes per allocated node (64 bit integer number with flags) """ memory_per_tres: str | None = None """ @@ -4958,11 +5108,11 @@ class JobInfo(BaseModel): """ minimum_cpus_per_node: Uint16NoValStruct | None = None """ - Minimum number of CPUs per node + Minimum number of CPUs per node (16 bit integer number with flags) """ minimum_tmp_disk_per_node: Uint32NoValStruct | None = None """ - Minimum tmp disk space required per node + Minimum tmp disk space required per node (32 bit integer number with flags) """ name: str | None = None """ @@ -4978,7 +5128,7 @@ class JobInfo(BaseModel): """ node_count: Uint32NoValStruct | None = None """ - Minimum number of nodes required + Minimum number of nodes required (32 bit integer number with flags) """ nodes: str | None = None """ @@ -4991,15 +5141,15 @@ class JobInfo(BaseModel): power: Power | None = None pre_sus_time: Uint64NoValStruct | None = None """ - Total run time prior to last suspend in seconds + Total run time prior to last suspend in seconds (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]'); may also be infinite or unset) (64 bit integer number with flags) """ preempt_time: Uint64NoValStruct | None = None """ - Time job received preemption signal (UNIX timestamp) + Time job received preemption signal (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]'); may also be infinite or unset) (64 bit integer number with flags) """ preemptable_time: Uint64NoValStruct | None = None """ - Time job becomes eligible for preemption (UNIX timestamp) + Time job becomes eligible for preemption (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]'); may also be infinite or unset) (64 bit integer number with flags) """ prefer: str | None = None """ @@ -5007,13 +5157,13 @@ class JobInfo(BaseModel): """ priority: Uint32NoValStruct | None = None """ - Request specific job priority + Request specific job priority (32 bit integer number with flags) """ priority_by_partition: PriorityByPartition | None = None """ Prospective job priority in each partition that may be used by this job """ - profile: AcctGatherProfile | None = None + profile: list[ProfileEnum] | None = None """ Profile used by the acct_gather_profile plugin """ @@ -5031,7 +5181,7 @@ class JobInfo(BaseModel): """ required_nodes: str | None = None """ - Comma separated list of required nodes + Comma-separated list of required nodes """ required_switches: int | None = None """ @@ -5039,7 +5189,7 @@ class JobInfo(BaseModel): """ resize_time: Uint64NoValStruct | None = None """ - Time of last size change (UNIX timestamp) + Time of last size change (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]'); may also be infinite or unset) (64 bit integer number with flags) """ restart_cnt: int | None = None """ @@ -5053,11 +5203,15 @@ class JobInfo(BaseModel): """ List of nodes scheduled to be used for the job """ + segment_size: int | None = None + """ + Requested segment size + """ selinux_context: str | None = None """ SELinux context """ - shared: JobShared | None = None + shared: list[SharedEnum] | None = None """ How the job can share resources with other jobs, if at all """ @@ -5067,7 +5221,7 @@ class JobInfo(BaseModel): """ sockets_per_node: Uint16NoValStruct | None = None """ - Number of sockets per node required + Number of sockets per node required (16 bit integer number with flags) """ standard_error: str | None = None """ @@ -5083,7 +5237,7 @@ class JobInfo(BaseModel): """ start_time: Uint64NoValStruct | None = None """ - Time execution began, or is expected to begin (UNIX timestamp) + Time execution began, or is expected to begin (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]'); may also be infinite or unset) (64 bit integer number with flags) """ state_description: str | None = None """ @@ -5093,13 +5247,33 @@ class JobInfo(BaseModel): """ Reason for current Pending or Failed state """ + stderr_expanded: str | None = None + """ + Job stderr with expanded fields + """ + stdin_expanded: str | None = None + """ + Job stdin with expanded fields + """ + stdout_expanded: str | None = None + """ + Job stdout with expanded fields + """ + step_id: SlurmStepId | None = None + """ + Job step ID + """ + submit_line: str | None = None + """ + Job submit line (e.g. 'sbatch -N3 job.sh job_arg' + """ submit_time: Uint64NoValStruct | None = None """ - Time when the job was submitted (UNIX timestamp) + Time when the job was submitted (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]'); may also be infinite or unset) (64 bit integer number with flags) """ suspend_time: Uint64NoValStruct | None = None """ - Time the job was last suspended or resumed (UNIX timestamp) + Time the job was last suspended or resumed (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]'); may also be infinite or unset) (64 bit integer number with flags) """ system_comment: str | None = None """ @@ -5107,27 +5281,27 @@ class JobInfo(BaseModel): """ tasks: Uint32NoValStruct | None = None """ - Number of tasks + Number of tasks (32 bit integer number with flags) """ tasks_per_board: Uint16NoValStruct | None = None """ - Number of tasks invoked on each board + Number of tasks invoked on each board (16 bit integer number with flags) """ tasks_per_core: Uint16NoValStruct | None = None """ - Number of tasks invoked on each core + Number of tasks invoked on each core (16 bit integer number with flags) """ tasks_per_node: Uint16NoValStruct | None = None """ - Number of tasks invoked on each node + Number of tasks invoked on each node (16 bit integer number with flags) """ tasks_per_socket: Uint16NoValStruct | None = None """ - Number of tasks invoked on each socket + Number of tasks invoked on each socket (16 bit integer number with flags) """ tasks_per_tres: Uint16NoValStruct | None = None """ - Number of tasks that can assess each GPU + Number of tasks that can assess each GPU (16 bit integer number with flags) """ thread_spec: int | None = None """ @@ -5135,15 +5309,15 @@ class JobInfo(BaseModel): """ threads_per_core: Uint16NoValStruct | None = None """ - Number of processor threads per CPU core required + Number of processor threads per CPU core required (16 bit integer number with flags) """ time_limit: Uint32NoValStruct | None = None """ - Maximum run time in minutes + Maximum run time in minutes (32 bit integer number with flags) """ time_minimum: Uint32NoValStruct | None = None """ - Minimum run time in minutes + Minimum run time in minutes (32 bit integer number with flags) """ tres_alloc_str: str | None = None """ @@ -5159,19 +5333,19 @@ class JobInfo(BaseModel): """ tres_per_job: str | None = None """ - Comma separated list of TRES=# values to be allocated per job + Comma-separated list of TRES=# values to be allocated per job """ tres_per_node: str | None = None """ - Comma separated list of TRES=# values to be allocated per node + Comma-separated list of TRES=# values to be allocated per node """ tres_per_socket: str | None = None """ - Comma separated list of TRES=# values to be allocated per socket + Comma-separated list of TRES=# values to be allocated per socket """ tres_per_task: str | None = None """ - Comma separated list of TRES=# values to be allocated per task + Comma-separated list of TRES=# values to be allocated per task """ tres_req_str: str | None = None """ @@ -5195,6 +5369,29 @@ class JobInfoMsg(RootModel[list[JobInfo]]): root: list[JobInfo] +class JobList(RootModel[list[Job]]): + root: list[Job] + + +class OpenapiDiagResp(BaseModel): + errors: OpenapiErrors | None = None + """ + Query errors + """ + meta: OpenapiMeta | None = None + """ + Slurm meta values + """ + statistics: StatsMsg + """ + statistics + """ + warnings: OpenapiWarnings | None = None + """ + Query warnings + """ + + class OpenapiJobInfoResp(BaseModel): errors: OpenapiErrors | None = None """ @@ -5206,11 +5403,11 @@ class OpenapiJobInfoResp(BaseModel): """ last_backfill: Uint64NoValStruct """ - Time of last backfill scheduler run (UNIX timestamp) + Time of last backfill scheduler run (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]'); may also be infinite or unset) (64 bit integer number with flags) """ last_update: Uint64NoValStruct """ - Time of last job change (UNIX timestamp) + Time of last job change (UNIX timestamp) (UNIX timestamp or time string recognized by Slurm (e.g., '[MM/DD[/YY]-]HH:MM[:SS]'); may also be infinite or unset) (64 bit integer number with flags) """ meta: OpenapiMeta | None = None """ @@ -5222,6 +5419,17 @@ class OpenapiJobInfoResp(BaseModel): """ +class SharesRespMsg(BaseModel): + shares: AssocSharesObjList | None = None + """ + Association shares + """ + total_shares: int | None = None + """ + Total number of shares + """ + + class OpenapiSharesResp(BaseModel): errors: OpenapiErrors | None = None """ diff --git a/ParProcCo/slurm/slurmdb_rest.py b/ParProcCo/slurm/slurmdb_rest.py index ef49686..c78be1b 100644 --- a/ParProcCo/slurm/slurmdb_rest.py +++ b/ParProcCo/slurm/slurmdb_rest.py @@ -1,4713 +1,13 @@ # generated by datamodel-codegen: -# filename: slurmdb-rest.yaml -# timestamp: 2025-03-20T16:17:44+00:00 +# filename: slurmdb-rest-44.yaml +# timestamp: 2026-06-11T15:22:35+00:00 from __future__ import annotations +from pydantic import BaseModel, Field, RootModel -from enum import Enum -from typing import Any - -from pydantic import BaseModel, Field, RootModel - - -class AccountFlag(Enum): - DELETED = "DELETED" - WithAssociations = "WithAssociations" - WithCoordinators = "WithCoordinators" - NoUsersAreCoords = "NoUsersAreCoords" - UsersAreCoords = "UsersAreCoords" - - -class AccountFlags(RootModel[list[AccountFlag]]): - root: list[AccountFlag] - - -class AccountShort(BaseModel): - description: str | None = None - """ - Arbitrary string describing the account - """ - organization: str | None = None - """ - Organization to which the account belongs - """ - - -class Allocated(BaseModel): - seconds: int | None = None - """ - Number of seconds allocated - """ - - -class AcctGatherProfileEnum(Enum): - NOT_SET = "NOT_SET" - NONE = "NONE" - ENERGY = "ENERGY" - LUSTRE = "LUSTRE" - NETWORK = "NETWORK" - TASK = "TASK" - - -class AcctGatherProfile(RootModel[list[AcctGatherProfileEnum]]): - root: list[AcctGatherProfileEnum] - - -class AdminLvlEnum(Enum): - Not_Set = "Not Set" - None_ = "None" - Operator = "Operator" - Administrator = "Administrator" - - -class AdminLvl(RootModel[list[AdminLvlEnum]]): - root: list[AdminLvlEnum] - - -class Default(BaseModel): - qos: str | None = None - """ - Default QOS - """ - - -class AssocFlag(Enum): - DELETED = "DELETED" - NoUpdate = "NoUpdate" - Exact = "Exact" - NoUsersAreCoords = "NoUsersAreCoords" - UsersAreCoords = "UsersAreCoords" - - -class AssocFlags(RootModel[list[AssocFlag]]): - root: list[AssocFlag] - - -class AssocSharesObjWrapTypeEnum(Enum): - USER = "USER" - ASSOCIATION = "ASSOCIATION" - - -class AssocSharesObjWrapType(RootModel[list[AssocSharesObjWrapTypeEnum]]): - root: list[AssocSharesObjWrapTypeEnum] - - -class AssocShort(BaseModel): - account: str | None = None - """ - Account name - """ - cluster: str | None = None - """ - Cluster name - """ - id: int | None = None - """ - Numeric association ID - """ - partition: str | None = None - """ - Partition name - """ - user: str - """ - User name - """ - - -class AssocShortList(RootModel[list[AssocShort]]): - root: list[AssocShort] - - -class BfExitFields(BaseModel): - bf_max_job_start: int | None = None - """ - Reached number of jobs allowed to start - """ - bf_max_job_test: int | None = None - """ - Reached number of jobs allowed to be tested - """ - bf_max_time: int | None = None - """ - Reached maximum allowed scheduler time - """ - bf_node_space_size: int | None = None - """ - Reached table size limit - """ - end_job_queue: int | None = None - """ - Reached end of queue - """ - state_changed: int | None = None - """ - System state changed - """ - - -class Associations(BaseModel): - root: AssocShort | None = None - """ - Root association information - """ - - -class Controller(BaseModel): - host: str | None = None - """ - ControlHost - """ - port: int | None = None - """ - ControlPort - """ - - -class ClusterRecFlag(Enum): - REGISTERING = "REGISTERING" - MULTIPLE_SLURMD = "MULTIPLE_SLURMD" - FRONT_END = "FRONT_END" - FEDERATION = "FEDERATION" - EXTERNAL = "EXTERNAL" - - -class ClusterRecFlags(RootModel[list[ClusterRecFlag]]): - root: list[ClusterRecFlag] - - -class ControllerPing(BaseModel): - hostname: str | None = None - """ - Target for ping - """ - latency: int | None = None - """ - Number of microseconds it took to successfully ping or timeout - """ - mode: str | None = None - """ - The operating mode of the responding slurmctld - """ - pinged: str | None = None - """ - Ping result - """ - primary: bool - """ - Is responding slurmctld the primary controller - """ - responding: bool - """ - If ping RPC responded with pong from controller - """ - - -class ControllerPingArray(RootModel[list[ControllerPing]]): - root: list[ControllerPing] - - -class Coord(BaseModel): - direct: bool | None = None - """ - Indicates whether the coordinator was directly assigned to this account - """ - name: str - """ - User name - """ - - -class CoordList(RootModel[list[Coord]]): - root: list[Coord] - - -class CpuBindingFlag(Enum): - CPU_BIND_TO_THREADS = "CPU_BIND_TO_THREADS" - CPU_BIND_TO_CORES = "CPU_BIND_TO_CORES" - CPU_BIND_TO_SOCKETS = "CPU_BIND_TO_SOCKETS" - CPU_BIND_TO_LDOMS = "CPU_BIND_TO_LDOMS" - CPU_BIND_NONE = "CPU_BIND_NONE" - CPU_BIND_RANK = "CPU_BIND_RANK" - CPU_BIND_MAP = "CPU_BIND_MAP" - CPU_BIND_MASK = "CPU_BIND_MASK" - CPU_BIND_LDRANK = "CPU_BIND_LDRANK" - CPU_BIND_LDMAP = "CPU_BIND_LDMAP" - CPU_BIND_LDMASK = "CPU_BIND_LDMASK" - VERBOSE = "VERBOSE" - CPU_BIND_ONE_THREAD_PER_CORE = "CPU_BIND_ONE_THREAD_PER_CORE" - - -class CpuBindingFlags(RootModel[list[CpuBindingFlag]]): - root: list[CpuBindingFlag] - - -class CrTypeEnum(Enum): - CPU = "CPU" - SOCKET = "SOCKET" - CORE = "CORE" - BOARD = "BOARD" - MEMORY = "MEMORY" - ONE_TASK_PER_CORE = "ONE_TASK_PER_CORE" - PACK_NODES = "PACK_NODES" - CORE_DEFAULT_DIST_BLOCK = "CORE_DEFAULT_DIST_BLOCK" - LLN = "LLN" - LINEAR = "LINEAR" - - -class CrType(RootModel[list[CrTypeEnum]]): - root: list[CrTypeEnum] - - -class Line(BaseModel): - end: int | None = None - """ - End of this entry in file - """ - start: int | None = None - """ - Start of this entry in file - """ - - -class CronEntryFlag(Enum): - WILD_MINUTE = "WILD_MINUTE" - WILD_HOUR = "WILD_HOUR" - WILD_DAY_OF_MONTH = "WILD_DAY_OF_MONTH" - WILD_MONTH = "WILD_MONTH" - WILD_DAY_OF_WEEK = "WILD_DAY_OF_WEEK" - - -class CronEntryFlags(RootModel[list[CronEntryFlag]]): - root: list[CronEntryFlag] - - -class CsvString(RootModel[list[str]]): - root: list[str] - - -class Float64NoValStruct(BaseModel): - infinite: bool | None = None - """ - True if number has been set to infinite; "set" and "number" will be ignored - """ - number: float | None = None - """ - If "set" is True the number will be set with value; otherwise ignore number contents - """ - set: bool | None = None - """ - True if number has been set; False if number is unset - """ - - -class Hostlist(RootModel[list[str]]): - root: list[str] - - -class HostlistString(RootModel[list[str]]): - root: list[str] - - -class Time(BaseModel): - time_end: int | None = None - """ - When the instance will end (UNIX timestamp) - """ - time_start: int | None = None - """ - When the instance will start (UNIX timestamp) - """ - - -class Instance(BaseModel): - cluster: str | None = None - """ - Cluster name - """ - extra: str | None = None - """ - Arbitrary string used for node filtering if extra constraints are enabled - """ - instance_id: str | None = None - """ - Cloud instance ID - """ - instance_type: str | None = None - """ - Cloud instance type - """ - node_name: str | None = None - """ - NodeName - """ - time: Time | None = None - - -class InstanceList(RootModel[list[Instance]]): - root: list[Instance] - - -class Running(BaseModel): - tasks: int | None = None - """ - Maximum number of simultaneously running tasks, 0 if no limit - """ - - -class Max1(BaseModel): - running: Running | None = None - - -class Limits(BaseModel): - max: Max1 | None = None - - -class Comment(BaseModel): - administrator: str | None = None - """ - Arbitrary comment made by administrator - """ - job: str | None = None - """ - Arbitrary comment made by user - """ - system: str | None = None - """ - Arbitrary comment from slurmctld - """ - - -class Mcs(BaseModel): - label: str | None = None - """ - Multi-Category Security label on the job - """ - - -class Reservation(BaseModel): - id: int | None = None - """ - Unique identifier of requested reservation - """ - name: str | None = None - """ - Name of reservation to use - """ - - -class System(BaseModel): - microseconds: int | None = None - """ - System CPU time used by the job in microseconds - """ - seconds: int | None = None - """ - System CPU time used by the job in seconds - """ - - -class Total(BaseModel): - microseconds: int | None = None - """ - Sum of System and User CPU time used by the job in microseconds - """ - seconds: int | None = None - """ - Sum of System and User CPU time used by the job in seconds - """ - - -class User(BaseModel): - microseconds: int | None = None - """ - User CPU time used by the job in microseconds - """ - seconds: int | None = None - """ - User CPU time used by the job in seconds - """ - - -class JobArrayResponseMsgEntry(BaseModel): - error: str | None = None - """ - Verbose update status or error - """ - error_code: int | None = None - """ - Verbose update status or error - """ - job_id: int | None = None - """ - Job ID for updated job - """ - step_id: str | None = None - """ - Step ID for updated job - """ - why: str | None = None - """ - Update response message - """ - - -class JobFlag(Enum): - KILL_INVALID_DEPENDENCY = "KILL_INVALID_DEPENDENCY" - NO_KILL_INVALID_DEPENDENCY = "NO_KILL_INVALID_DEPENDENCY" - HAS_STATE_DIRECTORY = "HAS_STATE_DIRECTORY" - TESTING_BACKFILL = "TESTING_BACKFILL" - GRES_BINDING_ENFORCED = "GRES_BINDING_ENFORCED" - TEST_NOW_ONLY = "TEST_NOW_ONLY" - SEND_JOB_ENVIRONMENT = "SEND_JOB_ENVIRONMENT" - SPREAD_JOB = "SPREAD_JOB" - PREFER_MINIMUM_NODE_COUNT = "PREFER_MINIMUM_NODE_COUNT" - JOB_KILL_HURRY = "JOB_KILL_HURRY" - SKIP_TRES_STRING_ACCOUNTING = "SKIP_TRES_STRING_ACCOUNTING" - SIBLING_CLUSTER_UPDATE_ONLY = "SIBLING_CLUSTER_UPDATE_ONLY" - HETEROGENEOUS_JOB = "HETEROGENEOUS_JOB" - EXACT_TASK_COUNT_REQUESTED = "EXACT_TASK_COUNT_REQUESTED" - EXACT_CPU_COUNT_REQUESTED = "EXACT_CPU_COUNT_REQUESTED" - TESTING_WHOLE_NODE_BACKFILL = "TESTING_WHOLE_NODE_BACKFILL" - TOP_PRIORITY_JOB = "TOP_PRIORITY_JOB" - ACCRUE_COUNT_CLEARED = "ACCRUE_COUNT_CLEARED" - GRES_BINDING_DISABLED = "GRES_BINDING_DISABLED" - JOB_WAS_RUNNING = "JOB_WAS_RUNNING" - JOB_ACCRUE_TIME_RESET = "JOB_ACCRUE_TIME_RESET" - CRON_JOB = "CRON_JOB" - EXACT_MEMORY_REQUESTED = "EXACT_MEMORY_REQUESTED" - USING_DEFAULT_ACCOUNT = "USING_DEFAULT_ACCOUNT" - USING_DEFAULT_PARTITION = "USING_DEFAULT_PARTITION" - USING_DEFAULT_QOS = "USING_DEFAULT_QOS" - USING_DEFAULT_WCKEY = "USING_DEFAULT_WCKEY" - DEPENDENT = "DEPENDENT" - MAGNETIC = "MAGNETIC" - PARTITION_ASSIGNED = "PARTITION_ASSIGNED" - BACKFILL_ATTEMPTED = "BACKFILL_ATTEMPTED" - SCHEDULING_ATTEMPTED = "SCHEDULING_ATTEMPTED" - STEPMGR_ENABLED = "STEPMGR_ENABLED" - - -class JobFlags(RootModel[list[JobFlag]]): - root: list[JobFlag] - - -class Power(BaseModel): - flags: list | None = None - - -class JobInfoGresDetail(RootModel[list[str]]): - root: list[str] - - -class JobMailFlag(Enum): - BEGIN = "BEGIN" - END = "END" - FAIL = "FAIL" - REQUEUE = "REQUEUE" - TIME_100_ = "TIME=100%" - TIME_90_ = "TIME=90%" - TIME_80_ = "TIME=80%" - TIME_50_ = "TIME=50%" - STAGE_OUT = "STAGE_OUT" - ARRAY_TASKS = "ARRAY_TASKS" - INVALID_DEPENDENCY = "INVALID_DEPENDENCY" - - -class JobMailFlags(RootModel[list[JobMailFlag]]): - root: list[JobMailFlag] - - -class JobResCoreStatu(Enum): - INVALID = "INVALID" - UNALLOCATED = "UNALLOCATED" - ALLOCATED = "ALLOCATED" - IN_USE = "IN_USE" - - -class JobResCoreStatus(RootModel[list[JobResCoreStatu]]): - root: list[JobResCoreStatu] - - -class Cpus(BaseModel): - count: int | None = None - """ - Total number of CPUs assigned to job - """ - used: int | None = None - """ - Total number of CPUs used by job - """ - - -class Memory(BaseModel): - allocated: int | None = None - """ - Total memory (MiB) allocated to job - """ - used: int | None = None - """ - Total memory (MiB) used by job - """ - - -class JobSharedEnum(Enum): - none = "none" - oversubscribe = "oversubscribe" - user = "user" - mcs = "mcs" - topo = "topo" - - -class JobShared(RootModel[list[JobSharedEnum]]): - root: list[JobSharedEnum] - - -class JobStateEnum(Enum): - PENDING = "PENDING" - RUNNING = "RUNNING" - SUSPENDED = "SUSPENDED" - COMPLETED = "COMPLETED" - CANCELLED = "CANCELLED" - FAILED = "FAILED" - TIMEOUT = "TIMEOUT" - NODE_FAIL = "NODE_FAIL" - PREEMPTED = "PREEMPTED" - BOOT_FAIL = "BOOT_FAIL" - DEADLINE = "DEADLINE" - OUT_OF_MEMORY = "OUT_OF_MEMORY" - LAUNCH_FAILED = "LAUNCH_FAILED" - REQUEUED = "REQUEUED" - REQUEUE_HOLD = "REQUEUE_HOLD" - SPECIAL_EXIT = "SPECIAL_EXIT" - RESIZING = "RESIZING" - CONFIGURING = "CONFIGURING" - COMPLETING = "COMPLETING" - STOPPED = "STOPPED" - RECONFIG_FAIL = "RECONFIG_FAIL" - POWER_UP_NODE = "POWER_UP_NODE" - REVOKED = "REVOKED" - REQUEUE_FED = "REQUEUE_FED" - RESV_DEL_HOLD = "RESV_DEL_HOLD" - SIGNALING = "SIGNALING" - STAGE_OUT = "STAGE_OUT" - - -class JobState(RootModel[list[JobStateEnum]]): - root: list[JobStateEnum] - - -class KillJobsMsgJobsArray(RootModel[list[str]]): - root: list[str] - - -class Error(BaseModel): - code: int | None = None - """ - Numeric error encountered signaling job - """ - message: str | None = None - """ - Error message why signaling job failed - """ - string: str | None = None - """ - String error encountered signaling job - """ - - -class Federation(BaseModel): - sibling: str | None = None - """ - Name of federation sibling (may be empty for non-federation) - """ - - -class License(BaseModel): - Free: int | None = None - """ - Number of licenses currently available - """ - LastConsumed: int | None = None - """ - Last known number of licenses that were consumed in the license manager (Remote Only) - """ - LastDeficit: int | None = None - """ - Number of "missing licenses" from the cluster's perspective - """ - LastUpdate: int | None = None - """ - When the license information was last updated (UNIX Timestamp) - """ - LicenseName: str | None = None - """ - Name of the license - """ - Remote: bool | None = None - """ - Indicates whether licenses are served by the database - """ - Reserved: int | None = None - """ - Number of licenses reserved - """ - Total: int | None = None - """ - Total number of licenses present - """ - Used: int | None = None - """ - Number of licenses in use - """ - - -class Licenses(RootModel[list[License]]): - root: list[License] - - -class MemoryBindingTypeEnum(Enum): - NONE = "NONE" - RANK = "RANK" - MAP = "MAP" - MASK = "MASK" - LOCAL = "LOCAL" - VERBOSE = "VERBOSE" - SORT = "SORT" - PREFER = "PREFER" - - -class MemoryBindingType(RootModel[list[MemoryBindingTypeEnum]]): - root: list[MemoryBindingTypeEnum] - - -class NodeCrTypeEnum(Enum): - AVAILABLE = "AVAILABLE" - ONE_ROW = "ONE_ROW" - RESERVED = "RESERVED" - - -class NodeCrType(RootModel[list[NodeCrTypeEnum]]): - root: list[NodeCrTypeEnum] - - -class NodeState(Enum): - INVALID = "INVALID" - UNKNOWN = "UNKNOWN" - DOWN = "DOWN" - IDLE = "IDLE" - ALLOCATED = "ALLOCATED" - ERROR = "ERROR" - MIXED = "MIXED" - FUTURE = "FUTURE" - RESERVED = "RESERVED" - UNDRAIN = "UNDRAIN" - CLOUD = "CLOUD" - RESUME = "RESUME" - DRAIN = "DRAIN" - COMPLETING = "COMPLETING" - NOT_RESPONDING = "NOT_RESPONDING" - POWERED_DOWN = "POWERED_DOWN" - FAIL = "FAIL" - POWERING_UP = "POWERING_UP" - MAINTENANCE = "MAINTENANCE" - REBOOT_REQUESTED = "REBOOT_REQUESTED" - REBOOT_CANCELED = "REBOOT_CANCELED" - POWERING_DOWN = "POWERING_DOWN" - DYNAMIC_FUTURE = "DYNAMIC_FUTURE" - REBOOT_ISSUED = "REBOOT_ISSUED" - PLANNED = "PLANNED" - INVALID_REG = "INVALID_REG" - POWER_DOWN = "POWER_DOWN" - POWER_UP = "POWER_UP" - POWER_DRAIN = "POWER_DRAIN" - DYNAMIC_NORM = "DYNAMIC_NORM" - - -class NodeStates(RootModel[list[NodeState]]): - root: list[NodeState] - - -class OpenModeEnum(Enum): - APPEND = "APPEND" - TRUNCATE = "TRUNCATE" - - -class OpenMode(RootModel[list[OpenModeEnum]]): - root: list[OpenModeEnum] - - -class OpenapiError(BaseModel): - description: str | None = None - """ - Long form error description - """ - error: str | None = None - """ - Short form error description - """ - error_number: int | None = None - """ - Slurm numeric error identifier - """ - source: str | None = None - """ - Source of error or where error was first detected - """ - - -class OpenapiErrors(RootModel[list[OpenapiError]]): - root: list[OpenapiError] - - -class Client(BaseModel): - group: str | None = None - """ - Client group (if known) - """ - source: str | None = None - """ - Client source description - """ - user: str | None = None - """ - Client user (if known) - """ - - -class Plugin(BaseModel): - accounting_storage: str | None = None - """ - Slurm accounting plugin - """ - data_parser: str | None = None - """ - Slurm data_parser plugin - """ - name: str | None = None - """ - Slurm plugin name (if applicable) - """ - type: str | None = None - """ - Slurm plugin type (if applicable) - """ - - -class Version(BaseModel): - major: str | None = None - """ - Slurm release major version - """ - micro: str | None = None - """ - Slurm release micro version - """ - minor: str | None = None - """ - Slurm release minor version - """ - - -class Slurm(BaseModel): - cluster: str | None = None - """ - Slurm cluster name - """ - release: str | None = None - """ - Slurm release string - """ - version: Version | None = None - - -class OpenapiWarning(BaseModel): - description: str | None = None - """ - Long form warning description - """ - source: str | None = None - """ - Source of warning or where warning was first detected - """ - - -class OpenapiWarnings(RootModel[list[OpenapiWarning]]): - root: list[OpenapiWarning] - - -class OversubscribeFlag(Enum): - force = "force" - - -class OversubscribeFlags(RootModel[list[OversubscribeFlag]]): - root: list[OversubscribeFlag] - - -class PartPrio(BaseModel): - partition: str | None = None - """ - Partition name - """ - priority: int | None = None - """ - Prospective job priority if it runs in this partition - """ - - -class Accounts(BaseModel): - allowed: str | None = None - """ - AllowAccounts - """ - deny: str | None = None - """ - DenyAccounts - """ - - -class Cpus1(BaseModel): - task_binding: int | None = None - """ - CpuBind - """ - total: int | None = None - """ - TotalCPUs - """ - - -class Groups(BaseModel): - allowed: str | None = None - """ - AllowGroups - """ - - -class Oversubscribe(BaseModel): - flags: OversubscribeFlags | None = None - """ - Flags applicable to the OverSubscribe setting - """ - jobs: int | None = None - """ - Maximum number of jobs allowed to oversubscribe resources - """ - - -class Minimums(BaseModel): - nodes: int | None = None - """ - MinNodes - """ - - -class Nodes2(BaseModel): - allowed_allocation: str | None = None - """ - AllocNodes - """ - configured: str | None = None - """ - Nodes - """ - total: int | None = None - """ - TotalNodes - """ - - -class Priority(BaseModel): - job_factor: int | None = None - """ - PriorityJobFactor - """ - tier: int | None = None - """ - PriorityTier - """ - - -class Qos(BaseModel): - allowed: str | None = None - """ - AllowQOS - """ - assigned: str | None = None - """ - QOS - """ - deny: str | None = None - """ - DenyQOS - """ - - -class Tres4(BaseModel): - billing_weights: str | None = None - """ - TRESBillingWeights - """ - configured: str | None = None - """ - TRES - """ - - -class PartitionState(Enum): - INACTIVE = "INACTIVE" - UNKNOWN = "UNKNOWN" - UP = "UP" - DOWN = "DOWN" - DRAIN = "DRAIN" - - -class PartitionStates(RootModel[list[PartitionState]]): - root: list[PartitionState] - - -class PriorityByPartition(RootModel[list[PartPrio]]): - root: list[PartPrio] - - -class ProcessExitCodeStatu(Enum): - INVALID = "INVALID" - PENDING = "PENDING" - SUCCESS = "SUCCESS" - ERROR = "ERROR" - SIGNALED = "SIGNALED" - CORE_DUMPED = "CORE_DUMPED" - - -class ProcessExitCodeStatus(RootModel[list[ProcessExitCodeStatu]]): - root: list[ProcessExitCodeStatu] - - -class QosFlag(Enum): - NOT_SET = "NOT_SET" - ADD = "ADD" - REMOVE = "REMOVE" - PARTITION_MINIMUM_NODE = "PARTITION_MINIMUM_NODE" - PARTITION_MAXIMUM_NODE = "PARTITION_MAXIMUM_NODE" - PARTITION_TIME_LIMIT = "PARTITION_TIME_LIMIT" - ENFORCE_USAGE_THRESHOLD = "ENFORCE_USAGE_THRESHOLD" - NO_RESERVE = "NO_RESERVE" - REQUIRED_RESERVATION = "REQUIRED_RESERVATION" - DENY_LIMIT = "DENY_LIMIT" - OVERRIDE_PARTITION_QOS = "OVERRIDE_PARTITION_QOS" - NO_DECAY = "NO_DECAY" - USAGE_FACTOR_SAFE = "USAGE_FACTOR_SAFE" - RELATIVE = "RELATIVE" - - -class QosFlags(RootModel[list[QosFlag]]): - root: list[QosFlag] - - -class QosPreemptList(RootModel[list[str]]): - root: list[str] - - -class QosPreemptMode(Enum): - DISABLED = "DISABLED" - SUSPEND = "SUSPEND" - REQUEUE = "REQUEUE" - CANCEL = "CANCEL" - GANG = "GANG" - - -class QosPreemptModes(RootModel[list[QosPreemptMode]]): - root: list[QosPreemptMode] - - -class QosStringIdList(RootModel[list[str]]): - """ - List of QOS names - """ - - root: list[str] - """ - List of QOS names - """ - - -class ReservationCoreSpec(BaseModel): - core: str | None = None - """ - IDs of reserved cores - """ - node: str | None = None - """ - Name of reserved node - """ - - -class ReservationFlag(Enum): - MAINT = "MAINT" - NO_MAINT = "NO_MAINT" - DAILY = "DAILY" - NO_DAILY = "NO_DAILY" - WEEKLY = "WEEKLY" - NO_WEEKLY = "NO_WEEKLY" - IGNORE_JOBS = "IGNORE_JOBS" - NO_IGNORE_JOBS = "NO_IGNORE_JOBS" - ANY_NODES = "ANY_NODES" - STATIC = "STATIC" - NO_STATIC = "NO_STATIC" - PART_NODES = "PART_NODES" - NO_PART_NODES = "NO_PART_NODES" - OVERLAP = "OVERLAP" - SPEC_NODES = "SPEC_NODES" - TIME_FLOAT = "TIME_FLOAT" - REPLACE = "REPLACE" - ALL_NODES = "ALL_NODES" - PURGE_COMP = "PURGE_COMP" - WEEKDAY = "WEEKDAY" - NO_WEEKDAY = "NO_WEEKDAY" - WEEKEND = "WEEKEND" - NO_WEEKEND = "NO_WEEKEND" - FLEX = "FLEX" - NO_FLEX = "NO_FLEX" - DURATION_PLUS = "DURATION_PLUS" - DURATION_MINUS = "DURATION_MINUS" - NO_HOLD_JOBS_AFTER_END = "NO_HOLD_JOBS_AFTER_END" - NO_PURGE_COMP = "NO_PURGE_COMP" - MAGNETIC = "MAGNETIC" - SKIP = "SKIP" - HOURLY = "HOURLY" - NO_HOURLY = "NO_HOURLY" - USER_DELETE = "USER_DELETE" - NO_USER_DELETE = "NO_USER_DELETE" - REOCCURRING = "REOCCURRING" - - -class ReservationFlags(RootModel[list[ReservationFlag]]): - root: list[ReservationFlag] - - -class ReservationInfoCoreSpec(RootModel[list[ReservationCoreSpec]]): - root: list[ReservationCoreSpec] - - -class Duration(BaseModel): - last: int | None = None - """ - Total time spent doing daily daily rollup (seconds) - """ - max: int | None = None - """ - Longest daily rollup time (seconds) - """ - time: int | None = None - """ - Total time spent doing daily rollups (seconds) - """ - - -class Daily(BaseModel): - count: int | None = None - """ - Number of daily rollups since last_run - """ - duration: Duration | None = None - last_run: int | None = None - """ - Last time daily rollup ran (UNIX timestamp) - """ - - -class Duration1(BaseModel): - last: int | None = None - """ - Total time spent doing last daily rollup (seconds) - """ - max: int | None = None - """ - Longest hourly rollup time (seconds) - """ - time: int | None = None - """ - Total time spent doing hourly rollups (seconds) - """ - - -class Hourly(BaseModel): - count: int | None = None - """ - Number of hourly rollups since last_run - """ - duration: Duration1 | None = None - last_run: int | None = None - """ - Last time hourly rollup ran (UNIX timestamp) - """ - - -class Duration2(BaseModel): - last: int | None = None - """ - Total time spent doing monthly daily rollup (seconds) - """ - max: int | None = None - """ - Longest monthly rollup time (seconds) - """ - time: int | None = None - """ - Total time spent doing monthly rollups (seconds) - """ - - -class Monthly(BaseModel): - count: int | None = None - """ - Number of monthly rollups since last_run - """ - duration: Duration2 | None = None - last_run: int | None = None - """ - Last time monthly rollup ran (UNIX timestamp) - """ - - -class RollupStats(BaseModel): - daily: Daily | None = None - hourly: Hourly | None = None - monthly: Monthly | None = None - - -class ScheduleExitFields(BaseModel): - default_queue_depth: int | None = None - """ - Reached number of jobs allowed to be tested - """ - end_job_queue: int | None = None - """ - Reached end of queue - """ - licenses: int | None = None - """ - Blocked on licenses - """ - max_job_start: int | None = None - """ - Reached number of jobs allowed to start - """ - max_rpc_cnt: int | None = None - """ - Reached RPC limit - """ - max_sched_time: int | None = None - """ - Reached maximum allowed scheduler time - """ - - -class SharesFloat128Tres(BaseModel): - name: str | None = None - """ - TRES name - """ - value: float | None = None - """ - TRES value - """ - - -class SharesFloat128TresList(RootModel[list[SharesFloat128Tres]]): - root: list[SharesFloat128Tres] - - -class SlurmdbJobFlag(Enum): - NONE = "NONE" - CLEAR_SCHEDULING = "CLEAR_SCHEDULING" - NOT_SET = "NOT_SET" - STARTED_ON_SUBMIT = "STARTED_ON_SUBMIT" - STARTED_ON_SCHEDULE = "STARTED_ON_SCHEDULE" - STARTED_ON_BACKFILL = "STARTED_ON_BACKFILL" - START_RECEIVED = "START_RECEIVED" - - -class SlurmdbJobFlags(RootModel[list[SlurmdbJobFlag]]): - root: list[SlurmdbJobFlag] - - -class SlurmdbdPing(BaseModel): - hostname: str - """ - Target for ping - """ - latency: int - """ - Number of microseconds it took to successfully ping or timeout - """ - primary: bool - """ - Is responding slurmdbd the primary controller - """ - responding: bool - """ - If ping RPC responded with pong from slurmdbd - """ - - -class SlurmdbdPingArray(RootModel[list[SlurmdbdPing]]): - root: list[SlurmdbdPing] - - -class StatsMsgRpcDump(BaseModel): - count: HostlistString - """ - Number of RPCs received - """ - message_type: str - """ - Message type as string - """ - type_id: int - """ - Message type as integer - """ - - -class StatsMsgRpcQueue(BaseModel): - count: int - """ - Number of pending RPCs queued - """ - message_type: str - """ - Message type as string - """ - type_id: int - """ - Message type as integer - """ - - -class StatsMsgRpcsDump(RootModel[list[StatsMsgRpcDump]]): - """ - Pending RPCs by hostlist - """ - - root: list[StatsMsgRpcDump] - """ - Pending RPCs by hostlist - """ - - -class StatsMsgRpcsQueue(RootModel[list[StatsMsgRpcQueue]]): - """ - Pending RPCs - """ - - root: list[StatsMsgRpcQueue] - """ - Pending RPCs - """ - - -class Time2(BaseModel): - average: int | None = None - """ - Average RPC processing time in microseconds - """ - total: int | None = None - """ - Total RPC processing time in microseconds - """ - - -class StatsRpc(BaseModel): - count: int | None = None - """ - Number of RPCs processed - """ - rpc: str | None = None - """ - RPC type - """ - time: Time2 | None = None - - -class StatsRpcList(RootModel[list[StatsRpc]]): - root: list[StatsRpc] - - -class StatsUser(BaseModel): - count: int | None = None - """ - Number of RPCs processed - """ - time: Time2 | None = None - user: str | None = None - """ - User ID - """ - - -class StatsUserList(RootModel[list[StatsUser]]): - root: list[StatsUser] - - -class Nodes3(BaseModel): - count: int | None = None - """ - Number of nodes in the job step - """ - list: Hostlist | None = None - """ - List of nodes used by the step - """ - range: str | None = None - """ - Node(s) allocated to the job step - """ - - -class CPU1(BaseModel): - actual_frequency: int | None = None - """ - Average weighted CPU frequency of all tasks in kHz - """ - - -class Step1(BaseModel): - id: str | None = None - """ - Step ID - """ - name: str | None = None - """ - Step name - """ - - -class Task(BaseModel): - distribution: str | None = None - """ - The layout of the step was when it was running - """ - - -class Tasks(BaseModel): - count: int | None = None - """ - Total number of tasks - """ - - -class System1(BaseModel): - microseconds: int | None = None - """ - System CPU time used by the step in microseconds - """ - seconds: int | None = None - """ - System CPU time used by the step in seconds - """ - - -class Total1(BaseModel): - microseconds: int | None = None - """ - Total CPU time used by the step in microseconds - """ - seconds: int | None = None - """ - Total CPU time used by the step in seconds - """ - - -class User1(BaseModel): - microseconds: int | None = None - """ - User CPU time used by the step in microseconds - """ - seconds: int | None = None - """ - User CPU time used by the step in seconds - """ - - -class StringArray(RootModel[list[str]]): - root: list[str] - - -class StringList(RootModel[list[str]]): - root: list[str] - - -class Tres(BaseModel): - count: int | None = None - """ - TRES count (0 if listed generically) - """ - id: int | None = None - """ - ID used in the database - """ - name: str | None = None - """ - TRES name (if applicable) - """ - type: str - """ - TRES type (CPU, MEM, etc) - """ - - -class TresList(RootModel[list[Tres]]): - root: list[Tres] - - -class Uint16NoValStruct(BaseModel): - infinite: bool | None = None - """ - True if number has been set to infinite; "set" and "number" will be ignored - """ - number: int | None = None - """ - If "set" is True the number will be set with value; otherwise ignore number contents - """ - set: bool | None = None - """ - True if number has been set; False if number is unset - """ - - -class Uint32NoValStruct(BaseModel): - infinite: bool | None = None - """ - True if number has been set to infinite; "set" and "number" will be ignored - """ - number: int | None = None - """ - If "set" is True the number will be set with value; otherwise ignore number contents - """ - set: bool | None = None - """ - True if number has been set; False if number is unset - """ - - -class Uint64NoValStruct(BaseModel): - infinite: bool | None = None - """ - True if number has been set to infinite; "set" and "number" will be ignored - """ - number: int | None = None - """ - If "set" is True the number will be set with value; otherwise ignore number contents - """ - set: bool | None = None - """ - True if number has been set; False if number is unset - """ - - -class Default1(BaseModel): - account: str | None = None - """ - Default account - """ - wckey: str | None = None - """ - Default WCKey - """ - - -class UserFlag(Enum): - NONE = "NONE" - DELETED = "DELETED" - - -class UserFlags(RootModel[list[UserFlag]]): - root: list[UserFlag] - - -class UserShort(BaseModel): - adminlevel: AdminLvl | None = None - """ - AdminLevel granted to the user - """ - defaultaccount: str | None = None - """ - Default account - """ - defaultwckey: str | None = None - """ - Default WCKey - """ - - -class WarnFlag(Enum): - BATCH_JOB = "BATCH_JOB" - ARRAY_TASK = "ARRAY_TASK" - FULL_STEPS_ONLY = "FULL_STEPS_ONLY" - FULL_JOB = "FULL_JOB" - FEDERATION_REQUEUE = "FEDERATION_REQUEUE" - HURRY = "HURRY" - OUT_OF_MEMORY = "OUT_OF_MEMORY" - NO_SIBLING_JOBS = "NO_SIBLING_JOBS" - RESERVATION_JOB = "RESERVATION_JOB" - VERBOSE = "VERBOSE" - CRON_JOBS = "CRON_JOBS" - WARNING_SENT = "WARNING_SENT" - - -class WarnFlags(RootModel[list[WarnFlag]]): - root: list[WarnFlag] - - -class WckeyFlag(Enum): - DELETED = "DELETED" - - -class WckeyFlags(RootModel[list[WckeyFlag]]): - root: list[WckeyFlag] - - -class WckeyTagFlag(Enum): - ASSIGNED_DEFAULT = "ASSIGNED_DEFAULT" - - -class WckeyTagFlags(RootModel[list[WckeyTagFlag]]): - root: list[WckeyTagFlag] - - -class WckeyTagStruct(BaseModel): - flags: WckeyTagFlags - """ - Active flags - """ - wckey: str - """ - WCKey name - """ - - -class X11Flag(Enum): - FORWARD_ALL_NODES = "FORWARD_ALL_NODES" - BATCH_NODE = "BATCH_NODE" - FIRST_NODE = "FIRST_NODE" - LAST_NODE = "LAST_NODE" - - -class X11Flags(RootModel[list[X11Flag]]): - root: list[X11Flag] - - -class Account(BaseModel): - associations: AssocShortList | None = None - """ - Associations involving this account (only populated if requested) - """ - coordinators: CoordList | None = None - """ - List of users that are a coordinator of this account (only populated if requested) - """ - description: str - """ - Arbitrary string describing the account - """ - flags: AccountFlags | None = None - """ - Flags associated with this account - """ - name: str - """ - Account name - """ - organization: str - """ - Organization to which the account belongs - """ - - -class AccountList(RootModel[list[Account]]): - root: list[Account] - - -class Accounting(BaseModel): - TRES: Tres | None = None - """ - Trackable resources - """ - allocated: Allocated | None = None - id: int | None = None - """ - Association ID or Workload characterization key ID - """ - id_alt: int | None = None - """ - Alternate ID (not currently used) - """ - start: int | None = None - """ - When the record was started (UNIX timestamp) - """ - - -class AccountingList(RootModel[list[Accounting]]): - root: list[Accounting] - - -class AcctGatherEnergy(BaseModel): - average_watts: int | None = None - """ - Average power consumption, in watts - """ - base_consumed_energy: int | None = None - """ - The energy consumed between when the node was powered on and the last time it was registered by slurmd, in joules - """ - consumed_energy: int | None = None - """ - The energy consumed between the last time the node was registered by the slurmd daemon and the last node energy accounting sample, in joules - """ - current_watts: Uint32NoValStruct | None = None - """ - The instantaneous power consumption at the time of the last node energy accounting sample, in watts - """ - last_collected: int | None = None - """ - Time when energy data was last retrieved (UNIX timestamp) - """ - previous_consumed_energy: int | None = None - """ - Previous value of consumed_energy - """ - - -class Per(BaseModel): - accruing: Uint32NoValStruct | None = None - """ - GrpJobsAccrue - """ - count: Uint32NoValStruct | None = None - """ - GrpJobs - """ - submitted: Uint32NoValStruct | None = None - """ - GrpSubmitJobs - """ - wall_clock: Uint32NoValStruct | None = None - """ - MaxWallDurationPerJob - """ - - -class Jobs(BaseModel): - accruing: Uint32NoValStruct | None = None - """ - MaxJobsAccrue - """ - active: Uint32NoValStruct | None = None - """ - MaxJobs - """ - per: Per | None = None - total: Uint32NoValStruct | None = None - """ - MaxSubmitJobs - """ - - -class Account1(BaseModel): - wall_clock: Uint32NoValStruct | None = None - """ - GrpWall - """ - - -class Per1(BaseModel): - account: Account1 | None = None - - -class Group(BaseModel): - active: TresList | None = None - """ - GrpTRESRunMins - """ - minutes: TresList | None = None - """ - GrpTRESMins - """ - - -class Per2(BaseModel): - job: TresList | None = None - """ - MaxTRESMinsPerJob - """ - - -class Minutes(BaseModel): - per: Per2 | None = None - total: TresList | None = None - """ - MaxTRESMinsPerJob - """ - - -class Per3(BaseModel): - job: TresList | None = None - """ - MaxTRESPerJob - """ - node: TresList | None = None - """ - MaxTRESPerNode - """ - - -class Tres1(BaseModel): - group: Group | None = None - minutes: Minutes | None = None - per: Per3 | None = None - total: TresList | None = None - """ - GrpTRES - """ - - -class Max(BaseModel): - jobs: Jobs | None = None - per: Per1 | None = None - tres: Tres1 | None = None - - -class Min(BaseModel): - priority_threshold: Uint32NoValStruct | None = None - """ - MinPrioThreshold - """ - - -class Assoc(BaseModel): - account: str | None = None - """ - Account name - """ - accounting: AccountingList | None = None - """ - Accounting records containing related resource usage - """ - cluster: str | None = None - """ - Cluster name - """ - comment: str | None = None - """ - Arbitrary comment - """ - default: Default | None = None - flags: AssocFlags | None = None - """ - Flags on the association - """ - id: int | None = None - """ - Unique ID - """ - is_default: bool | None = None - """ - Is default association for user - """ - lineage: str | None = None - """ - Complete path up the hierarchy to the root association - """ - max: Max | None = None - min: Min | None = None - parent_account: str | None = None - """ - Name of parent account - """ - partition: str | None = None - """ - Partition name - """ - priority: Uint32NoValStruct | None = None - """ - Association priority factor - """ - qos: QosStringIdList | None = None - """ - List of available QOS names - """ - shares_raw: int | None = None - """ - Allocated shares used for fairshare calculation - """ - user: str - """ - User name - """ - - -class AssocList(RootModel[list[Assoc]]): - root: list[Assoc] - - -class AssocRecSet(BaseModel): - comment: str | None = None - """ - Arbitrary comment - """ - defaultqos: str | None = None - """ - Default QOS - """ - fairshare: int | None = None - """ - Allocated shares used for fairshare calculation - """ - grpjobs: Uint32NoValStruct | None = None - """ - Maximum number of running jobs in this association and its children - """ - grpjobsaccrue: Uint32NoValStruct | None = None - """ - Maximum number of pending jobs able to accrue age priority in this association and its children - """ - grpsubmitjobs: Uint32NoValStruct | None = None - """ - Maximum number of jobs which can be in a pending or running state at any time in this association and its children - """ - grptres: TresList | None = None - """ - Maximum number of TRES able to be allocated by running jobs in this association and its children - """ - grptresmins: TresList | None = None - """ - Total number of TRES minutes that can possibly be used by past, present and future jobs in this association and its children - """ - grptresrunmins: TresList | None = None - """ - Maximum number of TRES minutes able to be allocated by running jobs in this association and its children - """ - grpwall: Uint32NoValStruct | None = None - """ - Maximum wall clock time in minutes able to be allocated by running jobs in this association and its children - """ - maxjobs: Uint32NoValStruct | None = None - """ - Maximum number of running jobs per user in this association - """ - maxjobsaccrue: Uint32NoValStruct | None = None - """ - Maximum number of pending jobs able to accrue age priority at any given time in this association - """ - maxsubmitjobs: Uint32NoValStruct | None = None - """ - Maximum number of jobs which can be in a pending or running state at any time in this association - """ - maxtresminsperjob: TresList | None = None - """ - Maximum number of TRES minutes each job is able to use in this association - """ - maxtresperjob: TresList | None = None - """ - Maximum number of TRES each job is able to use in this association - """ - maxtrespernode: TresList | None = None - """ - Maximum number of TRES each node is able to use - """ - maxtresrunmins: TresList | None = None - """ - Maximum number of TRES minutes able to be allocated by running jobs in this association - """ - maxwalldurationperjob: Uint32NoValStruct | None = None - """ - Maximum wall clock time each job is able to use in this association - """ - minpriothresh: Uint32NoValStruct | None = None - """ - Minimum priority required to reserve resources when scheduling - """ - parent: str | None = None - """ - Name of parent account - """ - priority: Uint32NoValStruct | None = None - """ - Association priority factor - """ - qoslevel: QosStringIdList | None = None - """ - List of available QOS names - """ - - -class Fairshare(BaseModel): - factor: Float64NoValStruct | None = None - """ - Fairshare factor - """ - level: Float64NoValStruct | None = None - """ - Fairshare factor at this level; stored on an assoc as a long double, but that is not needed for display in sshare - """ - - -class ClusterRec(BaseModel): - associations: Associations | None = None - controller: Controller | None = None - flags: ClusterRecFlags | None = None - """ - Flags - """ - name: str | None = None - """ - ClusterName - """ - nodes: str | None = None - """ - Node names - """ - rpc_version: int | None = None - """ - RPC version used in the cluster - """ - select_plugin: str | None = None - tres: TresList | None = None - """ - Trackable resources - """ - - -class ClusterRecList(RootModel[list[ClusterRec]]): - root: list[ClusterRec] - - -class CronEntry(BaseModel): - command: str | None = None - """ - Command to run - """ - day_of_month: str | None = None - """ - Ranged string specifying eligible day of month values (e.g. 0-10,29) - """ - day_of_week: str | None = None - """ - Ranged string specifying eligible day of week values (e.g.0-3,7) - """ - flags: CronEntryFlags | None = None - """ - Flags - """ - hour: str | None = None - """ - Ranged string specifying eligible hour values (e.g. 0-5,23) - """ - line: Line | None = None - minute: str | None = None - """ - Ranged string specifying eligible minute values (e.g. 0-10,50) - """ - month: str | None = None - """ - Ranged string specifying eligible month values (e.g. 0-5,12) - """ - specification: str | None = None - """ - Complete time specification (* means valid for all allowed values) - minute hour day_of_month month day_of_week - """ - - -class Array(BaseModel): - job_id: int | None = None - """ - Job ID of job array, or 0 if N/A - """ - limits: Limits | None = None - task: str | None = None - """ - String expression of task IDs in this record - """ - task_id: Uint32NoValStruct | None = None - """ - Task ID of this task in job array - """ - - -class Het(BaseModel): - job_id: int | None = None - """ - Heterogeneous job ID, if applicable - """ - job_offset: Uint32NoValStruct | None = None - """ - Unique sequence number applied to this component of the heterogeneous job - """ - - -class Required(BaseModel): - CPUs: int | None = None - """ - Minimum number of CPUs required - """ - memory_per_cpu: Uint64NoValStruct | None = None - """ - Minimum memory in megabytes per allocated CPU - """ - memory_per_node: Uint64NoValStruct | None = None - """ - Minimum memory in megabytes per allocated node - """ - - -class State(BaseModel): - current: JobState | None = None - """ - Current state - """ - reason: str | None = None - """ - Reason for previous Pending or Failed state - """ - - -class Time1(BaseModel): - elapsed: int | None = None - """ - Elapsed time in seconds - """ - eligible: int | None = None - """ - Time when the job became eligible to run (UNIX timestamp) - """ - end: int | None = None - """ - End time (UNIX timestamp) - """ - limit: Uint32NoValStruct | None = None - """ - Maximum run time in minutes - """ - planned: Uint64NoValStruct | None = None - """ - Time required to start job after becoming eligible to run in seconds - """ - start: int | None = None - """ - Time execution began (UNIX timestamp) - """ - submission: int | None = None - """ - Time when the job was submitted (UNIX timestamp) - """ - suspended: int | None = None - """ - Total time in suspended state in seconds - """ - system: System | None = None - total: Total | None = None - user: User | None = None - - -class Tres3(BaseModel): - allocated: TresList | None = None - """ - Trackable resources allocated to the job - """ - requested: TresList | None = None - """ - Trackable resources requested by job - """ - - -class JobArrayResponseArray(RootModel[list[JobArrayResponseMsgEntry]]): - root: list[JobArrayResponseMsgEntry] - - -class Rlimits(BaseModel): - as_: Uint64NoValStruct | None = Field(None, alias="as") - """ - Address space limit - """ - core: Uint64NoValStruct | None = None - """ - Largest core file that can be created, in bytes - """ - cpu: Uint64NoValStruct | None = None - """ - Per-process CPU limit, in seconds - """ - data: Uint64NoValStruct | None = None - """ - Maximum size of data segment, in bytes - """ - fsize: Uint64NoValStruct | None = None - """ - Largest file that can be created, in bytes - """ - memlock: Uint64NoValStruct | None = None - """ - Locked-in-memory address space - """ - nofile: Uint64NoValStruct | None = None - """ - Number of open files - """ - nproc: Uint64NoValStruct | None = None - """ - Number of processes - """ - rss: Uint64NoValStruct | None = None - """ - Largest resident set size, in bytes. This affects swapping; processes that are exceeding their resident set size will be more likely to have physical memory taken from them - """ - stack: Uint64NoValStruct | None = None - """ - Maximum size of stack segment, in bytes - """ - - -class JobDescMsg(BaseModel): - account: str | None = None - """ - Account associated with the job - """ - account_gather_frequency: str | None = None - """ - Job accounting and profiling sampling intervals in seconds - """ - admin_comment: str | None = None - """ - Arbitrary comment made by administrator - """ - allocation_node_list: str | None = None - """ - Local node making the resource allocation - """ - allocation_node_port: int | None = None - """ - Port to send allocation confirmation to - """ - argv: StringArray | None = None - """ - Arguments to the script. Note: The slurmstepd always overrides argv[0] with the path to the created script file. If this option is used, argv[0] should be a throwaway value. - """ - array: str | None = None - """ - Job array index value specification - """ - batch_features: str | None = None - """ - Features required for batch script's node - """ - begin_time: Uint64NoValStruct | None = None - """ - Defer the allocation of the job until the specified time (UNIX timestamp) - """ - burst_buffer: str | None = None - """ - Burst buffer specifications - """ - cluster_constraint: str | None = None - """ - Required features that a federated cluster must have to have a sibling job submitted to it - """ - clusters: str | None = None - """ - Clusters that a federated job can run on - """ - comment: str | None = None - """ - Arbitrary comment made by user - """ - constraints: str | None = None - """ - Comma separated list of features that are required - """ - container: str | None = None - """ - Absolute path to OCI container bundle - """ - container_id: str | None = None - """ - OCI container ID - """ - contiguous: bool | None = None - """ - True if job requires contiguous nodes - """ - core_specification: int | None = None - """ - Specialized core count - """ - cpu_binding: str | None = None - """ - Method for binding tasks to allocated CPUs - """ - cpu_binding_flags: CpuBindingFlags | None = None - """ - Flags for CPU binding - """ - cpu_frequency: str | None = None - """ - Requested CPU frequency range [-p2][:p3] - """ - cpus_per_task: int | None = None - """ - Number of CPUs required by each task - """ - cpus_per_tres: str | None = None - """ - Semicolon delimited list of TRES=# values values indicating how many CPUs should be allocated for each specified TRES (currently only used for gres/gpu) - """ - crontab: CronEntry | None = None - """ - Specification for scrontab job - """ - current_working_directory: str | None = None - """ - Working directory to use for the job - """ - deadline: int | None = None - """ - Latest time that the job may start (UNIX timestamp) - """ - delay_boot: int | None = None - """ - Number of seconds after job eligible start that nodes will be rebooted to satisfy feature specification - """ - dependency: str | None = None - """ - Other jobs that must meet certain criteria before this job can start - """ - distribution: str | None = None - """ - Layout - """ - distribution_plane_size: Uint16NoValStruct | None = None - """ - Plane size specification when distribution specifies plane - """ - end_time: int | None = None - """ - Expected end time (UNIX timestamp) - """ - environment: StringArray | None = None - """ - Environment variables to be set for the job - """ - excluded_nodes: CsvString | None = None - """ - Comma separated list of nodes that may not be used - """ - extra: str | None = None - """ - Arbitrary string used for node filtering if extra constraints are enabled - """ - flags: JobFlags | None = None - """ - Job flags - """ - group_id: str | None = None - """ - Group ID of the user that owns the job - """ - hetjob_group: int | None = None - """ - Unique sequence number applied to this component of the heterogeneous job - """ - hold: bool | None = None - """ - Hold (true) or release (false) job - """ - immediate: bool | None = None - """ - If true, exit if resources are not available within the time period specified - """ - job_id: int | None = None - """ - Job ID - """ - kill_on_node_fail: bool | None = None - """ - If true, kill job on node failure - """ - kill_warning_delay: Uint16NoValStruct | None = None - """ - Number of seconds before end time to send the warning signal - """ - kill_warning_flags: WarnFlags | None = None - """ - Flags related to job signals - """ - kill_warning_signal: str | None = None - """ - Signal to send when approaching end time (e.g. "10" or "USR1") - """ - licenses: str | None = None - """ - License(s) required by the job - """ - mail_type: JobMailFlags | None = None - """ - Mail event type(s) - """ - mail_user: str | None = None - """ - User to receive email notifications - """ - maximum_cpus: int | None = None - """ - Maximum number of CPUs required - """ - maximum_nodes: int | None = None - """ - Maximum node count - """ - mcs_label: str | None = None - """ - Multi-Category Security label on the job - """ - memory_binding: str | None = None - """ - Binding map for map/mask_cpu - """ - memory_binding_type: MemoryBindingType | None = None - """ - Method for binding tasks to memory - """ - memory_per_cpu: Uint64NoValStruct | None = None - """ - Minimum memory in megabytes per allocated CPU - """ - memory_per_node: Uint64NoValStruct | None = None - """ - Minimum memory in megabytes per allocated node - """ - memory_per_tres: str | None = None - """ - Semicolon delimited list of TRES=# values indicating how much memory in megabytes should be allocated for each specified TRES (currently only used for gres/gpu) - """ - minimum_boards_per_node: int | None = None - """ - Boards per node required - """ - minimum_cpus: int | None = None - """ - Minimum number of CPUs required - """ - minimum_cpus_per_node: int | None = None - """ - Minimum number of CPUs per node - """ - minimum_nodes: int | None = None - """ - Minimum node count - """ - minimum_sockets_per_board: int | None = None - """ - Sockets per board required - """ - name: str | None = None - """ - Job name - """ - network: str | None = None - """ - Network specs for job step - """ - nice: int | None = None - """ - Requested job priority change - """ - nodes: str | None = None - """ - Node count range specification (e.g. 1-15:4) - """ - ntasks_per_tres: int | None = None - """ - Number of tasks that can access each GPU - """ - oom_kill_step: int | None = None - """ - Kill whole step in case of OOM in one of the tasks - """ - open_mode: OpenMode | None = None - """ - Open mode used for stdout and stderr files - """ - overcommit: bool | None = None - """ - Overcommit resources - """ - partition: str | None = None - """ - Partition assigned to the job - """ - power_flags: list | None = None - prefer: str | None = None - """ - Comma separated list of features that are preferred but not required - """ - priority: Uint32NoValStruct | None = None - """ - Request specific job priority - """ - profile: AcctGatherProfile | None = None - """ - Profile used by the acct_gather_profile plugin - """ - qos: str | None = None - """ - Quality of Service assigned to the job - """ - reboot: bool | None = None - """ - Node reboot requested before start - """ - requeue: bool | None = None - """ - Determines whether the job may be requeued - """ - required_nodes: CsvString | None = None - """ - Comma separated list of required nodes - """ - required_switches: Uint32NoValStruct | None = None - """ - Maximum number of switches - """ - reservation: str | None = None - """ - Name of reservation to use - """ - reserve_ports: int | None = None - """ - Port to send various notification msg to - """ - rlimits: Rlimits | None = None - script: str | None = None - """ - Job batch script; only the first component in a HetJob is populated or honored - """ - segment_size: Uint16NoValStruct | None = None - """ - Segment size for topology/block - """ - selinux_context: str | None = None - """ - SELinux context - """ - shared: JobShared | None = None - """ - How the job can share resources with other jobs, if at all - """ - site_factor: int | None = None - """ - Site-specific priority factor - """ - sockets_per_node: int | None = None - """ - Sockets per node required - """ - spank_environment: StringArray | None = None - """ - Environment variables for job prolog/epilog scripts as set by SPANK plugins - """ - standard_error: str | None = None - """ - Path to stderr file - """ - standard_input: str | None = None - """ - Path to stdin file - """ - standard_output: str | None = None - """ - Path to stdout file - """ - tasks: int | None = None - """ - Number of tasks - """ - tasks_per_board: int | None = None - """ - Number of tasks to invoke on each board - """ - tasks_per_core: int | None = None - """ - Number of tasks to invoke on each core - """ - tasks_per_node: int | None = None - """ - Number of tasks to invoke on each node - """ - tasks_per_socket: int | None = None - """ - Number of tasks to invoke on each socket - """ - temporary_disk_per_node: int | None = None - """ - Minimum tmp disk space required per node - """ - thread_specification: int | None = None - """ - Specialized thread count - """ - threads_per_core: int | None = None - """ - Threads per core required - """ - time_limit: Uint32NoValStruct | None = None - """ - Maximum run time in minutes - """ - time_minimum: Uint32NoValStruct | None = None - """ - Minimum run time in minutes - """ - tres_bind: str | None = None - """ - Task to TRES binding directives - """ - tres_freq: str | None = None - """ - TRES frequency directives - """ - tres_per_job: str | None = None - """ - Comma separated list of TRES=# values to be allocated for every job - """ - tres_per_node: str | None = None - """ - Comma separated list of TRES=# values to be allocated for every node - """ - tres_per_socket: str | None = None - """ - Comma separated list of TRES=# values to be allocated for every socket - """ - tres_per_task: str | None = None - """ - Comma separated list of TRES=# values to be allocated for every task - """ - user_id: str | None = None - """ - User ID that owns the job - """ - wait_all_nodes: bool | None = None - """ - If true, wait to start until after all nodes have booted - """ - wait_for_switch: int | None = None - """ - Maximum time to wait for switches in seconds - """ - wckey: str | None = None - """ - Workload characterization key - """ - x11: X11Flags | None = None - """ - X11 forwarding options - """ - x11_magic_cookie: str | None = None - """ - Magic cookie for X11 forwarding - """ - x11_target_host: str | None = None - """ - Hostname or UNIX socket if x11_target_port=0 - """ - x11_target_port: int | None = None - """ - TCP port - """ - - -class JobDescMsgList(RootModel[list[JobDescMsg]]): - root: list[JobDescMsg] - - -class JobResCore(BaseModel): - index: int - """ - Core index - """ - status: JobResCoreStatus - """ - Core status - """ - - -class JobResCoreArray(RootModel[list[JobResCore]]): - root: list[JobResCore] - - -class JobResSocket(BaseModel): - cores: JobResCoreArray - """ - Core in socket - """ - index: int - """ - Core index - """ - - -class JobResSocketArray(RootModel[list[JobResSocket]]): - root: list[JobResSocket] - - -class KillJobsRespJob(BaseModel): - error: Error | None = None - federation: Federation | None = None - job_id: Uint32NoValStruct - """ - Job ID that signaling failed - """ - step_id: str - """ - Job or Step ID that signaling failed - """ - - -class KillJobsRespMsg(RootModel[list[KillJobsRespJob]]): - """ - List of jobs signal responses - """ - - root: list[KillJobsRespJob] - """ - List of jobs signal responses - """ - - -class Node(BaseModel): - active_features: CsvString | None = None - """ - Currently active features - """ - address: str | None = None - """ - NodeAddr, used to establish a communication path - """ - alloc_cpus: int | None = None - """ - Total number of CPUs currently allocated for jobs - """ - alloc_idle_cpus: int | None = None - """ - Total number of idle CPUs - """ - alloc_memory: int | None = None - """ - Total memory in MB currently allocated for jobs - """ - architecture: str | None = None - """ - Computer architecture - """ - boards: int | None = None - """ - Number of Baseboards in nodes with a baseboard controller - """ - boot_time: Uint64NoValStruct | None = None - """ - Time when the node booted (UNIX timestamp) - """ - burstbuffer_network_address: str | None = None - """ - Alternate network path to be used for sbcast network traffic - """ - cluster_name: str | None = None - """ - Cluster name (only set in federated environments) - """ - comment: str | None = None - """ - Arbitrary comment - """ - cores: int | None = None - """ - Number of cores in a single physical processor socket - """ - cpu_binding: int | None = None - """ - Default method for binding tasks to allocated CPUs - """ - cpu_load: int | None = None - """ - CPU load as reported by the OS - """ - cpus: int | None = None - """ - Total CPUs, including cores and threads - """ - effective_cpus: int | None = None - """ - Number of effective CPUs (excluding specialized CPUs) - """ - energy: AcctGatherEnergy | None = None - """ - Energy usage data - """ - external_sensors: dict[str, Any] | None = None - extra: str | None = None - """ - Arbitrary string used for node filtering if extra constraints are enabled - """ - features: CsvString | None = None - """ - Available features - """ - free_mem: Uint64NoValStruct | None = None - """ - Total memory in MB currently free as reported by the OS - """ - gpu_spec: str | None = None - """ - CPU cores reserved for jobs that also use a GPU - """ - gres: str | None = None - """ - Generic resources - """ - gres_drained: str | None = None - """ - Drained generic resources - """ - gres_used: str | None = None - """ - Generic resources currently in use - """ - hostname: str | None = None - """ - NodeHostname - """ - instance_id: str | None = None - """ - Cloud instance ID - """ - instance_type: str | None = None - """ - Cloud instance type - """ - last_busy: Uint64NoValStruct | None = None - """ - Time when the node was last busy (UNIX timestamp) - """ - mcs_label: str | None = None - """ - Multi-Category Security label - """ - name: str | None = None - """ - NodeName - """ - next_state_after_reboot: NodeStates | None = None - """ - The state the node will be assigned after rebooting - """ - operating_system: str | None = None - """ - Operating system reported by the node - """ - owner: str | None = None - """ - User allowed to run jobs on this node (unset if no restriction) - """ - partitions: CsvString | None = None - """ - Partitions containing this node - """ - port: int | None = None - """ - TCP port number of the slurmd - """ - power: dict[str, Any] | None = None - real_memory: int | None = None - """ - Total memory in MB on the node - """ - reason: str | None = None - """ - Describes why the node is in a "DOWN", "DRAINED", "DRAINING", "FAILING" or "FAIL" state - """ - reason_changed_at: Uint64NoValStruct | None = None - """ - When the reason changed (UNIX timestamp) - """ - reason_set_by_user: str | None = None - """ - User who set the reason - """ - res_cores_per_gpu: int | None = None - """ - Number of CPU cores per GPU restricted to GPU jobs - """ - reservation: str | None = None - """ - Name of reservation containing this node - """ - resume_after: Uint64NoValStruct | None = None - """ - Number of seconds after the node's state is updated to "DOWN" or "DRAIN" before scheduling a node state resume - """ - slurmd_start_time: Uint64NoValStruct | None = None - """ - Time when the slurmd started (UNIX timestamp) - """ - sockets: int | None = None - """ - Number of physical processor sockets/chips on the node - """ - specialized_cores: int | None = None - """ - Number of cores reserved for system use - """ - specialized_cpus: str | None = None - """ - Abstract CPU IDs on this node reserved for exclusive use by slurmd and slurmstepd - """ - specialized_memory: int | None = None - """ - Combined memory limit, in MB, for Slurm compute node daemons - """ - state: NodeStates | None = None - """ - Node state(s) applicable to this node - """ - temporary_disk: int | None = None - """ - Total size in MB of temporary disk storage in TmpFS - """ - threads: int | None = None - """ - Number of logical threads in a single physical core - """ - tres: str | None = None - """ - Configured trackable resources - """ - tres_used: str | None = None - """ - Trackable resources currently allocated for jobs - """ - tres_weighted: float | None = None - """ - Weighted number of billable trackable resources allocated - """ - version: str | None = None - """ - Slurmd version - """ - weight: int | None = None - """ - Weight of the node for scheduling purposes - """ - - -class Nodes1(RootModel[list[Node]]): - root: list[Node] - - -class OpenapiMeta(BaseModel): - client: Client | None = None - command: StringArray | None = None - """ - CLI command (if applicable) - """ - plugin: Plugin | None = None - slurm: Slurm | None = None - - -class OpenapiResp(BaseModel): - errors: OpenapiErrors | None = None - """ - Query errors - """ - meta: OpenapiMeta | None = None - """ - Slurm meta values - """ - warnings: OpenapiWarnings | None = None - """ - Query warnings - """ - - -class OpenapiSlurmdbdPingResp(BaseModel): - errors: OpenapiErrors | None = None - """ - Query errors - """ - meta: OpenapiMeta | None = None - """ - Slurm meta values - """ - pings: SlurmdbdPingArray - """ - pings - """ - warnings: OpenapiWarnings | None = None - """ - Query warnings - """ - - -class OpenapiSlurmdbdQosRemovedResp(BaseModel): - errors: OpenapiErrors | None = None - """ - Query errors - """ - meta: OpenapiMeta | None = None - """ - Slurm meta values - """ - removed_qos: StringList - """ - removed QOS - """ - warnings: OpenapiWarnings | None = None - """ - Query warnings - """ - - -class OpenapiTresResp(BaseModel): - TRES: TresList - """ - TRES - """ - errors: OpenapiErrors | None = None - """ - Query errors - """ - meta: OpenapiMeta | None = None - """ - Slurm meta values - """ - warnings: OpenapiWarnings | None = None - """ - Query warnings - """ - - -class OpenapiUsersAddCondRespStr(BaseModel): - added_users: str - """ - added_users - """ - errors: OpenapiErrors | None = None - """ - Query errors - """ - meta: OpenapiMeta | None = None - """ - Slurm meta values - """ - warnings: OpenapiWarnings | None = None - """ - Query warnings - """ - - -class OpenapiWckeyRemovedResp(BaseModel): - deleted_wckeys: StringList - """ - deleted wckeys - """ - errors: OpenapiErrors | None = None - """ - Query errors - """ - meta: OpenapiMeta | None = None - """ - Slurm meta values - """ - warnings: OpenapiWarnings | None = None - """ - Query warnings - """ - - -class Defaults(BaseModel): - job: str | None = None - """ - JobDefaults - """ - memory_per_cpu: int | None = None - """ - DefMemPerCPU or DefMemPerNode - """ - partition_memory_per_cpu: Uint64NoValStruct | None = None - """ - DefMemPerCPU - """ - partition_memory_per_node: Uint64NoValStruct | None = None - """ - DefMemPerNode - """ - time: Uint32NoValStruct | None = None - """ - DefaultTime in minutes - """ - - -class Maximums(BaseModel): - cpus_per_node: Uint32NoValStruct | None = None - """ - MaxCPUsPerNode - """ - cpus_per_socket: Uint32NoValStruct | None = None - """ - MaxCPUsPerSocket - """ - memory_per_cpu: int | None = None - """ - MaxMemPerCPU or MaxMemPerNode - """ - nodes: Uint32NoValStruct | None = None - """ - MaxNodes - """ - over_time_limit: Uint16NoValStruct | None = None - """ - OverTimeLimit - """ - oversubscribe: Oversubscribe | None = None - partition_memory_per_cpu: Uint64NoValStruct | None = None - """ - MaxMemPerCPU - """ - partition_memory_per_node: Uint64NoValStruct | None = None - """ - MaxMemPerNode - """ - shares: int | None = None - """ - OverSubscribe - """ - time: Uint32NoValStruct | None = None - """ - MaxTime - """ - - -class Partition(BaseModel): - state: PartitionStates | None = None - """ - Current state(s) - """ - - -class Timeouts(BaseModel): - resume: Uint16NoValStruct | None = None - """ - ResumeTimeout (GLOBAL if both set and infinite are false) - """ - suspend: Uint16NoValStruct | None = None - """ - SuspendTimeout (GLOBAL if both set and infinite are false) - """ - - -class PartitionInfo(BaseModel): - accounts: Accounts | None = None - alternate: str | None = None - """ - Alternate - """ - cluster: str | None = None - """ - Cluster name - """ - cpus: Cpus1 | None = None - defaults: Defaults | None = None - grace_time: int | None = None - """ - GraceTime - """ - groups: Groups | None = None - maximums: Maximums | None = None - minimums: Minimums | None = None - name: str | None = None - """ - PartitionName - """ - node_sets: str | None = None - """ - NodeSets - """ - nodes: Nodes2 | None = None - partition: Partition | None = None - priority: Priority | None = None - qos: Qos | None = None - select_type: CrType | None = None - """ - Scheduler consumable resource selection type - """ - suspend_time: Uint32NoValStruct | None = None - """ - SuspendTime (GLOBAL if both set and infinite are false) - """ - timeouts: Timeouts | None = None - tres: Tres4 | None = None - - -class PartitionInfoMsg(RootModel[list[PartitionInfo]]): - root: list[PartitionInfo] - - -class Signal(BaseModel): - id: Uint16NoValStruct | None = None - """ - Signal sent to process (numeric) - """ - name: str | None = None - """ - Signal sent to process (name) - """ - - -class ProcessExitCodeVerbose(BaseModel): - return_code: Uint32NoValStruct | None = None - """ - Process return code (numeric) - """ - signal: Signal | None = None - status: ProcessExitCodeStatus | None = None - """ - Status given by return code - """ - - -class Per4(BaseModel): - account: Uint32NoValStruct | None = None - """ - MaxJobsAccruePerAccount - """ - user: Uint32NoValStruct | None = None - """ - MaxJobsAccruePerUser - """ - - -class Accruing(BaseModel): - per: Per4 | None = None - - -class ActiveJobs(BaseModel): - accruing: Uint32NoValStruct | None = None - """ - GrpJobsAccrue - """ - count: Uint32NoValStruct | None = None - """ - GrpJobs - """ - - -class Per5(BaseModel): - account: Uint32NoValStruct | None = None - """ - MaxJobsPerAccount - """ - user: Uint32NoValStruct | None = None - """ - MaxJobsPerUser - """ - - -class ActiveJobs1(BaseModel): - per: Per5 | None = None - - -class Per6(BaseModel): - account: Uint32NoValStruct | None = None - """ - MaxSubmitJobsPerAccount - """ - user: Uint32NoValStruct | None = None - """ - MaxSubmitJobsPerUser - """ - - -class Jobs1(BaseModel): - active_jobs: ActiveJobs1 | None = None - count: Uint32NoValStruct | None = None - """ - GrpSubmitJobs - """ - per: Per6 | None = None - - -class Per7(BaseModel): - account: TresList | None = None - """ - MaxTRESRunMinsPerAccount - """ - job: TresList | None = None - """ - MaxTRESMinsPerJob - """ - qos: TresList | None = None - """ - GrpTRESRunMins - """ - user: TresList | None = None - """ - MaxTRESRunMinsPerUser - """ - - -class Minutes1(BaseModel): - per: Per7 | None = None - total: TresList | None = None - """ - GrpTRESMins - """ - - -class Per8(BaseModel): - account: TresList | None = None - """ - MaxTRESPerAccount - """ - job: TresList | None = None - """ - MaxTRESPerJob - """ - node: TresList | None = None - """ - MaxTRESPerNode - """ - user: TresList | None = None - """ - MaxTRESPerUser - """ - - -class Tres5(BaseModel): - minutes: Minutes1 | None = None - per: Per8 | None = None - total: TresList | None = None - """ - GrpTRES - """ - - -class Per9(BaseModel): - job: Uint32NoValStruct | None = None - """ - MaxWallDurationPerJob - """ - qos: Uint32NoValStruct | None = None - """ - GrpWall - """ - - -class WallClock(BaseModel): - per: Per9 | None = None - - -class Max2(BaseModel): - accruing: Accruing | None = None - active_jobs: ActiveJobs | None = None - jobs: Jobs1 | None = None - tres: Tres5 | None = None - wall_clock: WallClock | None = None - - -class Per10(BaseModel): - job: TresList | None = None - """ - MinTRES - """ - - -class Tres6(BaseModel): - per: Per10 | None = None - - -class Min1(BaseModel): - priority_threshold: Uint32NoValStruct | None = None - """ - MinPrioThreshold - """ - tres: Tres6 | None = None - - -class Limits1(BaseModel): - factor: Float64NoValStruct | None = None - """ - LimitFactor - """ - grace_time: int | None = None - """ - GraceTime - """ - max: Max2 | None = None - min: Min1 | None = None - - -class Preempt(BaseModel): - exempt_time: Uint32NoValStruct | None = None - """ - PreemptExemptTime - """ - list: QosPreemptList | None = None - """ - Other QOS's this QOS can preempt - """ - mode: QosPreemptModes | None = None - """ - PreemptMode - """ - - -class Qos1(BaseModel): - description: str | None = None - """ - Arbitrary description - """ - flags: QosFlags | None = None - """ - Flags, to avoid modifying current values specify NOT_SET - """ - id: int | None = None - """ - Unique ID - """ - limits: Limits1 | None = None - name: str | None = None - """ - Name - """ - preempt: Preempt | None = None - priority: Uint32NoValStruct | None = None - """ - Priority - """ - usage_factor: Float64NoValStruct | None = None - """ - UsageFactor - """ - usage_threshold: Float64NoValStruct | None = None - """ - UsageThreshold - """ - - -class QosList(RootModel[list[Qos1]]): - root: list[Qos1] - - -class PurgeCompleted(BaseModel): - time: Uint32NoValStruct | None = None - """ - If PURGE_COMP flag is set, the number of seconds this reservation will sit idle until it is revoked - """ - - -class ReservationInfo(BaseModel): - accounts: str | None = None - """ - Comma separated list of permitted accounts - """ - burst_buffer: str | None = None - """ - BurstBuffer - """ - core_count: int | None = None - """ - CoreCnt - """ - core_specializations: ReservationInfoCoreSpec | None = None - """ - Reserved cores specification - """ - end_time: Uint64NoValStruct | None = None - """ - EndTime (UNIX timestamp) - """ - features: str | None = None - """ - Features - """ - flags: ReservationFlags | None = None - """ - Flags associated with this reservation - """ - groups: str | None = None - """ - Groups - """ - licenses: str | None = None - """ - Licenses - """ - max_start_delay: int | None = None - """ - MaxStartDelay in seconds - """ - name: str | None = None - """ - ReservationName - """ - node_count: int | None = None - """ - NodeCnt - """ - node_list: str | None = None - """ - Nodes - """ - partition: str | None = None - """ - PartitionName - """ - purge_completed: PurgeCompleted | None = None - start_time: Uint64NoValStruct | None = None - """ - StartTime (UNIX timestamp) - """ - tres: str | None = None - """ - Comma separated list of required TRES - """ - users: str | None = None - """ - Comma separated list of permitted users - """ - watts: Uint32NoValStruct | None = None - """ - 32 bit integer number with flags - """ - - -class ReservationInfoMsg(RootModel[list[ReservationInfo]]): - root: list[ReservationInfo] - - -class SharesUint64Tres(BaseModel): - name: str | None = None - """ - TRES name - """ - value: Uint64NoValStruct | None = None - """ - TRES value - """ - - -class SharesUint64TresList(RootModel[list[SharesUint64Tres]]): - root: list[SharesUint64Tres] - - -class StatsMsgRpcType(BaseModel): - average_time: Uint64NoValStruct - """ - Average time spent processing RPC in seconds - """ - count: int - """ - Number of RPCs received - """ - cycle_last: int - """ - Number of RPCs processed within the last RPC queue cycle - """ - cycle_max: int - """ - Maximum number of RPCs processed within a RPC queue cycle since start - """ - dropped: int - """ - Number of RPCs dropped - """ - message_type: str - """ - Message type as string - """ - queued: int - """ - Number of RPCs queued - """ - total_time: int - """ - Total time spent processing RPC in seconds - """ - type_id: int - """ - Message type as integer - """ - - -class StatsMsgRpcUser(BaseModel): - average_time: Uint64NoValStruct - """ - Average time spent processing RPC in seconds - """ - count: int - """ - Number of RPCs received - """ - total_time: int - """ - Total time spent processing RPC in seconds - """ - user: str - """ - User name - """ - user_id: int - """ - User ID (numeric) - """ - - -class StatsMsgRpcsByType(RootModel[list[StatsMsgRpcType]]): - """ - RPCs by type - """ - - root: list[StatsMsgRpcType] - """ - RPCs by type - """ - - -class StatsMsgRpcsByUser(RootModel[list[StatsMsgRpcUser]]): - """ - RPCs by user - """ - - root: list[StatsMsgRpcUser] - """ - RPCs by user - """ - - -class StatsRec(BaseModel): - RPCs: StatsRpcList | None = None - """ - List of RPCs sent to the slurmdbd - """ - rollups: RollupStats | None = None - """ - Rollup statistics - """ - time_start: int | None = None - """ - When data collection started (UNIX timestamp) - """ - users: StatsUserList | None = None - """ - List of users that issued RPCs - """ - - -class RequestedFrequency(BaseModel): - max: Uint32NoValStruct | None = None - """ - Maximum requested CPU frequency in kHz - """ - min: Uint32NoValStruct | None = None - """ - Minimum requested CPU frequency in kHz - """ - - -class CPU(BaseModel): - governor: str | None = None - """ - Requested CPU frequency governor in kHz - """ - requested_frequency: RequestedFrequency | None = None - - -class Energy(BaseModel): - consumed: Uint64NoValStruct | None = None - """ - Total energy consumed by all tasks in a job in joules - """ - - -class Statistics(BaseModel): - CPU: CPU1 | None = None - energy: Energy | None = None - - -class Time4(BaseModel): - elapsed: int | None = None - """ - Elapsed time in seconds - """ - end: Uint64NoValStruct | None = None - """ - End time (UNIX timestamp) - """ - start: Uint64NoValStruct | None = None - """ - Time execution began (UNIX timestamp) - """ - suspended: int | None = None - """ - Total time in suspended state in seconds - """ - system: System1 | None = None - total: Total1 | None = None - user: User1 | None = None - - -class StepTresReqMax(RootModel[list[Tres]]): - root: list[Tres] - - -class StepTresReqMin(RootModel[list[Tres]]): - root: list[Tres] - - -class StepTresUsageMax(RootModel[list[Tres]]): - root: list[Tres] - - -class StepTresUsageMin(RootModel[list[Tres]]): - root: list[Tres] - - -class UsersAddCond(BaseModel): - accounts: StringList | None = None - """ - CSV accounts list - """ - association: AssocRecSet | None = None - """ - Association limits and options - """ - clusters: StringList | None = None - """ - CSV clusters list - """ - partitions: StringList | None = None - """ - CSV partitions list - """ - users: StringList - """ - CSV users list - """ - wckeys: StringList | None = None - """ - CSV WCKeys list - """ - - -class Wckey(BaseModel): - accounting: AccountingList | None = None - """ - Accounting records containing related resource usage - """ - cluster: str - """ - Cluster name - """ - flags: WckeyFlags | None = None - """ - Flags associated with this WCKey - """ - id: int | None = None - """ - Unique ID for this user-cluster-wckey combination - """ - name: str - """ - WCKey name - """ - user: str - """ - User name - """ - - -class WckeyList(RootModel[list[Wckey]]): - root: list[Wckey] - - -class AccountsAddCond(BaseModel): - accounts: StringList - """ - CSV accounts list - """ - association: AssocRecSet | None = None - """ - Association limits and options - """ - clusters: StringList | None = None - """ - CSV clusters list - """ - - -class Tres2(BaseModel): - group_minutes: SharesUint64TresList | None = None - """ - TRES-minute limit - """ - run_seconds: SharesUint64TresList | None = None - """ - Currently running tres-secs = grp_used_tres_run_secs - """ - usage: SharesFloat128TresList | None = None - """ - Measure of each TRES usage - """ - - -class AssocSharesObjWrap(BaseModel): - cluster: str | None = None - """ - Cluster name - """ - effective_usage: Float64NoValStruct | None = None - """ - Effective, normalized usage - """ - fairshare: Fairshare | None = None - id: int | None = None - """ - Association ID - """ - name: str | None = None - """ - Share name - """ - parent: str | None = None - """ - Parent name - """ - partition: str | None = None - """ - Partition name - """ - shares: Uint32NoValStruct | None = None - """ - Number of shares allocated - """ - shares_normalized: Float64NoValStruct | None = None - """ - Normalized shares - """ - tres: Tres2 | None = None - type: AssocSharesObjWrapType | None = None - """ - User or account association - """ - usage: int | None = None - """ - Measure of tresbillableunits usage - """ - usage_normalized: Float64NoValStruct | None = None - """ - Normalized usage - """ - - -class JobResNode(BaseModel): - cpus: Cpus | None = None - index: int - """ - Node index - """ - memory: Memory | None = None - name: str - """ - Node name - """ - sockets: JobResSocketArray - """ - Socket allocations in node - """ - - -class JobResNodes(RootModel[list[JobResNode]]): - """ - Job resources for a node - """ - - root: list[JobResNode] - """ - Job resources for a node - """ - - -class OpenapiAccountsAddCondResp(BaseModel): - account: AccountShort | None = None - """ - Account organization and description - """ - association_condition: AccountsAddCond | None = None - """ - CSV list of accounts, association limits and options, CSV list of clusters - """ - errors: OpenapiErrors | None = None - """ - Query errors - """ - meta: OpenapiMeta | None = None - """ - Slurm meta values - """ - warnings: OpenapiWarnings | None = None - """ - Query warnings - """ - - -class OpenapiAccountsAddCondRespStr(BaseModel): - added_accounts: str - """ - added_accounts - """ - errors: OpenapiErrors | None = None - """ - Query errors - """ - meta: OpenapiMeta | None = None - """ - Slurm meta values - """ - warnings: OpenapiWarnings | None = None - """ - Query warnings - """ - - -class OpenapiAccountsRemovedResp(BaseModel): - errors: OpenapiErrors | None = None - """ - Query errors - """ - meta: OpenapiMeta | None = None - """ - Slurm meta values - """ - removed_accounts: StringList - """ - removed_accounts - """ - warnings: OpenapiWarnings | None = None - """ - Query warnings - """ - - -class OpenapiAccountsResp(BaseModel): - accounts: AccountList - """ - accounts - """ - errors: OpenapiErrors | None = None - """ - Query errors - """ - meta: OpenapiMeta | None = None - """ - Slurm meta values - """ - warnings: OpenapiWarnings | None = None - """ - Query warnings - """ - - -class OpenapiAssocsRemovedResp(BaseModel): - errors: OpenapiErrors | None = None - """ - Query errors - """ - meta: OpenapiMeta | None = None - """ - Slurm meta values - """ - removed_associations: StringList - """ - removed_associations - """ - warnings: OpenapiWarnings | None = None - """ - Query warnings - """ - - -class OpenapiAssocsResp(BaseModel): - associations: AssocList - """ - associations - """ - errors: OpenapiErrors | None = None - """ - Query errors - """ - meta: OpenapiMeta | None = None - """ - Slurm meta values - """ - warnings: OpenapiWarnings | None = None - """ - Query warnings - """ - - -class OpenapiClustersRemovedResp(BaseModel): - deleted_clusters: StringList - """ - deleted_clusters - """ - errors: OpenapiErrors | None = None - """ - Query errors - """ - meta: OpenapiMeta | None = None - """ - Slurm meta values - """ - warnings: OpenapiWarnings | None = None - """ - Query warnings - """ - - -class OpenapiClustersResp(BaseModel): - clusters: ClusterRecList - """ - clusters - """ - errors: OpenapiErrors | None = None - """ - Query errors - """ - meta: OpenapiMeta | None = None - """ - Slurm meta values - """ - warnings: OpenapiWarnings | None = None - """ - Query warnings - """ - - -class OpenapiInstancesResp(BaseModel): - errors: OpenapiErrors | None = None - """ - Query errors - """ - instances: InstanceList - """ - instances - """ - meta: OpenapiMeta | None = None - """ - Slurm meta values - """ - warnings: OpenapiWarnings | None = None - """ - Query warnings - """ - - -class OpenapiSlurmdbdQosResp(BaseModel): - errors: OpenapiErrors | None = None - """ - Query errors - """ - meta: OpenapiMeta | None = None - """ - Slurm meta values - """ - qos: QosList - """ - List of QOS - """ - warnings: OpenapiWarnings | None = None - """ - Query warnings - """ - - -class OpenapiSlurmdbdStatsResp(BaseModel): - errors: OpenapiErrors | None = None - """ - Query errors - """ - meta: OpenapiMeta | None = None - """ - Slurm meta values - """ - statistics: StatsRec - """ - statistics - """ - warnings: OpenapiWarnings | None = None - """ - Query warnings - """ - - -class OpenapiUsersAddCondResp(BaseModel): - association_condition: UsersAddCond - """ - Filters to select associations for users - """ - errors: OpenapiErrors | None = None - """ - Query errors - """ - meta: OpenapiMeta | None = None - """ - Slurm meta values - """ - user: UserShort - """ - Admin level of user, DefaultAccount, DefaultWCKey - """ - warnings: OpenapiWarnings | None = None - """ - Query warnings - """ - - -class OpenapiWckeyResp(BaseModel): - errors: OpenapiErrors | None = None - """ - Query errors - """ - meta: OpenapiMeta | None = None - """ - Slurm meta values - """ - warnings: OpenapiWarnings | None = None - """ - Query warnings - """ - wckeys: WckeyList - """ - wckeys - """ - - -class StatsMsg(BaseModel): - agent_count: int | None = None - """ - Number of agent threads - """ - agent_queue_size: int | None = None - """ - Number of enqueued outgoing RPC requests in an internal retry list - """ - agent_thread_count: int | None = None - """ - Total number of active threads created by all agent threads - """ - bf_active: bool | None = None - """ - Backfill scheduler currently running - """ - bf_backfilled_het_jobs: int | None = None - """ - Number of heterogeneous job components started through backfilling since last Slurm start - """ - bf_backfilled_jobs: int | None = None - """ - Number of jobs started through backfilling since last slurm start - """ - bf_cycle_counter: int | None = None - """ - Number of backfill scheduling cycles since last reset - """ - bf_cycle_last: int | None = None - """ - Execution time in microseconds of last backfill scheduling cycle - """ - bf_cycle_max: int | None = None - """ - Execution time in microseconds of longest backfill scheduling cycle - """ - bf_cycle_mean: int | None = None - """ - Mean time in microseconds of backfilling scheduling cycles since last reset - """ - bf_cycle_sum: int | None = None - """ - Total time in microseconds of backfilling scheduling cycles since last reset - """ - bf_depth_mean: int | None = None - """ - Mean number of eligible to run jobs processed during all backfilling scheduling cycles since last reset - """ - bf_depth_mean_try: int | None = None - """ - The subset of Depth Mean that the backfill scheduler attempted to schedule - """ - bf_depth_sum: int | None = None - """ - Total number of jobs processed during all backfilling scheduling cycles since last reset - """ - bf_depth_try_sum: int | None = None - """ - Subset of bf_depth_sum that the backfill scheduler attempted to schedule - """ - bf_exit: BfExitFields | None = None - """ - Reasons for which the backfill scheduling cycle exited since last reset - """ - bf_last_backfilled_jobs: int | None = None - """ - Number of jobs started through backfilling since last reset - """ - bf_last_depth: int | None = None - """ - Number of processed jobs during last backfilling scheduling cycle - """ - bf_last_depth_try: int | None = None - """ - Number of processed jobs during last backfilling scheduling cycle that had a chance to start using available resources - """ - bf_queue_len: int | None = None - """ - Number of jobs pending to be processed by backfilling algorithm - """ - bf_queue_len_mean: int | None = None - """ - Mean number of jobs pending to be processed by backfilling algorithm - """ - bf_queue_len_sum: int | None = None - """ - Total number of jobs pending to be processed by backfilling algorithm since last reset - """ - bf_table_size: int | None = None - """ - Number of different time slots tested by the backfill scheduler in its last iteration - """ - bf_table_size_mean: int | None = None - """ - Mean number of different time slots tested by the backfill scheduler - """ - bf_table_size_sum: int | None = None - """ - Total number of different time slots tested by the backfill scheduler - """ - bf_when_last_cycle: Uint64NoValStruct | None = None - """ - When the last backfill scheduling cycle happened (UNIX timestamp) - """ - dbd_agent_queue_size: int | None = None - """ - Number of messages for SlurmDBD that are queued - """ - gettimeofday_latency: int | None = None - """ - Latency of 1000 calls to the gettimeofday() syscall in microseconds, as measured at controller startup - """ - job_states_ts: Uint64NoValStruct | None = None - """ - When the job state counts were gathered (UNIX timestamp) - """ - jobs_canceled: int | None = None - """ - Number of jobs canceled since the last reset - """ - jobs_completed: int | None = None - """ - Number of jobs completed since last reset - """ - jobs_failed: int | None = None - """ - Number of jobs failed due to slurmd or other internal issues since last reset - """ - jobs_pending: int | None = None - """ - Number of jobs pending at the time of listed in job_state_ts - """ - jobs_running: int | None = None - """ - Number of jobs running at the time of listed in job_state_ts - """ - jobs_started: int | None = None - """ - Number of jobs started since last reset - """ - jobs_submitted: int | None = None - """ - Number of jobs submitted since last reset - """ - parts_packed: int | None = None - """ - Zero if only RPC statistic included - """ - pending_rpcs: StatsMsgRpcsQueue | None = None - """ - Pending RPC statistics - """ - pending_rpcs_by_hostlist: StatsMsgRpcsDump | None = None - """ - Pending RPCs hostlists - """ - req_time: Uint64NoValStruct | None = None - """ - When the request was made (UNIX timestamp) - """ - req_time_start: Uint64NoValStruct | None = None - """ - When the data in the report started (UNIX timestamp) - """ - rpcs_by_message_type: StatsMsgRpcsByType | None = None - """ - Most frequently issued remote procedure calls (RPCs) - """ - rpcs_by_user: StatsMsgRpcsByUser | None = None - """ - RPCs issued by user ID - """ - schedule_cycle_depth: int | None = None - """ - Total number of jobs processed in scheduling cycles - """ - schedule_cycle_last: int | None = None - """ - Time in microseconds for last scheduling cycle - """ - schedule_cycle_max: int | None = None - """ - Max time of any scheduling cycle in microseconds since last reset - """ - schedule_cycle_mean: int | None = None - """ - Mean time in microseconds for all scheduling cycles since last reset - """ - schedule_cycle_mean_depth: int | None = None - """ - Mean of the number of jobs processed in a scheduling cycle - """ - schedule_cycle_per_minute: int | None = None - """ - Number of scheduling executions per minute - """ - schedule_cycle_sum: int | None = None - """ - Total run time in microseconds for all scheduling cycles since last reset - """ - schedule_cycle_total: int | None = None - """ - Number of scheduling cycles since last reset - """ - schedule_exit: ScheduleExitFields | None = None - """ - Reasons for which the scheduling cycle exited since last reset - """ - schedule_queue_length: int | None = None - """ - Number of jobs pending in queue - """ - server_thread_count: int | None = None - """ - Number of current active slurmctld threads - """ - - -class Consumed(BaseModel): - average: TresList | None = None - """ - Average TRES usage consumed among all tasks - """ - max: StepTresUsageMax | None = None - """ - Maximum TRES usage consumed among all tasks - """ - min: StepTresUsageMin | None = None - """ - Minimum TRES usage consumed among all tasks - """ - total: TresList | None = None - """ - Total TRES usage consumed among all tasks - """ - - -class Requested(BaseModel): - average: TresList | None = None - """ - Average TRES usage requested among all tasks - """ - max: StepTresReqMax | None = None - """ - Maximum TRES usage requested among all tasks - """ - min: StepTresReqMin | None = None - """ - Minimum TRES usage requested among all tasks - """ - total: TresList | None = None - """ - Total TRES usage requested among all tasks - """ - - -class Tres7(BaseModel): - allocated: TresList | None = None - """ - Trackable resources allocated to the step - """ - consumed: Consumed | None = None - requested: Requested | None = None - - -class Step(BaseModel): - CPU_: CPU | None = None - exit_code: ProcessExitCodeVerbose | None = None - """ - Exit code - """ - kill_request_user: str | None = None - """ - User ID that requested termination of the step - """ - nodes: Nodes3 | None = None - pid: str | None = None - """ - Deprecated; Process ID - """ - state: JobState | None = None - """ - Current state - """ - statistics: Statistics | None = None - step: Step1 | None = None - task: Task | None = None - tasks: Tasks | None = None - time: Time4 | None = None - tres: Tres7 | None = None - - -class StepList(RootModel[list[Step]]): - root: list[Step] - - -class User2(BaseModel): - administrator_level: AdminLvl | None = None - """ - AdminLevel granted to the user - """ - associations: AssocShortList | None = None - """ - Associations created for this user - """ - coordinators: CoordList | None = None - """ - Accounts this user is a coordinator for - """ - default: Default1 | None = None - flags: UserFlags | None = None - """ - Flags associated with this user - """ - name: str - """ - User name - """ - old_name: str | None = None - """ - Previous user name - """ - wckeys: WckeyList | None = None - """ - List of available WCKeys - """ - - -class UserList(RootModel[list[User2]]): - root: list[User2] - - -class AssocSharesObjList(RootModel[list[AssocSharesObjWrap]]): - root: list[AssocSharesObjWrap] - - -class Job(BaseModel): - account: str | None = None - """ - Account the job ran under - """ - allocation_nodes: int | None = None - """ - List of nodes allocated to the job - """ - array: Array | None = None - association: AssocShort | None = None - """ - Unique identifier for the association - """ - block: str | None = None - """ - The name of the block to be used (used with Blue Gene systems) - """ - cluster: str | None = None - """ - Cluster name - """ - comment: Comment | None = None - constraints: str | None = None - """ - Feature(s) the job requested as a constraint - """ - container: str | None = None - """ - Absolute path to OCI container bundle - """ - derived_exit_code: ProcessExitCodeVerbose | None = None - """ - Highest exit code of all job steps - """ - exit_code: ProcessExitCodeVerbose | None = None - """ - Exit code - """ - extra: str | None = None - """ - Arbitrary string used for node filtering if extra constraints are enabled - """ - failed_node: str | None = None - """ - Name of node that caused job failure - """ - flags: SlurmdbJobFlags | None = None - """ - Flags associated with this job - """ - group: str | None = None - """ - Group ID of the user that owns the job - """ - het: Het | None = None - hold: bool | None = None - """ - Hold (true) or release (false) job - """ - job_id: int | None = None - """ - Job ID - """ - kill_request_user: str | None = None - """ - User ID that requested termination of the job - """ - licenses: str | None = None - """ - License(s) required by the job - """ - mcs: Mcs | None = None - name: str | None = None - """ - Job name - """ - nodes: str | None = None - """ - Node(s) allocated to the job - """ - partition: str | None = None - """ - Partition assigned to the job - """ - priority: Uint32NoValStruct | None = None - """ - Request specific job priority - """ - qos: str | None = None - """ - Quality of Service assigned to the job - """ - qosreq: str | None = None - """ - Requested QOS - """ - required: Required | None = None - reservation: Reservation | None = None - restart_cnt: int | None = None - """ - How many times this job has been requeued/restarted - """ - script: str | None = None - """ - Job batch script; only the first component in a HetJob is populated or honored - """ - state: State | None = None - stderr: str | None = None - """ - Path to stderr file - """ - stderr_expanded: str | None = None - """ - Job stderr with expanded fields - """ - stdin: str | None = None - """ - Path to stdin file - """ - stdin_expanded: str | None = None - """ - Job stdin with expanded fields - """ - stdout: str | None = None - """ - Path to stdout file - """ - stdout_expanded: str | None = None - """ - Job stdout with expanded fields - """ - steps: StepList | None = None - """ - Individual steps in the job - """ - submit_line: str | None = None - """ - Command used to submit the job - """ - time: Time1 | None = None - tres: Tres3 | None = None - used_gres: str | None = None - """ - Generic resources used by job - """ - user: str | None = None - """ - User that owns the job - """ - wckey: WckeyTagStruct | None = None - """ - Workload characterization key - """ - working_directory: str | None = None - """ - Path to current working directory - """ - - -class JobList(RootModel[list[Job]]): - root: list[Job] - - -class Nodes(BaseModel): - allocation: JobResNodes | None = None - """ - Allocated node resources - """ - count: int | None = None - """ - Number of allocated nodes - """ - list: str | None = None - """ - Node(s) allocated to the job - """ - select_type: NodeCrType | None = None - """ - Node scheduling selection method - """ - whole: bool | None = None - """ - Whether whole nodes were allocated - """ - - -class JobRes(BaseModel): - cpus: int - """ - Number of allocated CPUs - """ - nodes: Nodes | None = None - select_type: CrType - """ - Scheduler consumable resource selection type - """ - threads_per_core: Uint16NoValStruct - """ - Number of processor threads per CPU core - """ - - -class OpenapiSlurmdbdConfigResp(BaseModel): - accounts: AccountList | None = None - """ - Accounts - """ - associations: AssocList | None = None - """ - Associations - """ - clusters: ClusterRecList | None = None - """ - Clusters - """ - errors: OpenapiErrors | None = None - """ - Query errors - """ - instances: InstanceList | None = None - """ - Instances - """ - meta: OpenapiMeta | None = None - """ - Slurm meta values - """ - qos: QosList | None = None - """ - QOS - """ - tres: TresList | None = None - """ - TRES - """ - users: UserList | None = None - """ - Users - """ - warnings: OpenapiWarnings | None = None - """ - Query warnings - """ - wckeys: WckeyList | None = None - """ - WCKeys - """ - - -class OpenapiSlurmdbdJobsResp(BaseModel): - errors: OpenapiErrors | None = None - """ - Query errors - """ - jobs: JobList - """ - jobs - """ - meta: OpenapiMeta | None = None - """ - Slurm meta values - """ - warnings: OpenapiWarnings | None = None - """ - Query warnings - """ - +from slurm_rest import * -class OpenapiUsersResp(BaseModel): +class OpenapiSlurmdbdPingResp(BaseModel): errors: OpenapiErrors | None = None """ Query errors @@ -4716,538 +16,467 @@ class OpenapiUsersResp(BaseModel): """ Slurm meta values """ - users: UserList - """ - users - """ - warnings: OpenapiWarnings | None = None - """ - Query warnings - """ - - -class SharesRespMsg(BaseModel): - shares: AssocSharesObjList | None = None - """ - Association shares - """ - total_shares: int | None = None - """ - Total number of shares - """ - - -class JobInfo(BaseModel): - account: str | None = None - """ - Account associated with the job - """ - accrue_time: Uint64NoValStruct | None = None - """ - When the job started accruing age priority (UNIX timestamp) - """ - admin_comment: str | None = None - """ - Arbitrary comment made by administrator - """ - allocating_node: str | None = None - """ - Local node making the resource allocation - """ - array_job_id: Uint32NoValStruct | None = None - """ - Job ID of job array, or 0 if N/A - """ - array_max_tasks: Uint32NoValStruct | None = None - """ - Maximum number of simultaneously running array tasks, 0 if no limit - """ - array_task_id: Uint32NoValStruct | None = None - """ - Task ID of this task in job array - """ - array_task_string: str | None = None - """ - String expression of task IDs in this record - """ - association_id: int | None = None - """ - Unique identifier for the association - """ - batch_features: str | None = None - """ - Features required for batch script's node - """ - batch_flag: bool | None = None - """ - True if batch job - """ - batch_host: str | None = None - """ - Name of host running batch script - """ - billable_tres: Float64NoValStruct | None = None - """ - Billable TRES - """ - burst_buffer: str | None = None - """ - Burst buffer specifications - """ - burst_buffer_state: str | None = None - """ - Burst buffer state details - """ - cluster: str | None = None - """ - Cluster name - """ - cluster_features: str | None = None - """ - List of required cluster features - """ - command: str | None = None - """ - Executed command - """ - comment: str | None = None - """ - Arbitrary comment - """ - container: str | None = None - """ - Absolute path to OCI container bundle - """ - container_id: str | None = None - """ - OCI container ID - """ - contiguous: bool | None = None - """ - True if job requires contiguous nodes - """ - core_spec: int | None = None - """ - Specialized core count - """ - cores_per_socket: Uint16NoValStruct | None = None - """ - Cores per socket required - """ - cpu_frequency_governor: Uint32NoValStruct | None = None - """ - CPU frequency governor - """ - cpu_frequency_maximum: Uint32NoValStruct | None = None - """ - Maximum CPU frequency - """ - cpu_frequency_minimum: Uint32NoValStruct | None = None - """ - Minimum CPU frequency - """ - cpus: Uint32NoValStruct | None = None - """ - Minimum number of CPUs required - """ - cpus_per_task: Uint16NoValStruct | None = None + pings: SlurmdbdPingArray """ - Number of CPUs required by each task + pings """ - cpus_per_tres: str | None = None + warnings: OpenapiWarnings | None = None """ - Semicolon delimited list of TRES=# values indicating how many CPUs should be allocated for each specified TRES (currently only used for gres/gpu) + Query warnings """ - cron: str | None = None + + +class OpenapiSlurmdbdQosRemovedResp(BaseModel): + errors: OpenapiErrors | None = None """ - Time specification for scrontab job + Query errors """ - current_working_directory: str | None = None + meta: OpenapiMeta | None = None """ - Working directory to use for the job + Slurm meta values """ - deadline: Uint64NoValStruct | None = None + removed_qos: StringList """ - Latest time that the job may start (UNIX timestamp) + removed QOS """ - delay_boot: Uint32NoValStruct | None = None + warnings: OpenapiWarnings | None = None """ - Number of seconds after job eligible start that nodes will be rebooted to satisfy feature specification + Query warnings """ - dependency: str | None = None + + +class OpenapiTresResp(BaseModel): + TRES: TresList """ - Other jobs that must meet certain criteria before this job can start + TRES """ - derived_exit_code: ProcessExitCodeVerbose | None = None + errors: OpenapiErrors | None = None """ - Highest exit code of all job steps + Query errors """ - eligible_time: Uint64NoValStruct | None = None + meta: OpenapiMeta | None = None """ - Time when the job became eligible to run (UNIX timestamp) + Slurm meta values """ - end_time: Uint64NoValStruct | None = None + warnings: OpenapiWarnings | None = None """ - End time, real or expected (UNIX timestamp) + Query warnings """ - excluded_nodes: str | None = None + + +class OpenapiUsersAddCondRespStr(BaseModel): + added_users: str """ - Comma separated list of nodes that may not be used + added_users """ - exit_code: ProcessExitCodeVerbose | None = None + errors: OpenapiErrors | None = None """ - Exit code of the job + Query errors """ - extra: str | None = None + meta: OpenapiMeta | None = None """ - Arbitrary string used for node filtering if extra constraints are enabled + Slurm meta values """ - failed_node: str | None = None + warnings: OpenapiWarnings | None = None """ - Name of node that caused job failure + Query warnings """ - features: str | None = None + + +class OpenapiWckeyRemovedResp(BaseModel): + deleted_wckeys: StringList """ - Comma separated list of features that are required + deleted wckeys """ - federation_origin: str | None = None + errors: OpenapiErrors | None = None """ - Origin cluster's name (when using federation) + Query errors """ - federation_siblings_active: str | None = None + meta: OpenapiMeta | None = None """ - Active sibling job names + Slurm meta values """ - federation_siblings_viable: str | None = None + warnings: OpenapiWarnings | None = None """ - Viable sibling job names + Query warnings """ - flags: JobFlags | None = None + + +class OpenapiAccountsAddCondResp(BaseModel): + account: AccountShort | None = None """ - Job flags + Account organization and description """ - gres_detail: JobInfoGresDetail | None = None + association_condition: AccountsAddCond """ - List of GRES index and counts allocated per node + CSV list of accounts, association limits and options, CSV list of clusters """ - group_id: int | None = None + errors: OpenapiErrors | None = None """ - Group ID of the user that owns the job + Query errors """ - group_name: str | None = None + meta: OpenapiMeta | None = None """ - Group name of the user that owns the job + Slurm meta values """ - het_job_id: Uint32NoValStruct | None = None + warnings: OpenapiWarnings | None = None """ - Heterogeneous job ID, if applicable + Query warnings """ - het_job_id_set: str | None = None + + +class OpenapiAccountsAddCondRespStr(BaseModel): + added_accounts: str """ - Job ID range for all heterogeneous job components + added_accounts """ - het_job_offset: Uint32NoValStruct | None = None + errors: OpenapiErrors | None = None """ - Unique sequence number applied to this component of the heterogeneous job + Query errors """ - hold: bool | None = None + meta: OpenapiMeta | None = None """ - Hold (true) or release (false) job + Slurm meta values """ - job_id: int | None = None + warnings: OpenapiWarnings | None = None """ - Job ID + Query warnings """ - job_resources: JobRes | None = None + + +class OpenapiAccountsRemovedResp(BaseModel): + errors: OpenapiErrors | None = None """ - Resources used by the job + Query errors """ - job_size_str: CsvString | None = None + meta: OpenapiMeta | None = None """ - Number of nodes (in a range) required for this job + Slurm meta values """ - job_state: JobState | None = None + removed_accounts: StringList """ - Current state + removed_accounts """ - last_sched_evaluation: Uint64NoValStruct | None = None + warnings: OpenapiWarnings | None = None """ - Last time job was evaluated for scheduling (UNIX timestamp) + Query warnings """ - licenses: str | None = None + + +class OpenapiAccountsResp(BaseModel): + accounts: AccountList """ - License(s) required by the job + accounts """ - mail_type: JobMailFlags | None = None + errors: OpenapiErrors | None = None """ - Mail event type(s) + Query errors """ - mail_user: str | None = None + meta: OpenapiMeta | None = None """ - User to receive email notifications + Slurm meta values """ - max_cpus: Uint32NoValStruct | None = None + warnings: OpenapiWarnings | None = None """ - Maximum number of CPUs usable by the job + Query warnings """ - max_nodes: Uint32NoValStruct | None = None + + +class OpenapiAssocsRemovedResp(BaseModel): + errors: OpenapiErrors | None = None """ - Maximum number of nodes usable by the job + Query errors """ - maximum_switch_wait_time: int | None = None + meta: OpenapiMeta | None = None """ - Maximum time to wait for switches in seconds + Slurm meta values """ - mcs_label: str | None = None + removed_associations: StringList """ - Multi-Category Security label on the job + removed_associations """ - memory_per_cpu: Uint64NoValStruct | None = None + warnings: OpenapiWarnings | None = None """ - Minimum memory in megabytes per allocated CPU + Query warnings """ - memory_per_node: Uint64NoValStruct | None = None + + +class OpenapiAssocsResp(BaseModel): + associations: AssocList """ - Minimum memory in megabytes per allocated node + associations """ - memory_per_tres: str | None = None + errors: OpenapiErrors | None = None """ - Semicolon delimited list of TRES=# values indicating how much memory in megabytes should be allocated for each specified TRES (currently only used for gres/gpu) + Query errors """ - minimum_cpus_per_node: Uint16NoValStruct | None = None + meta: OpenapiMeta | None = None """ - Minimum number of CPUs per node + Slurm meta values """ - minimum_tmp_disk_per_node: Uint32NoValStruct | None = None + warnings: OpenapiWarnings | None = None """ - Minimum tmp disk space required per node + Query warnings """ - name: str | None = None + + +class OpenapiClustersRemovedResp(BaseModel): + deleted_clusters: StringList """ - Job name + deleted_clusters """ - network: str | None = None + errors: OpenapiErrors | None = None """ - Network specs for the job + Query errors """ - nice: int | None = None + meta: OpenapiMeta | None = None """ - Requested job priority change + Slurm meta values """ - node_count: Uint32NoValStruct | None = None + warnings: OpenapiWarnings | None = None """ - Minimum number of nodes required + Query warnings """ - nodes: str | None = None + + +class OpenapiClustersResp(BaseModel): + clusters: ClusterRecList """ - Node(s) allocated to the job + clusters """ - partition: str | None = None + errors: OpenapiErrors | None = None """ - Partition assigned to the job + Query errors """ - power: Power | None = None - pre_sus_time: Uint64NoValStruct | None = None + meta: OpenapiMeta | None = None """ - Total run time prior to last suspend in seconds + Slurm meta values """ - preempt_time: Uint64NoValStruct | None = None + warnings: OpenapiWarnings | None = None """ - Time job received preemption signal (UNIX timestamp) + Query warnings """ - preemptable_time: Uint64NoValStruct | None = None + + +class OpenapiInstancesResp(BaseModel): + errors: OpenapiErrors | None = None """ - Time job becomes eligible for preemption (UNIX timestamp) + Query errors """ - prefer: str | None = None + instances: InstanceList """ - Feature(s) the job requested but that are not required + instances """ - priority: Uint32NoValStruct | None = None + meta: OpenapiMeta | None = None """ - Request specific job priority + Slurm meta values """ - priority_by_partition: PriorityByPartition | None = None + warnings: OpenapiWarnings | None = None """ - Prospective job priority in each partition that may be used by this job + Query warnings """ - profile: AcctGatherProfile | None = None + + +class OpenapiJobModifyReq(BaseModel): + errors: OpenapiErrors | None = None """ - Profile used by the acct_gather_profile plugin + Query errors """ - qos: str | None = None + job_id_list: SelectedStepList | None = None """ - Quality of Service assigned to the job, if pending the QOS requested + CSV list of Job IDs to modify """ - reboot: bool | None = None + job_rec: JobModify | None = None """ - Node reboot requested before start + Job modify message """ - requeue: bool | None = None + meta: OpenapiMeta | None = None """ - Determines whether the job may be requeued + Slurm meta values """ - required_nodes: str | None = None + warnings: OpenapiWarnings | None = None """ - Comma separated list of required nodes + Query warnings """ - required_switches: int | None = None + + +class OpenapiJobModifyResp(BaseModel): + errors: OpenapiErrors | None = None """ - Maximum number of switches + Query errors """ - resize_time: Uint64NoValStruct | None = None + meta: OpenapiMeta | None = None """ - Time of last size change (UNIX timestamp) + Slurm meta values """ - restart_cnt: int | None = None + results: StringList """ - Number of job restarts + Job modify results """ - resv_name: str | None = None + warnings: OpenapiWarnings | None = None """ - Name of reservation to use + Query warnings """ - scheduled_nodes: str | None = None + + +class OpenapiSlurmdbdQosResp(BaseModel): + errors: OpenapiErrors | None = None """ - List of nodes scheduled to be used for the job + Query errors """ - selinux_context: str | None = None + meta: OpenapiMeta | None = None """ - SELinux context + Slurm meta values """ - shared: JobShared | None = None + qos: QosList """ - How the job can share resources with other jobs, if at all + List of QOS """ - sockets_per_board: int | None = None + warnings: OpenapiWarnings | None = None """ - Number of sockets per board required + Query warnings """ - sockets_per_node: Uint16NoValStruct | None = None + + +class OpenapiSlurmdbdStatsResp(BaseModel): + errors: OpenapiErrors | None = None """ - Number of sockets per node required + Query errors """ - standard_error: str | None = None + meta: OpenapiMeta | None = None """ - Path to stderr file + Slurm meta values """ - standard_input: str | None = None + statistics: StatsRec """ - Path to stdin file + statistics """ - standard_output: str | None = None + warnings: OpenapiWarnings | None = None """ - Path to stdout file + Query warnings """ - start_time: Uint64NoValStruct | None = None + + +class OpenapiUsersAddCondResp(BaseModel): + association_condition: UsersAddCond """ - Time execution began, or is expected to begin (UNIX timestamp) + Filters to select associations for users """ - state_description: str | None = None + errors: OpenapiErrors | None = None """ - Optional details for state_reason + Query errors """ - state_reason: str | None = None + meta: OpenapiMeta | None = None """ - Reason for current Pending or Failed state + Slurm meta values """ - submit_time: Uint64NoValStruct | None = None + user: UserShort """ - Time when the job was submitted (UNIX timestamp) + Admin level of user, DefaultAccount, DefaultWCKey """ - suspend_time: Uint64NoValStruct | None = None + warnings: OpenapiWarnings | None = None """ - Time the job was last suspended or resumed (UNIX timestamp) + Query warnings """ - system_comment: str | None = None + + +class OpenapiWckeyResp(BaseModel): + errors: OpenapiErrors | None = None """ - Arbitrary comment from slurmctld + Query errors """ - tasks: Uint32NoValStruct | None = None + meta: OpenapiMeta | None = None """ - Number of tasks + Slurm meta values """ - tasks_per_board: Uint16NoValStruct | None = None + warnings: OpenapiWarnings | None = None """ - Number of tasks invoked on each board + Query warnings """ - tasks_per_core: Uint16NoValStruct | None = None + wckeys: WckeyList """ - Number of tasks invoked on each core + wckeys """ - tasks_per_node: Uint16NoValStruct | None = None + + +class OpenapiSlurmdbdConfigResp(BaseModel): + accounts: AccountList | None = None """ - Number of tasks invoked on each node + Accounts """ - tasks_per_socket: Uint16NoValStruct | None = None + associations: AssocList | None = None """ - Number of tasks invoked on each socket + Associations """ - tasks_per_tres: Uint16NoValStruct | None = None + clusters: ClusterRecList | None = None """ - Number of tasks that can assess each GPU + Clusters """ - thread_spec: int | None = None + errors: OpenapiErrors | None = None """ - Specialized thread count + Query errors """ - threads_per_core: Uint16NoValStruct | None = None + instances: InstanceList | None = Field(None, deprecated=True) + meta: OpenapiMeta | None = None """ - Number of processor threads per CPU core required + Slurm meta values """ - time_limit: Uint32NoValStruct | None = None + qos: QosList | None = None """ - Maximum run time in minutes + QOS """ - time_minimum: Uint32NoValStruct | None = None + tres: TresList | None = None """ - Minimum run time in minutes + TRES """ - tres_alloc_str: str | None = None + users: UserList | None = None """ - TRES used by the job + Users """ - tres_bind: str | None = None + warnings: OpenapiWarnings | None = None """ - Task to TRES binding directives + Query warnings """ - tres_freq: str | None = None + wckeys: WckeyList | None = None """ - TRES frequency directives + WCKeys """ - tres_per_job: str | None = None + + +class OpenapiSlurmdbdJobsResp(BaseModel): + errors: OpenapiErrors | None = None """ - Comma separated list of TRES=# values to be allocated per job + Query errors """ - tres_per_node: str | None = None + jobs: JobList """ - Comma separated list of TRES=# values to be allocated per node + jobs """ - tres_per_socket: str | None = None + meta: OpenapiMeta | None = None """ - Comma separated list of TRES=# values to be allocated per socket + Slurm meta values """ - tres_per_task: str | None = None + warnings: OpenapiWarnings | None = None """ - Comma separated list of TRES=# values to be allocated per task + Query warnings """ - tres_req_str: str | None = None + + +class OpenapiUsersResp(BaseModel): + errors: OpenapiErrors | None = None """ - TRES requested by the job + Query errors """ - user_id: int | None = None + meta: OpenapiMeta | None = None """ - User ID that owns the job + Slurm meta values """ - user_name: str | None = None + users: UserList """ - User name that owns the job + users """ - wckey: str | None = None + warnings: OpenapiWarnings | None = None """ - Workload characterization key + Query warnings """ - -class JobInfoMsg(RootModel[list[JobInfo]]): - root: list[JobInfo] diff --git a/pyproject.toml b/pyproject.toml index 95487ab..a1b2dc3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -59,6 +59,12 @@ log_cli = true [tool.mypy] plugins = "numpy.typing.mypy_plugin" +[tool.datamodel-codegen] +formatters = [ + "ruff-check", + "ruff-format", +] + [tool.ruff] line-length = 88 diff --git a/tests/utils.py b/tests/utils.py index 73539d5..7096b2e 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -158,7 +158,7 @@ def setup_runner_script(working_directory: str) -> Path: #!/usr/bin/bash . /etc/profile.d/modules.sh -module load python/3.11 +module load python/3.12 export PYTHONPATH="${{PYTHONPATH}}:{parent_dir}" echo "Executing |$@|"