From 7abc6922740f811f95d58433984cf934d996f224 Mon Sep 17 00:00:00 2001 From: Irakli Sikharulidze Date: Wed, 27 Mar 2024 12:07:03 +0000 Subject: [PATCH 1/3] Initial commit of upgrade to Slurm REST API v0.0.40 --- pyproject.toml | 1 + src/zocalo/util/slurm/__init__.py | 31 +- src/zocalo/util/slurm/models.py | 3772 ++++++++++++++++++---- tests/configuration/test_plugin_slurm.py | 10 +- tests/util/test_slurm.py | 241 +- 5 files changed, 3453 insertions(+), 602 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 77bed6f..1378c5f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -68,6 +68,7 @@ jmx = "zocalo.configuration.plugin_jmx:JMX" logging = "zocalo.configuration.plugin_logging:Logging" rabbitmqapi = "zocalo.configuration.plugin_rabbitmqapi:RabbitAPI" slurm = "zocalo.configuration.plugin_slurm:Slurm" +iris = "zocalo.configuration.plugin_slurm:Slurm" smtp = "zocalo.configuration.plugin_smtp:SMTP" storage = "zocalo.configuration.plugin_storage:Storage" diff --git a/src/zocalo/util/slurm/__init__.py b/src/zocalo/util/slurm/__init__.py index 6fefb0c..05994c2 100644 --- a/src/zocalo/util/slurm/__init__.py +++ b/src/zocalo/util/slurm/__init__.py @@ -6,7 +6,7 @@ import requests -import zocalo.configuration +from zocalo.configuration import Configuration from . import models @@ -15,7 +15,7 @@ class SlurmRestApi: def __init__( self, url: str, - version: str = "v0.0.36", + version: str = "v0.0.40", user_name: str | None = None, user_token: str | pathlib.Path | None = None, ): @@ -35,12 +35,13 @@ def __init__( self.session.headers["X-SLURM-USER-TOKEN"] = self.user_token @classmethod - def from_zocalo_configuration(cls, zc: zocalo.configuration.Configuration): + def from_zocalo_configuration(cls, zc: Configuration, cluster: str = "slurm"): + cluster_config = getattr(zc, cluster) return cls( - url=zc.slurm["url"], - version=zc.slurm["api_version"], - user_name=zc.slurm.get("user"), - user_token=zc.slurm.get("user_token"), + url=cluster_config["url"], + version=cluster_config["api_version"], + user_name=cluster_config.get("user"), + user_token=cluster_config.get("user_token"), ) def get( @@ -93,19 +94,21 @@ def delete( response.raise_for_status() return response - def get_jobs(self) -> models.JobsResponse: + def get_jobs(self) -> models.OpenapiJobInfoResp: endpoint = f"slurm/{self.version}/jobs" response = self.get(endpoint) - return models.JobsResponse(**response.json()) + return models.OpenapiJobInfoResp(**response.json()) - def get_job_info(self, job_id: int) -> models.JobsResponse: + def get_job_info(self, job_id: int) -> models.JobInfo: endpoint = f"slurm/{self.version}/job/{job_id}" response = self.get(endpoint) - return models.JobsResponse(**response.json()) + job_info_resp = models.OpenapiJobInfoResp(**response.json()) + jobinfo = next(iter(dict(job_info_resp.jobs).get("__root__", []))) + return jobinfo def submit_job( - self, job_submission: models.JobSubmission - ) -> models.JobSubmissionResponse: + self, job_submission: models.JobSubmitReq + ) -> models.JobSubmitResponseMsg: endpoint = f"slurm/{self.version}/job/submit" response = self.post(endpoint, json=job_submission.dict(exclude_defaults=True)) - return models.JobSubmissionResponse(**response.json()) + return models.JobSubmitResponseMsg(**response.json()) diff --git a/src/zocalo/util/slurm/models.py b/src/zocalo/util/slurm/models.py index 4ded238..3e1964e 100644 --- a/src/zocalo/util/slurm/models.py +++ b/src/zocalo/util/slurm/models.py @@ -1,551 +1,3243 @@ +# generated by datamodel-codegen: +# filename: slurm-rest.yaml +# timestamp: 2024-03-12T17:33:00+00:00 + from __future__ import annotations from enum import Enum -from typing import Any, Dict, List, Optional +from typing import List from pydantic import BaseModel, Field -class Exclusive(Enum): - user = "user" - mcs = "mcs" +class Flag(Enum): + DELETED = "DELETED" + + +class AccountShort(BaseModel): + description: str | None = None + """ + An arbitrary string describing an account + """ + organization: str | None = None + """ + Organization to which the account belongs + """ + + +class Allocated(BaseModel): + seconds: int | None = None + + +class Default(BaseModel): + qos: str | None = None + + +class Fairshare(BaseModel): + factor: float | None = None + """ + fairshare factor + """ + level: float | 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 TypeEnum(Enum): + USER = "USER" + ASSOCIATION = "ASSOCIATION" + + +class AssocShort(BaseModel): + account: str | None = None + """ + Association account (if assigned) + """ + cluster: str | None = None + """ + Association cluster (if assigned) + """ + id: int | None = None + """ + Numeric Association ID (if known) + """ + partition: str | None = None + """ + Association partition (if assigned) + """ + user: str + """ + Assocation user (if assigned) + """ + + +class AssocShortList(BaseModel): + __root__: list[AssocShort] + + +class BfExitFields(BaseModel): + bf_max_job_start: int | None = None + bf_max_job_test: int | None = None + bf_max_time: int | None = None + bf_node_space_size: int | None = None + end_job_queue: int | None = None + state_changed: int | None = None + + +class Associations(BaseModel): + root: AssocShort | None = None + + +class Controller(BaseModel): + host: str | None = None + port: int | None = None + + +class Flag2(Enum): + REGISTERING = "REGISTERING" + MULTIPLE_SLURMD = "MULTIPLE_SLURMD" + FRONT_END = "FRONT_END" + CRAY_NATIVE = "CRAY_NATIVE" + FEDERATION = "FEDERATION" + EXTERNAL = "EXTERNAL" + + +class ControllerPing(BaseModel): + hostname: str | None = None + latency: int | None = None + mode: str | None = None + pinged: str | None = None + + +class ControllerPingArray(BaseModel): + __root__: list[ControllerPing] + + +class Coord(BaseModel): + direct: bool | None = None + name: str + + +class CoordList(BaseModel): + __root__: list[Coord] + + +class Flag3(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 Line(BaseModel): + end: int | None = None + start: int | None = None + + +class CronEntry(BaseModel): + command: str | None = None + day_of_month: str | None = None + day_of_week: str | None = None + flags: list[Flag3] | None = None + hour: str | None = None + line: Line | None = None + minute: str | None = None + month: str | None = None + specification: str | None = None + + +class CsvString(BaseModel): + __root__: list[str] + + +class Float64NoVal(BaseModel): + """ + 64 bit floating point number with flags + """ + + infinite: bool | None = False + """ + 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 = False + """ + True if number has been set. False if number is unset + """ + + +class Hostlist(BaseModel): + __root__: list[str] + + +class HostlistString(BaseModel): + __root__: list[str] + + +class Time(BaseModel): + time_end: int | None = None + time_start: int | None = None + + +class Instance(BaseModel): + cluster: str | None = None + extra: str | None = None + instance_id: str | None = None + instance_type: str | None = None + node_name: str | None = None + time: Time | None = None + + +class InstanceList(BaseModel): + __root__: list[Instance] + + +class Running(BaseModel): + tasks: int | None = None + + +class Max1(BaseModel): + running: Running | None = None + + +class Limits(BaseModel): + max: Max1 | None = None + + +class Comment(BaseModel): + administrator: str | None = None + job: str | None = None + system: str | None = None + + +class Flag4(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 Mcs(BaseModel): + label: str | None = None + + +class Reservation(BaseModel): + id: int | None = None + name: str | None = None + + +class CurrentEnum(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" + UPDATE_DB = "UPDATE_DB" + 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 State(BaseModel): + current: list[CurrentEnum] | None = None + reason: str | None = None + + +class System(BaseModel): + microseconds: int | None = None + seconds: int | None = None + + +class Total(BaseModel): + microseconds: int | None = None + seconds: int | None = None + + +class User(BaseModel): + microseconds: int | None = None + seconds: int | None = None + + +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 + """ + JobId for updated Job + """ + step_id: str | None = None + """ + StepId for updated Job + """ + why: str | None = None + """ + Update response message + """ + + +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 ExclusiveEnum(Enum): true = "true" false = "false" + user = "user" + mcs = "mcs" + + +class Flag5(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" + GRED_BINDING_DISABLED = "GRED_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" + SAVE_BATCH_SCRIPT = "SAVE_BATCH_SCRIPT" + + +class KillWarningFlag(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" + WARNING_SENT = "WARNING_SENT" + + +class MailTypeEnum(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 MemoryBindingTypeEnum(Enum): + NONE = "NONE" + RANK = "RANK" + MAP = "MAP" + MASK = "MASK" + LOCAL = "LOCAL" + VERBOSE = "VERBOSE" + SORT = "SORT" + PREFER = "PREFER" + + +class OpenModeEnum(Enum): + APPEND = "APPEND" + TRUNCATE = "TRUNCATE" + + +class PowerFlag(Enum): + EQUAL_POWER = "EQUAL_POWER" + + +class ProfileEnum(Enum): + NOT_SET = "NOT_SET" + NONE = "NONE" + ENERGY = "ENERGY" + LUSTRE = "LUSTRE" + NETWORK = "NETWORK" + TASK = "TASK" + + +class SharedEnum(Enum): + none = "none" + oversubscribe = "oversubscribe" + user = "user" + mcs = "mcs" + + +class X11Enum(Enum): + FORWARD_ALL_NODES = "FORWARD_ALL_NODES" + BATCH_NODE = "BATCH_NODE" + FIRST_NODE = "FIRST_NODE" + LAST_NODE = "LAST_NODE" + + +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" + UPDATE_DB = "UPDATE_DB" + 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 Flag7(Enum): + EQUAL_POWER = "EQUAL_POWER" + + +class Power(BaseModel): + flags: list[Flag7] | None = None + + +class ShowFlag(Enum): + ALL = "ALL" + DETAIL = "DETAIL" + MIXED = "MIXED" + LOCAL = "LOCAL" + SIBLING = "SIBLING" + FEDERATION = "FEDERATION" + FUTURE = "FUTURE" + + +class JobInfoGresDetail(BaseModel): + __root__: list[str] + + +class JobResNodes(BaseModel): + """ + job node resources + """ + + __root__: list + """ + job node resources + """ + + +class JobSubmitResponseMsg(BaseModel): + error: str | None = None + error_code: int | None = None + job_id: int | None = None + job_submit_user_msg: str | None = None + step_id: str | None = None + + +class License(BaseModel): + Free: int | None = None + LastConsumed: int | None = None + LastDeficit: int | None = None + LastUpdate: int | None = None + LicenseName: str | None = None + Remote: bool | None = None + Reserved: int | None = None + Total: int | None = None + Used: int | None = None + + +class Licenses(BaseModel): + __root__: list[License] + + +class NextStateAfterRebootEnum(Enum): + INVALID = "INVALID" + UNKNOWN = "UNKNOWN" + DOWN = "DOWN" + IDLE = "IDLE" + ALLOCATED = "ALLOCATED" + ERROR = "ERROR" + MIXED = "MIXED" + FUTURE = "FUTURE" + PERFCTRS = "PERFCTRS" + 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 StateEnum(Enum): + INVALID = "INVALID" + UNKNOWN = "UNKNOWN" + DOWN = "DOWN" + IDLE = "IDLE" + ALLOCATED = "ALLOCATED" + ERROR = "ERROR" + MIXED = "MIXED" + FUTURE = "FUTURE" + PERFCTRS = "PERFCTRS" + 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 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(BaseModel): + __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(BaseModel): + __root__: list[OpenapiWarning] + + +class Accounts(BaseModel): + allowed: str | None = None + deny: str | None = None + + +class Cpus(BaseModel): + task_binding: int | None = None + total: int | None = None + + +class Groups(BaseModel): + allowed: str | None = None + + +class Flag8(Enum): + force = "force" + + +class Oversubscribe(BaseModel): + flags: list[Flag8] | None = None + jobs: int | None = None + + +class Minimums(BaseModel): + nodes: int | None = None + + +class Nodes1(BaseModel): + allowed_allocation: str | None = None + configured: str | None = None + total: int | None = None + + +class StateEnum1(Enum): + INACTIVE = "INACTIVE" + UNKNOWN = "UNKNOWN" + UP = "UP" + DOWN = "DOWN" + DRAIN = "DRAIN" + + +class Partition(BaseModel): + state: list[StateEnum1] | None = None + + +class Priority(BaseModel): + job_factor: int | None = None + tier: int | None = None + + +class Qos(BaseModel): + allowed: str | None = None + assigned: str | None = None + deny: str | None = None + + +class Tres4(BaseModel): + billing_weights: str | None = None + configured: str | None = None + + +class StatusEnum(Enum): + INVALID = "INVALID" + PENDING = "PENDING" + SUCCESS = "SUCCESS" + ERROR = "ERROR" + SIGNALED = "SIGNALED" + CORE_DUMPED = "CORE_DUMPED" + + +class Flag9(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 ModeEnum(Enum): + DISABLED = "DISABLED" + SUSPEND = "SUSPEND" + REQUEUE = "REQUEUE" + CANCEL = "CANCEL" + GANG = "GANG" + + +class QosPreemptList(BaseModel): + __root__: list[str] + + +class QosStringIdList(BaseModel): + """ + List of QOS names + """ + + __root__: list[str] + """ + List of QOS names + """ + + +class ReservationCoreSpec(BaseModel): + core: str | None = None + node: str | None = None + + +class Flag10(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" + REOCCURRING = "REOCCURRING" + + +class ReservationInfoCoreSpec(BaseModel): + __root__: list[ReservationCoreSpec] + + +class Type(Enum): + """ + type + """ + + internal = "internal" + user = "user" + unknown = "unknown" + + +class RollupStat(BaseModel): + """ + recorded rollup statistics + """ + + last_run: int | None = Field(None, alias="last run") + """ + Last time rollup ran (UNIX timestamp) + """ + max_cycle: int | None = None + """ + longest rollup time (seconds) + """ + mean_cycles: int | None = None + """ + average time for rollup (seconds) + """ + total_cycles: int | None = None + """ + number of rollups since last_run + """ + total_time: int | None = None + """ + total time spent doing rollups (seconds) + """ + type: Type | None = None + """ + type + """ + + +class RollupStats(BaseModel): + """ + list of recorded rollup statistics + """ + + __root__: list[RollupStat] + """ + list of recorded rollup statistics + """ + + +class ScheduleExitFields(BaseModel): + default_queue_depth: int | None = None + end_job_queue: int | None = None + licenses: int | None = None + max_job_start: int | None = None + max_rpc_cnt: int | None = None + max_sched_time: int | None = None + + +class SharesFloat128Tres(BaseModel): + name: str | None = None + """ + TRES name + """ + value: float | None = None + """ + TRES value + """ + + +class SharesFloat128TresList(BaseModel): + __root__: list[SharesFloat128Tres] + + +class StatsMsgRpcsByTypeItem(BaseModel): + """ + RPC + """ + + average_time: int | None = None + """ + Average time spent processing RPC in seconds + """ + count: int | None = None + """ + Number of RPCs received + """ + message_type: str | None = None + """ + Message type as string + """ + total_time: int | None = None + """ + Total time spent processing RPC in seconds + """ + type_id: int | None = None + """ + Message type as integer + """ + + +class StatsMsgRpcsByType(BaseModel): + """ + RPCs by message type + """ + + __root__: list[StatsMsgRpcsByTypeItem] + """ + RPCs by message type + """ + + +class StatsMsgRpcsByUserItem(BaseModel): + """ + user + """ + + average_time: int | None = None + """ + Average time spent processing RPC in seconds + """ + count: int | None = None + """ + Number of RPCs received + """ + total_time: int | None = None + """ + Total time spent processing RPC in seconds + """ + user: str | None = None + """ + user name + """ + user_id: int | None = None + """ + user id (numeric) + """ + + +class StatsMsgRpcsByUser(BaseModel): + """ + RPCs by user + """ + + __root__: list[StatsMsgRpcsByUserItem] + """ + RPCs by user + """ + + +class Time2(BaseModel): + average: int | None = None + total: int | None = None + + +class StatsRpc(BaseModel): + count: int | None = None + rpc: str | None = None + time: Time2 | None = None + + +class StatsRpcList(BaseModel): + __root__: list[StatsRpc] + + +class StatsUser(BaseModel): + count: int | None = None + time: Time2 | None = None + user: str | None = None + + +class StatsUserList(BaseModel): + __root__: list[StatsUser] + + +class Nodes2(BaseModel): + count: int | None = None + list: Hostlist | None = None + range: str | None = None + + +class StateEnum2(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" + UPDATE_DB = "UPDATE_DB" + 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 CPU1(BaseModel): + actual_frequency: int | None = None + + +class Step1(BaseModel): + id: str | None = None + """ + Slurm Job StepId + """ + name: str | None = None + + +class Task(BaseModel): + distribution: str | None = None + + +class Tasks(BaseModel): + count: int | None = None + + +class StringArray(BaseModel): + __root__: list[str] + + +class StringList(BaseModel): + __root__: list[str] + + +class Tres(BaseModel): + count: int | None = None + id: int | None = None + name: str | None = None + type: str + + +class TresList(BaseModel): + __root__: list[Tres] + + +class Uint16NoVal(BaseModel): + """ + Integer number with flags + """ + + infinite: bool | None = False + """ + 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 = False + """ + True if number has been set. False if number is unset + """ + + +class Uint32NoVal(BaseModel): + """ + Integer number with flags + """ + + infinite: bool | None = False + """ + 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 = False + """ + True if number has been set. False if number is unset + """ + + +class Uint64NoVal(BaseModel): + """ + Integer number with flags + """ + + infinite: bool | None = False + """ + 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 = False + """ + True if number has been set. False if number is unset + """ + + +class StateEnum3(Enum): + INVALID = "INVALID" + UNKNOWN = "UNKNOWN" + DOWN = "DOWN" + IDLE = "IDLE" + ALLOCATED = "ALLOCATED" + ERROR = "ERROR" + MIXED = "MIXED" + FUTURE = "FUTURE" + PERFCTRS = "PERFCTRS" + 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 UpdateNodeMsg(BaseModel): + address: HostlistString | None = None + """ + communication name + """ + comment: str | None = None + """ + arbitrary comment + """ + cpu_bind: int | None = None + """ + default CPU binding type + """ + extra: str | None = None + """ + arbitrary string + """ + features: CsvString | None = None + """ + new available feature for node + """ + features_act: CsvString | None = None + """ + new active feature for node + """ + gres: str | None = None + """ + new generic resources for node + """ + hostname: HostlistString | None = None + """ + node's hostname + """ + name: HostlistString | None = None + """ + node to update + """ + reason: str | None = None + """ + reason for node being DOWN or DRAINING + """ + reason_uid: str | None = None + """ + user ID of sending (needed if user root is sending message) + """ + resume_after: Uint32NoVal | None = None + """ + automatically resume DOWN or DRAINED node after this amount of seconds + """ + state: list[StateEnum3] | None = None + """ + assign new node state + """ + weight: Uint32NoVal | None = None + """ + new weight for node + """ + + +class AdministratorLevelEnum(Enum): + Not_Set = "Not Set" + None_ = "None" + Operator = "Operator" + Administrator = "Administrator" + + +class Default1(BaseModel): + account: str | None = None + wckey: str | None = None + + +class Flag11(Enum): + NONE = "NONE" + DELETED = "DELETED" + + +class AdminlevelEnum(Enum): + Not_Set = "Not Set" + None_ = "None" + Operator = "Operator" + Administrator = "Administrator" + + +class UserShort(BaseModel): + adminlevel: list[AdminlevelEnum] | None = None + """ + Admin level of user. Valid levels are None, Operator, and Admin. + """ + defaultaccount: str | None = None + """ + Identify the default bank account name to be used for a job if none is specified at submission time. + """ + defaultwckey: str | None = None + """ + Identify the default Workload Characterization Key. + """ + + +class Flag12(Enum): + DELETED = "DELETED" + + +class Flag13(Enum): + ASSIGNED_DEFAULT = "ASSIGNED_DEFAULT" + + +class WckeyTagStruct(BaseModel): + flags: list[Flag13] + """ + Active flags + """ + wckey: str + """ + WCKey name + """ + + +class Account(BaseModel): + associations: AssocShortList | None = None + coordinators: CoordList | None = None + description: str + flags: list[Flag] | None = None + name: str + organization: str + + +class AccountList(BaseModel): + __root__: list[Account] + + +class Accounting(BaseModel): + TRES: Tres | None = None + allocated: Allocated | None = None + id: int | None = None + start: int | None = None + + +class AccountingList(BaseModel): + __root__: list[Accounting] + + +class AcctGatherEnergy(BaseModel): + average_watts: int | None = None + base_consumed_energy: int | None = None + consumed_energy: int | None = None + current_watts: Uint32NoVal | None = None + last_collected: int | None = None + previous_consumed_energy: int | None = None + + +class Per(BaseModel): + accruing: Uint32NoVal | None = None + count: Uint32NoVal | None = None + submitted: Uint32NoVal | None = None + wall_clock: Uint32NoVal | None = None + + +class Jobs(BaseModel): + accruing: Uint32NoVal | None = None + active: Uint32NoVal | None = None + per: Per | None = None + total: Uint32NoVal | None = None + + +class Account1(BaseModel): + wall_clock: Uint32NoVal | None = None + + +class Per1(BaseModel): + account: Account1 | None = None + + +class Group(BaseModel): + active: TresList | None = None + minutes: TresList | None = None + + +class Per2(BaseModel): + job: TresList | None = None + + +class Minutes(BaseModel): + per: Per2 | None = None + total: TresList | None = None + + +class Per3(BaseModel): + job: TresList | None = None + node: TresList | None = None + + +class Tres1(BaseModel): + group: Group | None = None + minutes: Minutes | None = None + per: Per3 | None = None + total: TresList | None = None + + +class Max(BaseModel): + jobs: Jobs | None = None + per: Per1 | None = None + tres: Tres1 | None = None + + +class Min(BaseModel): + priority_threshold: Uint32NoVal | None = None + + +class Assoc(BaseModel): + account: str | None = None + accounting: AccountingList | None = None + """ + Usage accounting + """ + cluster: str | None = None + comment: str | None = None + """ + comment for the association + """ + default: Default | None = None + flags: list[Flag] | None = None + id: AssocShort | None = None + """ + Association ID + """ + is_default: bool | None = None + 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 + partition: str | None = None + priority: Uint32NoVal | None = None + qos: QosStringIdList | None = None + """ + List of QOS names + """ + shares_raw: int | None = None + user: str + + +class AssocList(BaseModel): + __root__: list[Assoc] + + +class AssocRecSet(BaseModel): + comment: str | None = None + """ + Comment for the association + """ + defaultqos: str | None = None + """ + Which QOS id is this association default + """ + fairshare: int | None = None + """ + Number of shares allocated to this association + """ + grpjobs: Uint32NoVal | None = None + """ + Max number of jobs the underlying group of associations can run at one time + """ + grpjobsaccrue: Uint32NoVal | None = None + """ + Max number of jobs the underlying group of associations can have accruing priority at one time + """ + grpsubmitjobs: Uint32NoVal | None = None + """ + Max number of jobs the underlying group of associations can submit at one time + """ + grptres: TresList | None = None + grptresmins: TresList | None = None + """ + Max number of cpu minutes the underlying group of associations can run for + """ + grptresrunmins: TresList | None = None + """ + Max number of cpu minutes the underlying group of associations can having running at one time + """ + grpwall: Uint32NoVal | None = None + """ + Total time in minutes the underlying group of associations can run for + """ + maxjobs: Uint32NoVal | None = None + """ + Max number of jobs this association can run at one time + """ + maxjobsaccrue: Uint32NoVal | None = None + """ + Max number of jobs this association can have accruing priority time + """ + maxsubmitjobs: Uint32NoVal | None = None + """ + Max number of jobs that can be submitted by association + """ + maxtresminsperjob: TresList | None = None + """ + Max number of cpu minutes this association can have per job + """ + maxtresperjob: TresList | None = None + """ + Max number of cpus this association can allocate per job + """ + maxtrespernode: TresList | None = None + """ + Max number of TRES this association can allocate per node + """ + maxtresrunmins: TresList | None = None + """ + Max number of cpu minutes this association can having running at one time + """ + maxwalldurationperjob: Uint32NoVal | None = None + """ + Longest time this association can run a job + """ + minpriothresh: Uint32NoVal | None = None + """ + Don't reserve resources for pending jobs unless they have a priority equal to or higher than this + """ + parent: str | None = None + """ + Name of parent account + """ + priority: Uint32NoVal | None = None + """ + Association priority + """ + qoslevel: QosStringIdList | None = None + """ + List of QOS names + """ + + +class ClusterRec(BaseModel): + associations: Associations | None = None + controller: Controller | None = None + flags: list[Flag2] | None = None + name: str | None = None + nodes: str | None = None + rpc_version: int | None = None + select_plugin: str | None = None + tres: TresList | None = None + + +class ClusterRecList(BaseModel): + __root__: list[ClusterRec] + + +class ExtSensorsData(BaseModel): + consumed_energy: Uint64NoVal | None = None + current_watts: int | None = None + energy_update_time: int | None = None + temperature: Uint32NoVal | None = None + + +class Array(BaseModel): + job_id: int | None = None + limits: Limits | None = None + task: str | None = None + task_id: Uint32NoVal | None = None + + +class Het(BaseModel): + job_id: int | None = None + job_offset: Uint32NoVal | None = None + + +class Required(BaseModel): + CPUs: int | None = None + memory_per_cpu: Uint64NoVal | None = None + memory_per_node: Uint64NoVal | None = None + + +class Time1(BaseModel): + elapsed: int | None = None + eligible: int | None = None + end: int | None = None + limit: Uint32NoVal | None = None + start: int | None = None + submission: int | None = None + suspended: int | None = None + system: System | None = None + total: Total | None = None + user: User | None = None + + +class Tres3(BaseModel): + allocated: TresList | None = None + requested: TresList | None = None + + +class JobArrayResponseArray(BaseModel): + __root__: list[JobArrayResponseMsgEntry] + + +class Rlimits(BaseModel): + as_: Uint64NoVal | None = Field(None, alias="as") + """ + Address space limit. + """ + core: Uint64NoVal | None = None + """ + Largest core file that can be created, in bytes. + """ + cpu: Uint64NoVal | None = None + """ + Per-process CPU limit, in seconds. + """ + data: Uint64NoVal | None = None + """ + Maximum size of data segment, in bytes. + """ + fsize: Uint64NoVal | None = None + """ + Largest file that can be created, in bytes. + """ + memlock: Uint64NoVal | None = None + """ + Locked-in-memory address space + """ + nofile: Uint64NoVal | None = None + """ + Number of open files. + """ + nproc: Uint64NoVal | None = None + """ + Number of processes. + """ + rss: Uint64NoVal | 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: Uint64NoVal | None = None + """ + Maximum size of stack segment, in bytes. + """ + + +class JobDescMsg(BaseModel): + account: str | None = None + account_gather_frequency: str | None = None + admin_comment: str | None = None + allocation_node_list: str | None = None + allocation_node_port: int | None = None + argv: StringArray | None = None + array: str | None = None + batch_features: str | None = None + begin_time: Uint64NoVal | None = None + burst_buffer: str | None = None + cluster_constraint: str | None = None + clusters: str | None = None + comment: str | None = None + constraints: str | None = None + container: str | None = None + container_id: str | None = None + contiguous: bool | None = None + core_specification: int | None = None + cpu_binding: str | None = None + cpu_binding_flags: list[CpuBindingFlag] | None = None + cpu_frequency: str | None = None + cpus_per_task: int | None = None + cpus_per_tres: str | None = None + crontab: CronEntry | None = None + current_working_directory: str | None = None + deadline: int | None = None + delay_boot: int | None = None + dependency: str | None = None + distribution: str | None = None + distribution_plane_size: int | None = None + end_time: int | None = None + environment: StringArray | None = None + excluded_nodes: CsvString | None = None + exclusive: list[ExclusiveEnum] | None = None + extra: str | None = None + flags: list[Flag5] | None = None + group_id: str | None = None + hetjob_group: int | None = None + immediate: bool | None = None + job_id: int | None = None + kill_on_node_fail: bool | None = None + kill_warning_delay: Uint16NoVal | None = None + kill_warning_flags: list[KillWarningFlag] | None = None + kill_warning_signal: str | None = None + licenses: str | None = None + mail_type: list[MailTypeEnum] | None = None + mail_user: str | None = None + maximum_cpus: int | None = None + maximum_nodes: int | None = None + mcs_label: str | None = None + memory_binding: str | None = None + memory_binding_type: list[MemoryBindingTypeEnum] | None = None + memory_per_cpu: Uint64NoVal | None = None + memory_per_node: Uint64NoVal | None = None + memory_per_tres: str | None = None + minimum_boards_per_node: int | None = None + minimum_cpus: int | None = None + minimum_cpus_per_node: int | None = None + minimum_nodes: int | None = None + minimum_sockets_per_board: int | None = None + name: str | None = None + network: str | None = None + nice: int | None = None + nodes: str | None = None + ntasks_per_tres: int | None = None + open_mode: list[OpenModeEnum] | None = None + overcommit: bool | None = None + oversubscribe: bool | None = None + partition: str | None = None + power_flags: list[PowerFlag] | None = None + prefer: str | None = None + priority: Uint32NoVal | None = None + profile: list[ProfileEnum] | None = None + qos: str | None = None + reboot: bool | None = None + requeue: bool | None = None + required_nodes: CsvString | None = None + required_switches: Uint32NoVal | None = None + reservation: str | None = None + reserve_ports: int | None = None + rlimits: Rlimits | None = None + script: str | None = None + selinux_context: str | None = None + shared: list[SharedEnum] | None = None + site_factor: int | None = None + sockets_per_node: int | None = None + spank_environment: StringArray | None = None + standard_error: str | None = None + standard_input: str | None = None + standard_output: str | None = None + tasks: int | None = None + tasks_per_board: int | None = None + tasks_per_core: int | None = None + tasks_per_node: int | None = None + tasks_per_socket: int | None = None + temporary_disk_per_node: int | None = None + thread_specification: int | None = None + threads_per_core: int | None = None + time_limit: Uint32NoVal | None = None + time_minimum: Uint32NoVal | None = None + tres_bind: str | None = None + tres_freq: str | None = None + tres_per_job: str | None = None + tres_per_node: str | None = None + tres_per_socket: str | None = None + tres_per_task: str | None = None + user_id: str | None = None + wait_all_nodes: bool | None = None + wait_for_switch: int | None = None + wckey: str | None = None + x11: list[X11Enum] | None = None + x11_magic_cookie: str | None = None + x11_target_host: str | None = None + x11_target_port: int | None = None + + +class JobDescMsgList(BaseModel): + __root__: list[JobDescMsg] + + +class JobRes(BaseModel): + allocated_cores: int | None = None + allocated_cpus: int | None = None + allocated_hosts: int | None = None + allocated_nodes: JobResNodes | None = None + nodes: str | None = None + + +class JobSubmitReq(BaseModel): + job: JobDescMsg | None = None + """ + Job description + """ + jobs: JobDescMsgList | None = None + """ + HetJob description + """ + script: str | None = None + """ + batch job script + """ + + +class OpenapiMeta(BaseModel): + client: Client | None = None + command: StringArray | None = None + """ + CLI command (if applicable) + """ + plugin: Plugin | None = None + slurm: Slurm | None = None + + +class OpenapiPingArrayResp(BaseModel): + errors: OpenapiErrors | None = None + """ + Query errors + """ + meta: OpenapiMeta | None = None + """ + Slurm meta values + """ + pings: ControllerPingArray + """ + pings + """ + warnings: OpenapiWarnings | None = None + """ + Query warnings + """ + + +class OpenapiResp(BaseModel): + errors: OpenapiErrors | None = None + """ + Query errors + """ + meta: OpenapiMeta | None = None + """ + Slurm meta values + """ + 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 + memory_per_cpu: int | None = None + partition_memory_per_cpu: Uint64NoVal | None = None + partition_memory_per_node: Uint64NoVal | None = None + time: Uint32NoVal | None = None + + +class Maximums(BaseModel): + cpus_per_node: Uint32NoVal | None = None + cpus_per_socket: Uint32NoVal | None = None + memory_per_cpu: int | None = None + nodes: Uint32NoVal | None = None + over_time_limit: Uint16NoVal | None = None + oversubscribe: Oversubscribe | None = None + partition_memory_per_cpu: Uint64NoVal | None = None + partition_memory_per_node: Uint64NoVal | None = None + shares: int | None = None + time: Uint32NoVal | None = None + + +class Timeouts(BaseModel): + resume: Uint16NoVal | None = None + suspend: Uint16NoVal | None = None + + +class PartitionInfo(BaseModel): + accounts: Accounts | None = None + alternate: str | None = None + cluster: str | None = None + cpus: Cpus | None = None + defaults: Defaults | None = None + grace_time: int | None = None + groups: Groups | None = None + maximums: Maximums | None = None + minimums: Minimums | None = None + name: str | None = None + node_sets: str | None = None + nodes: Nodes1 | None = None + partition: Partition | None = None + priority: Priority | None = None + qos: Qos | None = None + suspend_time: Uint32NoVal | None = None + timeouts: Timeouts | None = None + tres: Tres4 | None = None + + +class PartitionInfoMsg(BaseModel): + __root__: list[PartitionInfo] + + +class PowerMgmtData(BaseModel): + current_watts: int | None = None + lowest_watts: int | None = None + maximum_watts: Uint32NoVal | None = None + new_job_time: Uint64NoVal | None = None + new_maximum_watts: int | None = None + peak_watts: int | None = None + state: int | None = None + time_start_day: int | None = None + total_energy: int | None = None + + +class Signal(BaseModel): + id: Uint16NoVal | None = None + """ + Signal sent to process (numeric) + """ + name: str | None = None + """ + Signal sent to process + """ + + +class ProcessExitCodeVerbose(BaseModel): + return_code: Uint32NoVal | None = None + """ + Process return code (numeric) + """ + signal: Signal | None = None + status: list[StatusEnum] | None = None + """ + Status given by return code + """ + + +class Per4(BaseModel): + account: Uint32NoVal | None = None + user: Uint32NoVal | None = None + + +class Accruing(BaseModel): + per: Per4 | None = None + + +class ActiveJobs(BaseModel): + accruing: Uint32NoVal | None = None + count: Uint32NoVal | None = None + + +class ActiveJobs1(BaseModel): + per: Per4 | None = None + + +class Jobs1(BaseModel): + active_jobs: ActiveJobs1 | None = None + per: Per4 | None = None + + +class Per7(BaseModel): + account: TresList | None = None + job: TresList | None = None + qos: TresList | None = None + user: TresList | None = None + + +class Minutes1(BaseModel): + per: Per7 | None = None + + +class Per8(BaseModel): + account: TresList | None = None + job: TresList | None = None + node: TresList | None = None + user: TresList | None = None + + +class Tres5(BaseModel): + minutes: Minutes1 | None = None + per: Per8 | None = None + total: TresList | None = None + + +class Per9(BaseModel): + job: Uint32NoVal | None = None + qos: Uint32NoVal | None = None + + +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 + + +class Tres6(BaseModel): + per: Per10 | None = None + + +class Min1(BaseModel): + priority_threshold: Uint32NoVal | None = None + tres: Tres6 | None = None + + +class Limits1(BaseModel): + factor: Float64NoVal | None = None + grace_time: int | None = None + max: Max2 | None = None + min: Min1 | None = None + + +class Preempt(BaseModel): + exempt_time: Uint32NoVal | None = None + list: QosPreemptList | None = None + mode: List[ModeEnum] | None = None # resolve name clash with list attribute + + +class Qos1(BaseModel): + description: str | None = None + flags: list[Flag9] | None = None + id: int | None = None + limits: Limits1 | None = None + name: str | None = None + preempt: Preempt | None = None + priority: Uint32NoVal | None = None + usage_factor: Float64NoVal | None = None + usage_threshold: Float64NoVal | None = None + + +class QosList(BaseModel): + __root__: list[Qos1] + + +class PurgeCompleted(BaseModel): + time: Uint32NoVal | None = None + + +class ReservationInfo(BaseModel): + accounts: str | None = None + burst_buffer: str | None = None + core_count: int | None = None + core_specializations: ReservationInfoCoreSpec | None = None + end_time: Uint64NoVal | None = None + features: str | None = None + flags: list[Flag10] | None = None + groups: str | None = None + licenses: str | None = None + max_start_delay: int | None = None + name: str | None = None + node_count: int | None = None + node_list: str | None = None + partition: str | None = None + purge_completed: PurgeCompleted | None = None + start_time: Uint64NoVal | None = None + tres: str | None = None + users: str | None = None + watts: Uint32NoVal | None = None + + +class ReservationInfoMsg(BaseModel): + __root__: list[ReservationInfo] + + +class SharesUint64Tres(BaseModel): + name: str | None = None + """ + TRES name + """ + value: Uint64NoVal | None = None + """ + TRES value + """ + + +class SharesUint64TresList(BaseModel): + __root__: list[SharesUint64Tres] + + +class StatsMsg(BaseModel): + agent_count: int | None = None + agent_queue_size: int | None = None + agent_thread_count: int | None = None + bf_active: bool | None = None + bf_backfilled_het_jobs: int | None = None + bf_backfilled_jobs: int | None = None + bf_cycle_counter: int | None = None + bf_cycle_last: int | None = None + bf_cycle_mean: int | None = None + bf_cycle_sum: int | None = None + bf_depth_mean: int | None = None + bf_depth_mean_try: int | None = None + bf_depth_sum: int | None = None + bf_depth_try_sum: int | None = None + bf_exit: BfExitFields | None = None + bf_last_backfilled_jobs: int | None = None + bf_last_depth: int | None = None + bf_last_depth_try: int | None = None + bf_queue_len: int | None = None + bf_queue_len_mean: int | None = None + bf_queue_len_sum: int | None = None + bf_table_size: int | None = None + bf_table_size_mean: int | None = None + bf_when_last_cycle: Uint64NoVal | None = None + dbd_agent_queue_size: int | None = None + gettimeofday_latency: int | None = None + job_states_ts: Uint64NoVal | None = None + jobs_canceled: int | None = None + jobs_completed: int | None = None + jobs_failed: int | None = None + jobs_pending: int | None = None + jobs_running: int | None = None + jobs_started: int | None = None + jobs_submitted: int | None = None + parts_packed: int | None = None + req_time: Uint64NoVal | None = None + req_time_start: Uint64NoVal | None = None + rpcs_by_message_type: StatsMsgRpcsByType | None = None + rpcs_by_user: StatsMsgRpcsByUser | None = None + schedule_cycle_last: int | None = None + schedule_cycle_max: int | None = None + schedule_cycle_mean: int | None = None + schedule_cycle_mean_depth: int | None = None + schedule_cycle_per_minute: int | None = None + schedule_cycle_total: int | None = None + schedule_exit: ScheduleExitFields | None = None + schedule_queue_length: int | None = None + server_thread_count: int | None = None + + +class StatsRec(BaseModel): + RPCs: StatsRpcList | None = None + rollups: RollupStats | None = None + time_start: int | None = None + users: StatsUserList | None = None + + +class RequestedFrequency(BaseModel): + max: Uint32NoVal | None = None + min: Uint32NoVal | None = None + + +class CPU(BaseModel): + governor: str | None = None + requested_frequency: RequestedFrequency | None = None + + +class Energy(BaseModel): + consumed: Uint64NoVal | None = None + + +class Statistics(BaseModel): + CPU: CPU1 | None = None + energy: Energy | None = None + + +class Time4(BaseModel): + elapsed: int | None = None + end: Uint64NoVal | None = None + start: Uint64NoVal | None = None + suspended: int | None = None + system: System | None = None + total: Total | None = None + user: User | None = None + + +class StepTresReqMax(BaseModel): + __root__: list[Tres] + + +class StepTresReqMin(BaseModel): + __root__: list[Tres] + + +class StepTresUsageMax(BaseModel): + __root__: list[Tres] + + +class StepTresUsageMin(BaseModel): + __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 + cluster: str + flags: list[Flag12] | None = None + id: int | None = None + name: str + user: str + + +class WckeyList(BaseModel): + __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: float | None = None + """ + effective, normalized usage + """ + fairshare: Fairshare | None = None + id: int | None = None + """ + assocation id + """ + name: str | None = None + """ + share name + """ + parent: str | None = None + """ + parent name + """ + partition: str | None = None + """ + partition name + """ + shares: Uint32NoVal | None = None + """ + number of shares allocated + """ + shares_normalized: Float64NoVal | None = None + """ + normalized shares + """ + tres: Tres2 | None = None + type: list[TypeEnum] | None = None + """ + user or account association + """ + usage: int | None = None + """ + measure of tresbillableunits usage + """ + usage_normalized: Float64NoVal | None = None + """ + normalized usage + """ + + +class JobInfo(BaseModel): + account: str | None = None + accrue_time: Uint64NoVal | None = None + admin_comment: str | None = None + allocating_node: str | None = None + array_job_id: Uint32NoVal | None = None + array_max_tasks: Uint32NoVal | None = None + array_task_id: Uint32NoVal | None = None + array_task_string: str | None = None + association_id: int | None = None + batch_features: str | None = None + batch_flag: bool | None = None + batch_host: str | None = None + billable_tres: Float64NoVal | None = None + burst_buffer: str | None = None + burst_buffer_state: str | None = None + cluster: str | None = None + cluster_features: str | None = None + command: str | None = None + comment: str | None = None + container: str | None = None + container_id: str | None = None + contiguous: bool | None = None + core_spec: int | None = None + cores_per_socket: Uint16NoVal | None = None + cpu_frequency_governor: Uint32NoVal | None = None + cpu_frequency_maximum: Uint32NoVal | None = None + cpu_frequency_minimum: Uint32NoVal | None = None + cpus: Uint32NoVal | None = None + cpus_per_task: Uint16NoVal | None = None + cpus_per_tres: str | None = None + cron: str | None = None + current_working_directory: str | None = None + deadline: Uint64NoVal | None = None + delay_boot: Uint32NoVal | None = None + dependency: str | None = None + derived_exit_code: ProcessExitCodeVerbose | None = None + """ + return code returned by process + """ + eligible_time: Uint64NoVal | None = None + end_time: Uint64NoVal | None = None + excluded_nodes: str | None = None + exclusive: list[ExclusiveEnum] | None = None + exit_code: ProcessExitCodeVerbose | None = None + """ + return code returned by process + """ + extra: str | None = None + failed_node: str | None = None + features: str | None = None + federation_origin: str | None = None + federation_siblings_active: str | None = None + federation_siblings_viable: str | None = None + flags: list[Flag5] | None = None + gres_detail: JobInfoGresDetail | None = None + group_id: int | None = None + group_name: str | None = None + het_job_id: Uint32NoVal | None = None + het_job_id_set: str | None = None + het_job_offset: Uint32NoVal | None = None + job_id: int | None = None + job_resources: JobRes | None = None + job_size_str: CsvString | None = None + job_state: list[JobStateEnum] | None = None + last_sched_evaluation: Uint64NoVal | None = None + licenses: str | None = None + mail_type: list[MailTypeEnum] | None = None + mail_user: str | None = None + max_cpus: Uint32NoVal | None = None + max_nodes: Uint32NoVal | None = None + maximum_switch_wait_time: int | None = None + mcs_label: str | None = None + memory_per_cpu: Uint64NoVal | None = None + memory_per_node: Uint64NoVal | None = None + memory_per_tres: str | None = None + minimum_cpus_per_node: Uint16NoVal | None = None + minimum_switches: int | None = None + minimum_tmp_disk_per_node: Uint32NoVal | None = None + name: str | None = None + network: str | None = None + nice: int | None = None + node_count: Uint32NoVal | None = None + nodes: str | None = None + oversubscribe: bool | None = None + partition: str | None = None + power: Power | None = None + pre_sus_time: Uint64NoVal | None = None + preempt_time: Uint64NoVal | None = None + preemptable_time: Uint64NoVal | None = None + prefer: str | None = None + priority: Uint32NoVal | None = None + profile: list[ProfileEnum] | None = None + qos: str | None = None + reboot: bool | None = None + requeue: bool | None = None + required_nodes: str | None = None + resize_time: Uint64NoVal | None = None + restart_cnt: int | None = None + resv_name: str | None = None + scheduled_nodes: str | None = None + selinux_context: str | None = None + shared: list[SharedEnum] | None = None + show_flags: list[ShowFlag] | None = None + sockets_per_board: int | None = None + sockets_per_node: Uint16NoVal | None = None + standard_error: str | None = None + standard_input: str | None = None + standard_output: str | None = None + start_time: Uint64NoVal | None = None + state_description: str | None = None + state_reason: str | None = None + submit_time: Uint64NoVal | None = None + suspend_time: Uint64NoVal | None = None + system_comment: str | None = None + tasks: Uint32NoVal | None = None + tasks_per_board: Uint16NoVal | None = None + tasks_per_core: Uint16NoVal | None = None + tasks_per_node: Uint16NoVal | None = None + tasks_per_socket: Uint16NoVal | None = None + tasks_per_tres: Uint16NoVal | None = None + thread_spec: int | None = None + threads_per_core: Uint16NoVal | None = None + time_limit: Uint32NoVal | None = None + time_minimum: Uint32NoVal | None = None + tres_alloc_str: str | None = None + tres_bind: str | None = None + tres_freq: str | None = None + tres_per_job: str | None = None + tres_per_node: str | None = None + tres_per_socket: str | None = None + tres_per_task: str | None = None + tres_req_str: str | None = None + user_id: int | None = None + user_name: str | None = None + wckey: str | None = None + + +class JobInfoMsg(BaseModel): + __root__: list[JobInfo] + + +class Node(BaseModel): + active_features: CsvString | None = None + address: str | None = None + alloc_cpus: int | None = None + alloc_idle_cpus: int | None = None + alloc_memory: int | None = None + architecture: str | None = None + boards: int | None = None + boot_time: Uint64NoVal | None = None + burstbuffer_network_address: str | None = None + cluster_name: str | None = None + comment: str | None = None + cores: int | None = None + cpu_binding: int | None = None + cpu_load: int | None = None + cpus: int | None = None + effective_cpus: int | None = None + energy: AcctGatherEnergy | None = None + external_sensors: ExtSensorsData | None = None + extra: str | None = None + features: CsvString | None = None + free_mem: Uint64NoVal | None = None + gres: str | None = None + gres_drained: str | None = None + gres_used: str | None = None + hostname: str | None = None + instance_id: str | None = None + instance_type: str | None = None + last_busy: Uint64NoVal | None = None + mcs_label: str | None = None + name: str | None = None + next_state_after_reboot: list[NextStateAfterRebootEnum] | None = None + operating_system: str | None = None + owner: str | None = None + partitions: CsvString | None = None + port: int | None = None + power: PowerMgmtData | None = None + real_memory: int | None = None + reason: str | None = None + reason_changed_at: Uint64NoVal | None = None + reason_set_by_user: str | None = None + reservation: str | None = None + resume_after: Uint64NoVal | None = None + slurmd_start_time: Uint64NoVal | None = None + sockets: int | None = None + specialized_cores: int | None = None + specialized_cpus: str | None = None + specialized_memory: int | None = None + state: list[StateEnum] | None = None + temporary_disk: int | None = None + threads: int | None = None + tres: str | None = None + tres_used: str | None = None + tres_weighted: float | None = None + version: str | None = None + weight: int | None = None + + +class Nodes(BaseModel): + __root__: list[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 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 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 OpenapiJobInfoResp(BaseModel): + errors: OpenapiErrors | None = None + """ + Query errors + """ + jobs: JobInfoMsg + """ + list of jobs + """ + last_backfill: Uint64NoVal + """ + time of last backfill scheduler run (UNIX timestamp) + """ + last_update: Uint64NoVal + """ + time of last job change (UNIX timestamp) + """ + meta: OpenapiMeta | None = None + """ + Slurm meta values + """ + warnings: OpenapiWarnings | None = None + """ + Query warnings + """ + + +class OpenapiJobPostResponse(BaseModel): + errors: OpenapiErrors | None = None + """ + Query errors + """ + job_id: str | None = None + """ + First updated JobId - Use results instead + """ + job_submit_user_msg: str | None = None + """ + First updated Job submision user message - Use results instead + """ + meta: OpenapiMeta | None = None + """ + Slurm meta values + """ + results: JobArrayResponseArray | None = None + """ + Job update results + """ + step_id: str | None = None + """ + First updated StepID - Use results instead + """ + warnings: OpenapiWarnings | None = None + """ + Query warnings + """ + + +class OpenapiJobSubmitResponse(BaseModel): + errors: OpenapiErrors | None = None + """ + Query errors + """ + job_id: int | None = None + """ + submited JobId + """ + job_submit_user_msg: str | None = None + """ + job submision user message + """ + meta: OpenapiMeta | None = None + """ + Slurm meta values + """ + result: JobSubmitResponseMsg | None = None + """ + Job submission + """ + step_id: str | None = None + """ + submited StepID + """ + warnings: OpenapiWarnings | None = None + """ + Query warnings + """ + + +class OpenapiLicensesResp(BaseModel): + errors: OpenapiErrors | None = None + """ + Query errors + """ + last_update: Uint64NoVal + """ + time of last licenses change (UNIX timestamp) + """ + licenses: Licenses + """ + list of licenses + """ + meta: OpenapiMeta | None = None + """ + Slurm meta values + """ + warnings: OpenapiWarnings | None = None + """ + Query warnings + """ + + +class OpenapiNodesResp(BaseModel): + errors: OpenapiErrors | None = None + """ + Query errors + """ + last_update: Uint64NoVal + """ + time of last node change (UNIX timestamp) + """ + meta: OpenapiMeta | None = None + """ + Slurm meta values + """ + nodes: Nodes + """ + list of nodes + """ + warnings: OpenapiWarnings | None = None + """ + Query warnings + """ + + +class OpenapiPartitionResp(BaseModel): + errors: OpenapiErrors | None = None + """ + Query errors + """ + last_update: Uint64NoVal + """ + time of last partition change (UNIX timestamp) + """ + meta: OpenapiMeta | None = None + """ + Slurm meta values + """ + partitions: PartitionInfoMsg + """ + list of partitions + """ + warnings: OpenapiWarnings | None = None + """ + Query warnings + """ + + +class OpenapiReservationResp(BaseModel): + errors: OpenapiErrors | None = None + """ + Query errors + """ + last_update: Uint64NoVal + """ + time of last reservation change (UNIX timestamp) + """ + meta: OpenapiMeta | None = None + """ + Slurm meta values + """ + reservations: ReservationInfoMsg + """ + list of reservations + """ + 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 | None = None + """ + Filters to select associations for users + """ + errors: OpenapiErrors | None = None + """ + Query errors + """ + meta: OpenapiMeta | None = None + """ + Slurm meta values + """ + user: UserShort | None = None + """ + 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 Consumed(BaseModel): + average: TresList | None = None + max: StepTresUsageMax | None = None + min: StepTresUsageMin | None = None + total: TresList | None = None + + +class Requested(BaseModel): + average: TresList | None = None + max: StepTresReqMax | None = None + min: StepTresReqMin | None = None + total: TresList | None = None + + +class Tres7(BaseModel): + allocated: TresList | None = None + consumed: Consumed | None = None + requested: Requested | None = None + + +class Step(BaseModel): + CPU: CPU | None = None + exit_code: ProcessExitCodeVerbose | None = None + """ + return code returned by process + """ + kill_request_user: str | None = None + nodes: Nodes2 | None = None + pid: str | None = None + state: list[StateEnum2] | None = None + 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(BaseModel): + __root__: list[Step] + + +class User2(BaseModel): + administrator_level: list[AdministratorLevelEnum] | None = None + associations: AssocShortList | None = None + coordinators: CoordList | None = None + default: Default1 | None = None + flags: list[Flag11] | None = None + name: str + old_name: str | None = None + wckeys: WckeyList | None = None + + +class UserList(BaseModel): + __root__: list[User2] + + +class AssocSharesObjList(BaseModel): + __root__: list[AssocSharesObjWrap] + + +class Job(BaseModel): + account: str | None = None + allocation_nodes: int | None = None + array: Array | None = None + association: AssocShort | None = None + block: str | None = None + cluster: str | None = None + comment: Comment | None = None + constraints: str | None = None + container: str | None = None + derived_exit_code: ProcessExitCodeVerbose | None = None + """ + return code returned by process + """ + exit_code: ProcessExitCodeVerbose | None = None + """ + return code returned by process + """ + extra: str | None = None + failed_node: str | None = None + flags: list[Flag4] | None = None + group: str | None = None + het: Het | None = None + job_id: int | None = None + kill_request_user: str | None = None + licenses: str | None = None + mcs: Mcs | None = None + name: str | None = None + nodes: str | None = None + partition: str | None = None + priority: Uint32NoVal | None = None + qos: str | None = None + required: Required | None = None + reservation: Reservation | None = None + script: str | None = None + state: State | None = None + steps: StepList | None = None + submit_line: str | None = None + time: Time1 | None = None + tres: Tres3 | None = None + used_gres: str | None = None + user: str | None = None + wckey: WckeyTagStruct | None = None + """ + WCKey ID with tagging + """ + working_directory: str | None = None + + +class JobList(BaseModel): + __root__: list[Job] + + +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 + """ + + +class OpenapiUsersResp(BaseModel): + errors: OpenapiErrors | None = None + """ + Query errors + """ + meta: OpenapiMeta | None = None + """ + Slurm meta values + """ + users: UserList + """ + users + """ + warnings: OpenapiWarnings | None = None + """ + Query warnings + """ + + +class SharesRespMsg(BaseModel): + shares: AssocSharesObjList | None = None + """ + Assocation shares + """ + total_shares: int | None = None + """ + Total number of shares + """ -class GresFlags(Enum): - disable_binding = "disable-binding" - enforce_binding = "enforce-binding" - - -class OpenMode(Enum): - append = "append" - truncate = "truncate" - - -class Error(BaseModel): - error: Optional[str] = Field(None, description="error message") - errno: Optional[int] = Field(None, description="error number") - - -class JobProperties(BaseModel): - class Config: - use_enum_values = True - - account: Optional[str] = Field( - None, description="Charge resources used by this job to specified account." - ) - account_gather_freqency: Optional[str] = Field( - None, description="Define the job accounting and profiling sampling intervals." - ) - argv: Optional[List[str]] = Field(None, description="Arguments to the script.") - array: Optional[str] = Field( - None, - description="Submit a job array, multiple jobs to be executed with identical parameters. The indexes specification identifies what array index values should be used.", - ) - batch_features: Optional[str] = Field( - None, description="features required for batch script's node" - ) - begin_time: Optional[str] = Field( - None, - description="Submit the batch script to the Slurm controller immediately, like normal, but tell the controller to defer the allocation of the job until the specified time.", - ) - burst_buffer: Optional[str] = Field(None, description="Burst buffer specification.") - cluster_constraints: Optional[str] = Field( - None, - description="Specifies features that a federated cluster must have to have a sibling job submitted to it.", - ) - comment: Optional[str] = Field(None, description="An arbitrary comment.") - constraints: Optional[str] = Field( - None, description="node features required by job." - ) - core_specification: Optional[int] = Field( - None, - description="Count of specialized threads per node reserved by the job for system operations and not used by the application.", - ) - cores_per_socket: Optional[int] = Field( - None, - description="Restrict node selection to nodes with at least the specified number of cores per socket.", - ) - cpu_binding: Optional[str] = Field(None, description="Cpu binding") - cpu_binding_hint: Optional[str] = Field(None, description="Cpu binding hint") - cpu_frequency: Optional[str] = Field( - None, - description="Request that job steps initiated by srun commands inside this sbatch script be run at some requested frequency if possible, on the CPUs selected for the step on the compute node(s).", - ) - cpus_per_gpu: Optional[str] = Field( - None, description="Number of CPUs requested per allocated GPU." - ) - cpus_per_task: Optional[int] = Field( - None, - description="Advise the Slurm controller that ensuing job steps will require ncpus number of processors per task.", - ) - current_working_directory: Optional[str] = Field( - None, - description="Instruct Slurm to connect the batch script's standard output directly to the file name.", - ) - deadline: Optional[str] = Field( - None, - description="Remove the job if no ending is possible before this deadline (start > (deadline - time[-min])).", - ) - delay_boot: Optional[int] = Field( - None, - description="Do not reboot nodes in order to satisfied this job's feature specification if the job has been eligible to run for less than this time period.", - ) - dependency: Optional[str] = Field( - None, - description="Defer the start of this job until the specified dependencies have been satisfied completed.", - ) - distribution: Optional[str] = Field( - None, description="Specify alternate distribution methods for remote processes." - ) - environment: Dict[str, Any] = Field( - ..., description="Dictionary of environment entries." - ) - exclusive: Optional[Exclusive] = Field( - None, - description='The job allocation can share nodes just other users with the "user" option or with the "mcs" option).', - ) - get_user_environment: Optional[bool] = Field( - None, description="Load new login environment for user on job node." - ) - gres: Optional[str] = Field( - None, - description="Specifies a comma delimited list of generic consumable resources.", - ) - gres_flags: Optional[GresFlags] = Field( - None, description="Specify generic resource task binding options." - ) - gpu_binding: Optional[str] = Field( - None, description="Requested binding of tasks to GPU." - ) - gpu_frequency: Optional[str] = Field(None, description="Requested GPU frequency.") - gpus: Optional[str] = Field(None, description="GPUs per job.") - gpus_per_node: Optional[str] = Field(None, description="GPUs per node.") - gpus_per_socket: Optional[str] = Field(None, description="GPUs per socket.") - gpus_per_task: Optional[str] = Field(None, description="GPUs per task.") - hold: Optional[bool] = Field( - None, - description="Specify the job is to be submitted in a held state (priority of zero).", - ) - kill_on_invalid_dependency: Optional[bool] = Field( - None, - description="If a job has an invalid dependency, then Slurm is to terminate it.", - ) - licenses: Optional[str] = Field( - None, - description="Specification of licenses (or other resources available on all nodes of the cluster) which must be allocated to this job.", - ) - mail_type: Optional[str] = Field( - None, description="Notify user by email when certain event types occur." - ) - mail_user: Optional[str] = Field( - None, - description="User to receive email notification of state changes as defined by mail_type.", - ) - mcs_label: Optional[str] = Field( - None, description="This parameter is a group among the groups of the user." - ) - memory_binding: Optional[str] = Field(None, description="Bind tasks to memory.") - memory_per_cpu: Optional[int] = Field( - None, description="Minimum real memory per cpu (MB)." - ) - memory_per_gpu: Optional[int] = Field( - None, description="Minimum memory required per allocated GPU." - ) - memory_per_node: Optional[int] = Field( - None, description="Minimum real memory per node (MB)." - ) - minimum_cpus_per_node: Optional[int] = Field( - None, description="Minimum number of CPUs per node." - ) - minimum_nodes: Optional[bool] = Field( - None, - description="If a range of node counts is given, prefer the smaller count.", - ) - name: Optional[str] = Field( - None, description="Specify a name for the job allocation." - ) - nice: Optional[str] = Field( - None, - description="Run the job with an adjusted scheduling priority within Slurm.", - ) - no_kill: Optional[bool] = Field( - None, - description="Do not automatically terminate a job if one of the nodes it has been allocated fails.", - ) - nodes: Optional[List[int]] = Field( - None, - description="Request that a minimum of minnodes nodes and a maximum node count.", - max_items=2, - # min_items=1, XXX - min_items=2, - ) - open_mode: Optional[OpenMode] = Field( - "append", - description="Open the output and error files using append or truncate mode as specified.", - ) - partition: Optional[str] = Field( - None, description="Request a specific partition for the resource allocation." - ) - prefer: Optional[str] = Field( - None, - description="Comma delimited list of features for scheduler to prefer but not a strict requirement like a constraint. Value can be used for job submission but is only displayed for PENDING jobs.", - ) - priority: Optional[str] = Field( - None, description="Request a specific job priority." - ) - qos: Optional[str] = Field( - None, description="Request a quality of service for the job." - ) - requeue: Optional[bool] = Field( - None, - description="Specifies that the batch job should eligible to being requeue.", - ) - reservation: Optional[str] = Field( - None, description="Allocate resources for the job from the named reservation." - ) - signal: Optional[str] = Field( - None, - description="When a job is within sig_time seconds of its end time, send it the signal sig_num.", - regex="[B:][@]", - ) - sockets_per_node: Optional[int] = Field( - None, - description="Restrict node selection to nodes with at least the specified number of sockets.", - ) - spread_job: Optional[bool] = Field( - None, - description="Spread the job allocation over as many nodes as possible and attempt to evenly distribute tasks across the allocated nodes.", - ) - standard_error: Optional[str] = Field( - None, - description="Instruct Slurm to connect the batch script's standard error directly to the file name.", - ) - standard_in: Optional[str] = Field( - None, - description="Instruct Slurm to connect the batch script's standard input directly to the file name specified.", - ) - standard_out: Optional[str] = Field( - None, - description="Instruct Slurm to connect the batch script's standard output directly to the file name.", - ) - tasks: Optional[int] = Field( - None, - description="Advises the Slurm controller that job steps run within the allocation will launch a maximum of number tasks and to provide for sufficient resources.", - ) - tasks_per_core: Optional[int] = Field( - None, description="Request the maximum ntasks be invoked on each core." - ) - tasks_per_node: Optional[int] = Field( - None, description="Request the maximum ntasks be invoked on each node." - ) - tasks_per_socket: Optional[int] = Field( - None, description="Request the maximum ntasks be invoked on each socket." - ) - thread_specification: Optional[int] = Field( - None, - description="Count of specialized threads per node reserved by the job for system operations and not used by the application.", - ) - threads_per_core: Optional[int] = Field( - None, - description="Restrict node selection to nodes with at least the specified number of threads per core.", - ) - time_limit: Optional[int] = Field(None, description="Step time limit.") - time_minimum: Optional[int] = Field( - None, description="Minimum run time in minutes." - ) - wait_all_nodes: Optional[bool] = Field( - None, description="Do not begin execution until all nodes are ready for use." - ) - wckey: Optional[str] = Field(None, description="Specify wckey to be used with job.") - - -class JobSubmission(BaseModel): - script: str = Field( - ..., description="Executable script (full contents) to run in batch step" - ) - job: Optional[JobProperties] = Field( - None, description="Properties of an array job or non-HetJob" - ) - jobs: Optional[List[JobProperties]] = Field( - None, description="Properties of an HetJob" - ) - - -class JobSubmissionResponse(BaseModel): - errors: Optional[List[Error]] = Field(None, description="slurm errors") - job_id: Optional[int] = Field(None, description="new job ID") - step_id: Optional[str] = Field(None, description="new job step ID") - job_submit_user_msg: Optional[str] = Field( - None, description="Message to user from job_submit plugin" - ) - - -class NodeAllocation(BaseModel): - memory: Optional[int] = Field(None, description="amount of assigned job memory") - cpus: Optional[int] = Field(None, description="amount of assigned job CPUs") - sockets: Optional[Dict[str, Any]] = Field( - None, description="assignment status of each socket by socket id" - ) - cores: Optional[Dict[str, Any]] = Field( - None, description="assignment status of each core by core id" - ) - - -class JobResources(BaseModel): - nodes: Optional[str] = Field(None, description="list of assigned job nodes") - allocated_cpus: Optional[int] = Field( - None, description="number of assigned job cpus" - ) - allocated_hosts: Optional[int] = Field( - None, description="number of assigned job hosts" - ) - allocated_nodes: Optional[Dict[str, NodeAllocation]] = Field( - None, description="node allocations" - ) - - -class JobResponseProperties(BaseModel): - account: Optional[str] = Field( - None, description="Charge resources used by this job to specified account" - ) - accrue_time: Optional[str] = Field( - None, description="time job is eligible for running" - ) - admin_comment: Optional[str] = Field( - None, description="administrator's arbitrary comment" - ) - array_job_id: Optional[str] = Field( - None, description="job_id of a job array or 0 if N/A" - ) - array_task_id: Optional[str] = Field(None, description="task_id of a job array") - array_max_tasks: Optional[str] = Field( - None, description="Maximum number of running array tasks" - ) - array_task_string: Optional[str] = Field( - None, description="string expression of task IDs in this record" - ) - association_id: Optional[str] = Field(None, description="association id for job") - batch_features: Optional[str] = Field( - None, description="features required for batch script's node" - ) - batch_flag: Optional[bool] = Field( - None, description="if batch: queued job with script" - ) - batch_host: Optional[str] = Field( - None, description="name of host running batch script" - ) - flags: Optional[List[str]] = Field(None, description="Job flags") - burst_buffer: Optional[str] = Field(None, description="burst buffer specifications") - burst_buffer_state: Optional[str] = Field( - None, description="burst buffer state info" - ) - cluster: Optional[str] = Field( - None, description="name of cluster that the job is on" - ) - cluster_features: Optional[str] = Field( - None, description="comma separated list of required cluster features" - ) - command: Optional[str] = Field(None, description="command to be executed") - comment: Optional[str] = Field(None, description="arbitrary comment") - contiguous: Optional[bool] = Field( - None, description="job requires contiguous nodes" - ) - core_spec: Optional[str] = Field(None, description="specialized core count") - thread_spec: Optional[str] = Field(None, description="specialized thread count") - cores_per_socket: Optional[str] = Field( - None, description="cores per socket required by job" - ) - billable_tres: Optional[str] = Field(None, description="billable TRES") - cpus_per_task: Optional[str] = Field( - None, description="number of processors required for each task" - ) - cpu_frequency_minimum: Optional[str] = Field( - None, description="Minimum cpu frequency" - ) - cpu_frequency_maximum: Optional[str] = Field( - None, description="Maximum cpu frequency" - ) - cpu_frequency_governor: Optional[str] = Field( - None, description="cpu frequency governor" - ) - cpus_per_tres: Optional[str] = Field( - None, description="semicolon delimited list of TRES=# values" - ) - deadline: Optional[str] = Field(None, description="job start deadline ") - delay_boot: Optional[str] = Field(None, description="command to be executed") - dependency: Optional[str] = Field( - None, description="synchronize job execution with other jobs" - ) - derived_exit_code: Optional[str] = Field( - None, description="highest exit code of all job steps" - ) - eligible_time: Optional[str] = Field( - None, description="time job is eligible for running" - ) - end_time: Optional[str] = Field( - None, description="time of termination, actual or expected" - ) - excluded_nodes: Optional[str] = Field( - None, description="comma separated list of excluded nodes" - ) - exit_code: Optional[int] = Field(None, description="exit code for job") - features: Optional[str] = Field( - None, description="comma separated list of required features" - ) - federation_origin: Optional[str] = Field(None, description="Origin cluster's name") - federation_siblings_active: Optional[str] = Field( - None, description="string of active sibling names" - ) - federation_siblings_viable: Optional[str] = Field( - None, description="string of viable sibling names" - ) - gres_detail: Optional[List[str]] = Field(None, description="Job flags") - group_id: Optional[str] = Field(None, description="group job submitted as") - job_id: Optional[str] = Field(None, description="job ID") - job_resources: Optional[JobResources] = None - job_state: Optional[str] = Field(None, description="state of the job") - last_sched_evaluation: Optional[str] = Field( - None, description="last time job was evaluated for scheduling" - ) - licenses: Optional[str] = Field(None, description="licenses required by the job") - max_cpus: Optional[str] = Field( - None, description="maximum number of cpus usable by job" - ) - max_nodes: Optional[str] = Field( - None, description="maximum number of nodes usable by job" - ) - mcs_label: Optional[str] = Field(None, description="mcs_label if mcs plugin in use") - memory_per_tres: Optional[str] = Field( - None, description="semicolon delimited list of TRES=# values" - ) - name: Optional[str] = Field(None, description="name of the job") - nodes: Optional[str] = Field(None, description="list of nodes allocated to job") - nice: Optional[str] = Field(None, description="requested priority change") - tasks_per_core: Optional[str] = Field( - None, description="number of tasks to invoke on each core" - ) - tasks_per_socket: Optional[str] = Field( - None, description="number of tasks to invoke on each socket" - ) - tasks_per_board: Optional[str] = Field( - None, description="number of tasks to invoke on each board" - ) - cpus: Optional[str] = Field( - None, description="minimum number of cpus required by job" - ) - node_count: Optional[str] = Field( - None, description="minimum number of nodes required by job" - ) - tasks: Optional[str] = Field(None, description="requested task count") - het_job_id: Optional[str] = Field(None, description="job ID of hetjob leader") - het_job_id_set: Optional[str] = Field( - None, description="job IDs for all components" - ) - het_job_offset: Optional[str] = Field( - None, description="HetJob component offset from leader" - ) - partition: Optional[str] = Field(None, description="name of assigned partition") - memory_per_node: Optional[str] = Field( - None, description="minimum real memory per node" - ) - memory_per_cpu: Optional[str] = Field( - None, description="minimum real memory per cpu" - ) - minimum_cpus_per_node: Optional[str] = Field( - None, description="minimum # CPUs per node" - ) - minimum_tmp_disk_per_node: Optional[str] = Field( - None, description="minimum tmp disk per node" - ) - preempt_time: Optional[str] = Field(None, description="preemption signal time") - pre_sus_time: Optional[str] = Field( - None, description="time job ran prior to last suspend" - ) - priority: Optional[str] = Field(None, description="relative priority of the job") - profile: Optional[List[str]] = Field(None, description="Job profiling requested") - qos: Optional[str] = Field(None, description="Quality of Service") - reboot: Optional[bool] = Field( - None, description="node reboot requested before start" - ) - required_nodes: Optional[str] = Field( - None, description="comma separated list of required nodes" - ) - requeue: Optional[bool] = Field( - None, description="enable or disable job requeue option" - ) - resize_time: Optional[str] = Field(None, description="time of latest size change") - restart_cnt: Optional[str] = Field(None, description="count of job restarts") - resv_name: Optional[str] = Field(None, description="reservation name") - shared: Optional[str] = Field( - None, description="type and if job can share nodes with other jobs" - ) - show_flags: Optional[List[str]] = Field(None, description="details requested") - sockets_per_board: Optional[str] = Field( - None, description="sockets per board required by job" - ) - sockets_per_node: Optional[str] = Field( - None, description="sockets per node required by job" - ) - start_time: Optional[str] = Field( - None, description="time execution begins, actual or expected" - ) - state_description: Optional[str] = Field( - None, description="optional details for state_reason" - ) - state_reason: Optional[str] = Field( - None, description="reason job still pending or failed" - ) - standard_error: Optional[str] = Field( - None, description="pathname of job's stderr file" - ) - standard_input: Optional[str] = Field( - None, description="pathname of job's stdin file" - ) - standard_output: Optional[str] = Field( - None, description="pathname of job's stdout file" - ) - submit_time: Optional[str] = Field(None, description="time of job submission") - suspend_time: Optional[str] = Field( - None, description="time job last suspended or resumed" - ) - system_comment: Optional[str] = Field( - None, description="slurmctld's arbitrary comment" - ) - time_limit: Optional[str] = Field(None, description="maximum run time in minutes") - time_minimum: Optional[str] = Field(None, description="minimum run time in minutes") - threads_per_core: Optional[str] = Field( - None, description="threads per core required by job" - ) - tres_bind: Optional[str] = Field( - None, description="Task to TRES binding directives" - ) - tres_freq: Optional[str] = Field(None, description="TRES frequency directives") - tres_per_job: Optional[str] = Field( - None, description="semicolon delimited list of TRES=# values" - ) - tres_per_node: Optional[str] = Field( - None, description="semicolon delimited list of TRES=# values" - ) - tres_per_socket: Optional[str] = Field( - None, description="semicolon delimited list of TRES=# values" - ) - tres_per_task: Optional[str] = Field( - None, description="semicolon delimited list of TRES=# values" - ) - tres_req_str: Optional[str] = Field(None, description="tres reqeusted in the job") - tres_alloc_str: Optional[str] = Field(None, description="tres used in the job") - user_id: Optional[str] = Field(None, description="user id the job runs as") - user_name: Optional[str] = Field(None, description="user the job runs as") - wckey: Optional[str] = Field(None, description="wckey for job") - current_working_directory: Optional[str] = Field( - None, description="pathname of working directory" - ) - - -class JobsResponse(BaseModel): - errors: Optional[List[Error]] = Field(None, description="slurm errors") - jobs: Optional[List[JobResponseProperties]] = Field( - None, description="job descriptions" - ) +class OpenapiSharesResp(BaseModel): + errors: OpenapiErrors | None = None + """ + Query errors + """ + meta: OpenapiMeta | None = None + """ + Slurm meta values + """ + shares: SharesRespMsg + """ + fairshare info + """ + warnings: OpenapiWarnings | None = None + """ + Query warnings + """ diff --git a/tests/configuration/test_plugin_slurm.py b/tests/configuration/test_plugin_slurm.py index c24e298..7c087db 100644 --- a/tests/configuration/test_plugin_slurm.py +++ b/tests/configuration/test_plugin_slurm.py @@ -9,14 +9,14 @@ example: plugin: slurm url: http://example.com - api_version: v0.0.36 + api_version: v0.0.40 example-with-username-and-token: plugin: slurm url: http://example.com:1234 user: admin user_token: sometoken - api_version: v0.0.36 + api_version: v0.0.40 environments: live: @@ -46,7 +46,7 @@ def test_without_username(): assert isinstance(zc.slurm, dict) assert zc.slurm["url"] == "http://example.com" assert "user" not in zc.slurm - assert zc.slurm["api_version"] == "v0.0.36" + assert zc.slurm["api_version"] == "v0.0.40" def test_with_username(): @@ -56,7 +56,7 @@ def test_with_username(): assert isinstance(zc.slurm, dict) assert zc.slurm["url"] == "http://example.com:1234" assert zc.slurm["user"] == "admin" - assert zc.slurm["api_version"] == "v0.0.36" + assert zc.slurm["api_version"] == "v0.0.40" def test_user_token_from_external_file(tmp_path): @@ -69,7 +69,7 @@ def test_user_token_from_external_file(tmp_path): example: plugin: slurm url: http://example.com - api_version: v0.0.36 + api_version: v0.0.40 user_token: {user_token_file} environments: diff --git a/tests/util/test_slurm.py b/tests/util/test_slurm.py index 83e39ec..83526a2 100644 --- a/tests/util/test_slurm.py +++ b/tests/util/test_slurm.py @@ -12,7 +12,7 @@ def zocalo_configuration(mocker): "url": "http://slurm.example.com:1234", "user": "foo", "user_token": "sometoken", - "api_version": "v0.0.36", + "api_version": "v0.0.40", } return zc @@ -29,56 +29,205 @@ def jobs_response(): "errors": [], "jobs": [ { - "batch_host": "cs04r-sc-com13-01", - "flags": ["JOB_WAS_RUNNING"], + "account": "acc", + "accrue_time": {"infinite": False, "number": 0, "set": True}, + "admin_comment": "", + "allocating_node": "vse-200", + "array_job_id": {"infinite": False, "number": 6077609, "set": True}, + "array_max_tasks": {"infinite": False, "number": 2, "set": True}, + "array_task_id": {"infinite": False, "number": 41, "set": True}, + "array_task_string": "", + "association_id": 1845, + "batch_features": "", + "batch_flag": True, + "batch_host": "cma2-2", + "billable_tres": {"infinite": False, "number": 1.0, "set": True}, + "burst_buffer": "", + "burst_buffer_state": "", "cluster": "cluster", - "command": "bash", - "eligible_time": "1675327225", - "end_time": "1706863225", - "exit_code": 0, - "group_id": "12345", - "job_id": "129", + "cluster_features": "", + "command": "cjb_arch.sh", + "comment": "", + "container": "", + "container_id": "", + "contiguous": False, + "core_spec": 0, + "cores_per_socket": {"infinite": False, "number": 0, "set": False}, + "cpu_frequency_governor": { + "infinite": False, + "number": 0, + "set": False, + }, + "cpu_frequency_maximum": {"infinite": False, "number": 0, "set": False}, + "cpu_frequency_minimum": {"infinite": False, "number": 0, "set": False}, + "cpus": {"infinite": False, "number": 1, "set": True}, + "cpus_per_task": {"infinite": False, "number": 1, "set": True}, + "cpus_per_tres": "", + "cron": "", + "current_working_directory": "/home/acc", + "deadline": {"infinite": False, "number": 0, "set": True}, + "delay_boot": {"infinite": False, "number": 0, "set": True}, + "dependency": "", + "derived_exit_code": { + "return_code": {"infinite": False, "number": 0, "set": True}, + "signal": { + "id": {"infinite": False, "number": 0, "set": False}, + "name": "", + }, + "status": ["SUCCESS"], + }, + "eligible_time": {"infinite": False, "number": 1711534808, "set": True}, + "end_time": {"infinite": False, "number": 1712226008, "set": True}, + "excluded_nodes": "", + "exclusive": [], + "exit_code": { + "return_code": {"infinite": False, "number": 0, "set": True}, + "signal": { + "id": {"infinite": False, "number": 0, "set": False}, + "name": "", + }, + "status": ["SUCCESS"], + }, + "extra": "", + "failed_node": "", + "features": "", + "federation_origin": "", + "federation_siblings_active": "", + "federation_siblings_viable": "", + "flags": [ + "JOB_WAS_RUNNING", + "USING_DEFAULT_QOS", + "USING_DEFAULT_WCKEY", + ], + "gres_detail": [], + "group_id": 37524, + "group_name": "acc", + "het_job_id": {"infinite": False, "number": 0, "set": True}, + "het_job_id_set": "", + "het_job_offset": {"infinite": False, "number": 0, "set": True}, + "job_id": 6080221, "job_resources": { - "nodes": "cs04r-sc-com13-01", - "allocated_cpus": 1, + "allocated_cores": 1, + "allocated_cpus": 0, "allocated_hosts": 1, - "allocated_nodes": { - "0": { - "memory": 0, - "cpus": 1, - "sockets": {"0": "unassigned"}, - "cores": {"0": "unassigned"}, + "allocated_nodes": [ + { + "cpus_used": 0, + "memory_allocated": 9000, + "memory_used": 0, + "nodename": "cma2-02", + "sockets": {"0": {"cores": {"8": "allocated"}}}, } - }, + ], + "nodes": "cma2-02", + }, + "job_size_str": [], + "job_state": ["RUNNING"], + "last_sched_evaluation": { + "infinite": False, + "number": 1711534808, + "set": True, + }, + "licenses": "", + "mail_type": [], + "mail_user": "acc", + "max_cpus": {"infinite": False, "number": 0, "set": True}, + "max_nodes": {"infinite": False, "number": 0, "set": True}, + "maximum_switch_wait_time": 0, + "mcs_label": "", + "memory_per_cpu": {"infinite": False, "number": 9000, "set": True}, + "memory_per_node": {"infinite": False, "number": 0, "set": False}, + "memory_per_tres": "", + "minimum_cpus_per_node": {"infinite": False, "number": 1, "set": True}, + "minimum_switches": 0, + "minimum_tmp_disk_per_node": { + "infinite": False, + "number": 0, + "set": True, }, - "job_state": "RUNNING", - "last_sched_evaluation": "1675327225", - "max_cpus": "0", - "max_nodes": "0", - "name": "bash", - "nodes": "cs04r-sc-com13-01", - "tasks_per_board": "0", - "cpus": "1", - "node_count": "1", - "tasks": "1", - "partition": "wilson", - "minimum_cpus_per_node": "1", - "minimum_tmp_disk_per_node": "0", - "priority": "4294901730", + "name": "archive", + "network": "", + "nice": 0, + "node_count": {"infinite": False, "number": 1, "set": True}, + "nodes": "cma2-02", + "oversubscribe": True, + "partition": "cs", + "power": {"flags": []}, + "pre_sus_time": {"infinite": False, "number": 0, "set": True}, + "preempt_time": {"infinite": False, "number": 0, "set": True}, + "preemptable_time": {"infinite": False, "number": 0, "set": True}, + "prefer": "", + "priority": {"infinite": False, "number": 1, "set": True}, + "profile": ["NOT_SET"], "qos": "normal", - "start_time": "1675327225", - "submit_time": "1675327225", - "user_id": "123456", - "user_name": "foo", - "current_working_directory": "/home/foo", + "reboot": False, + "requeue": True, + "required_nodes": "", + "resize_time": {"infinite": False, "number": 0, "set": True}, + "restart_cnt": 0, + "resv_name": "", + "scheduled_nodes": "", + "selinux_context": "", + "shared": [], + "show_flags": ["ALL", "DETAIL", "LOCAL"], + "sockets_per_board": 0, + "sockets_per_node": {"infinite": False, "number": 0, "set": False}, + "standard_error": "archive_6077609-41.err", + "standard_input": "/dev/null", + "standard_output": "archive_6077609-41.out", + "start_time": {"infinite": False, "number": 1711534808, "set": True}, + "state_description": "", + "state_reason": "None", + "submit_time": {"infinite": False, "number": 1711533827, "set": True}, + "suspend_time": {"infinite": False, "number": 0, "set": True}, + "system_comment": "", + "tasks": {"infinite": False, "number": 1, "set": True}, + "tasks_per_board": {"infinite": False, "number": 0, "set": True}, + "tasks_per_core": {"infinite": True, "number": 0, "set": False}, + "tasks_per_node": {"infinite": False, "number": 0, "set": True}, + "tasks_per_socket": {"infinite": True, "number": 0, "set": False}, + "tasks_per_tres": {"infinite": False, "number": 0, "set": True}, + "thread_spec": 32766, + "threads_per_core": {"infinite": False, "number": 0, "set": False}, + "time_limit": {"infinite": False, "number": 11520, "set": True}, + "time_minimum": {"infinite": False, "number": 0, "set": True}, + "tres_alloc_str": "cpu=1,mem=9000M,node=1,billing=1", + "tres_bind": "", + "tres_freq": "", + "tres_per_job": "", + "tres_per_node": "", + "tres_per_socket": "", + "tres_per_task": "", + "tres_req_str": "cpu=1,mem=9000M,node=1,billing=1", + "user_id": 37524, + "user_name": "acc", + "wckey": "", } ], + "last_backfill": {"infinite": False, "number": 1711536308, "set": True}, + "last_update": {"infinite": False, "number": 1711536388, "set": True}, + "meta": { + "client": {"group": "root", "source": "[localhost]:51114", "user": "root"}, + "command": [], + "plugin": { + "accounting_storage": "acc_st/slurmdbd", + "data_parser": "data_parser/v0.0.40", + "name": "Slurm OpenAPI slurmctld", + "type": "openapi/slurmctld", + }, + "slurm": { + "cluster": "cluster", + "release": "23.11.1", + "version": {"major": "23", "micro": "1", "minor": "11"}, + }, + }, + "warnings": [], } def test_get_slurm_api_from_zocalo_configuration(slurm_api): assert slurm_api.url == "http://slurm.example.com:1234" - assert slurm_api.version == "v0.0.36" + assert slurm_api.version == "v0.0.40" assert slurm_api.user_name == "foo" assert slurm_api.user_token == "sometoken" @@ -88,7 +237,7 @@ def test_get_slurm_api_user_token_external_file(tmp_path): user_token_file.write_text("foobar") api = slurm.SlurmRestApi( url="http://slurm.example.com:1234", - version="v0.0.36", + version="v0.0.40", user_name="foo", user_token=user_token_file, ) @@ -97,15 +246,21 @@ def test_get_slurm_api_user_token_external_file(tmp_path): def test_get_jobs(requests_mock, slurm_api, jobs_response): requests_mock.get( - "/slurm/v0.0.36/jobs", + "/slurm/v0.0.40/jobs", json=jobs_response, ) - assert slurm_api.get_jobs() == slurm.models.JobsResponse(**jobs_response) + assert slurm_api.get_jobs() == slurm.models.OpenapiJobInfoResp(**jobs_response) def test_get_job_info(requests_mock, slurm_api, jobs_response): requests_mock.get( - "/slurm/v0.0.36/job/129", + "/slurm/v0.0.40/job/129", json=jobs_response, ) - assert slurm_api.get_job_info(129) == slurm.models.JobsResponse(**jobs_response) + assert slurm_api.get_job_info(129) == next( + iter( + dict(slurm.models.OpenapiJobInfoResp(**jobs_response).jobs).get( + "__root__", [] + ) + ) + ) From 3ca2d458eb59a56d28b95308c905ddc660889017 Mon Sep 17 00:00:00 2001 From: Irakli Sikharulidze Date: Wed, 27 Mar 2024 13:17:59 +0000 Subject: [PATCH 2/3] Fix syntax for python 3.8 compatibility --- src/zocalo/util/slurm/models.py | 2038 +++++++++++++++---------------- 1 file changed, 1019 insertions(+), 1019 deletions(-) diff --git a/src/zocalo/util/slurm/models.py b/src/zocalo/util/slurm/models.py index 3e1964e..70743b8 100644 --- a/src/zocalo/util/slurm/models.py +++ b/src/zocalo/util/slurm/models.py @@ -1,11 +1,11 @@ # generated by datamodel-codegen: -# filename: slurm-rest.yaml -# timestamp: 2024-03-12T17:33:00+00:00 +# filename: wilson-slurm-rest38.yaml +# timestamp: 2024-03-27T13:12:29+00:00 from __future__ import annotations from enum import Enum -from typing import List +from typing import List, Optional from pydantic import BaseModel, Field @@ -15,30 +15,30 @@ class Flag(Enum): class AccountShort(BaseModel): - description: str | None = None + description: Optional[str] = None """ An arbitrary string describing an account """ - organization: str | None = None + organization: Optional[str] = None """ Organization to which the account belongs """ class Allocated(BaseModel): - seconds: int | None = None + seconds: Optional[int] = None class Default(BaseModel): - qos: str | None = None + qos: Optional[str] = None class Fairshare(BaseModel): - factor: float | None = None + factor: Optional[float] = None """ fairshare factor """ - level: float | None = None + level: Optional[float] = None """ fairshare factor at this level. stored on an assoc as a long double, but that is not needed for display in sshare """ @@ -50,19 +50,19 @@ class TypeEnum(Enum): class AssocShort(BaseModel): - account: str | None = None + account: Optional[str] = None """ Association account (if assigned) """ - cluster: str | None = None + cluster: Optional[str] = None """ Association cluster (if assigned) """ - id: int | None = None + id: Optional[int] = None """ Numeric Association ID (if known) """ - partition: str | None = None + partition: Optional[str] = None """ Association partition (if assigned) """ @@ -77,21 +77,21 @@ class AssocShortList(BaseModel): class BfExitFields(BaseModel): - bf_max_job_start: int | None = None - bf_max_job_test: int | None = None - bf_max_time: int | None = None - bf_node_space_size: int | None = None - end_job_queue: int | None = None - state_changed: int | None = None + bf_max_job_start: Optional[int] = None + bf_max_job_test: Optional[int] = None + bf_max_time: Optional[int] = None + bf_node_space_size: Optional[int] = None + end_job_queue: Optional[int] = None + state_changed: Optional[int] = None class Associations(BaseModel): - root: AssocShort | None = None + root: Optional[AssocShort] = None class Controller(BaseModel): - host: str | None = None - port: int | None = None + host: Optional[str] = None + port: Optional[int] = None class Flag2(Enum): @@ -104,10 +104,10 @@ class Flag2(Enum): class ControllerPing(BaseModel): - hostname: str | None = None - latency: int | None = None - mode: str | None = None - pinged: str | None = None + hostname: Optional[str] = None + latency: Optional[int] = None + mode: Optional[str] = None + pinged: Optional[str] = None class ControllerPingArray(BaseModel): @@ -115,7 +115,7 @@ class ControllerPingArray(BaseModel): class Coord(BaseModel): - direct: bool | None = None + direct: Optional[bool] = None name: str @@ -132,20 +132,20 @@ class Flag3(Enum): class Line(BaseModel): - end: int | None = None - start: int | None = None + end: Optional[int] = None + start: Optional[int] = None class CronEntry(BaseModel): - command: str | None = None - day_of_month: str | None = None - day_of_week: str | None = None - flags: list[Flag3] | None = None - hour: str | None = None - line: Line | None = None - minute: str | None = None - month: str | None = None - specification: str | None = None + command: Optional[str] = None + day_of_month: Optional[str] = None + day_of_week: Optional[str] = None + flags: Optional[list[Flag3]] = None + hour: Optional[str] = None + line: Optional[Line] = None + minute: Optional[str] = None + month: Optional[str] = None + specification: Optional[str] = None class CsvString(BaseModel): @@ -157,15 +157,15 @@ class Float64NoVal(BaseModel): 64 bit floating point number with flags """ - infinite: bool | None = False + infinite: Optional[bool] = False """ True if number has been set to infinite. "set" and "number" will be ignored. """ - number: float | None = None + number: Optional[float] = None """ If set is True the number will be set with value. Otherwise ignore number contents. """ - set: bool | None = False + set: Optional[bool] = False """ True if number has been set. False if number is unset """ @@ -180,17 +180,17 @@ class HostlistString(BaseModel): class Time(BaseModel): - time_end: int | None = None - time_start: int | None = None + time_end: Optional[int] = None + time_start: Optional[int] = None class Instance(BaseModel): - cluster: str | None = None - extra: str | None = None - instance_id: str | None = None - instance_type: str | None = None - node_name: str | None = None - time: Time | None = None + cluster: Optional[str] = None + extra: Optional[str] = None + instance_id: Optional[str] = None + instance_type: Optional[str] = None + node_name: Optional[str] = None + time: Optional[Time] = None class InstanceList(BaseModel): @@ -198,21 +198,21 @@ class InstanceList(BaseModel): class Running(BaseModel): - tasks: int | None = None + tasks: Optional[int] = None class Max1(BaseModel): - running: Running | None = None + running: Optional[Running] = None class Limits(BaseModel): - max: Max1 | None = None + max: Optional[Max1] = None class Comment(BaseModel): - administrator: str | None = None - job: str | None = None - system: str | None = None + administrator: Optional[str] = None + job: Optional[str] = None + system: Optional[str] = None class Flag4(Enum): @@ -226,12 +226,12 @@ class Flag4(Enum): class Mcs(BaseModel): - label: str | None = None + label: Optional[str] = None class Reservation(BaseModel): - id: int | None = None - name: str | None = None + id: Optional[int] = None + name: Optional[str] = None class CurrentEnum(Enum): @@ -266,43 +266,43 @@ class CurrentEnum(Enum): class State(BaseModel): - current: list[CurrentEnum] | None = None - reason: str | None = None + current: Optional[list[CurrentEnum]] = None + reason: Optional[str] = None class System(BaseModel): - microseconds: int | None = None - seconds: int | None = None + microseconds: Optional[int] = None + seconds: Optional[int] = None class Total(BaseModel): - microseconds: int | None = None - seconds: int | None = None + microseconds: Optional[int] = None + seconds: Optional[int] = None class User(BaseModel): - microseconds: int | None = None - seconds: int | None = None + microseconds: Optional[int] = None + seconds: Optional[int] = None class JobArrayResponseMsgEntry(BaseModel): - error: str | None = None + error: Optional[str] = None """ Verbose update status or error """ - error_code: int | None = None + error_code: Optional[int] = None """ Verbose update status or error """ - job_id: int | None = None + job_id: Optional[int] = None """ JobId for updated Job """ - step_id: str | None = None + step_id: Optional[str] = None """ StepId for updated Job """ - why: str | None = None + why: Optional[str] = None """ Update response message """ @@ -473,7 +473,7 @@ class Flag7(Enum): class Power(BaseModel): - flags: list[Flag7] | None = None + flags: Optional[list[Flag7]] = None class ShowFlag(Enum): @@ -502,23 +502,23 @@ class JobResNodes(BaseModel): class JobSubmitResponseMsg(BaseModel): - error: str | None = None - error_code: int | None = None - job_id: int | None = None - job_submit_user_msg: str | None = None - step_id: str | None = None + error: Optional[str] = None + error_code: Optional[int] = None + job_id: Optional[int] = None + job_submit_user_msg: Optional[str] = None + step_id: Optional[str] = None class License(BaseModel): - Free: int | None = None - LastConsumed: int | None = None - LastDeficit: int | None = None - LastUpdate: int | None = None - LicenseName: str | None = None - Remote: bool | None = None - Reserved: int | None = None - Total: int | None = None - Used: int | None = None + Free: Optional[int] = None + LastConsumed: Optional[int] = None + LastDeficit: Optional[int] = None + LastUpdate: Optional[int] = None + LicenseName: Optional[str] = None + Remote: Optional[bool] = None + Reserved: Optional[int] = None + Total: Optional[int] = None + Used: Optional[int] = None class Licenses(BaseModel): @@ -594,19 +594,19 @@ class StateEnum(Enum): class OpenapiError(BaseModel): - description: str | None = None + description: Optional[str] = None """ Long form error description """ - error: str | None = None + error: Optional[str] = None """ Short form error description """ - error_number: int | None = None + error_number: Optional[int] = None """ Slurm numeric error identifier """ - source: str | None = None + source: Optional[str] = None """ Source of error or where error was first detected """ @@ -617,72 +617,72 @@ class OpenapiErrors(BaseModel): class Client(BaseModel): - group: str | None = None + group: Optional[str] = None """ Client group (if known) """ - source: str | None = None + source: Optional[str] = None """ Client source description """ - user: str | None = None + user: Optional[str] = None """ Client user (if known) """ class Plugin(BaseModel): - accounting_storage: str | None = None + accounting_storage: Optional[str] = None """ Slurm accounting plugin """ - data_parser: str | None = None + data_parser: Optional[str] = None """ Slurm data_parser plugin """ - name: str | None = None + name: Optional[str] = None """ Slurm plugin name (if applicable) """ - type: str | None = None + type: Optional[str] = None """ Slurm plugin type (if applicable) """ class Version(BaseModel): - major: str | None = None + major: Optional[str] = None """ Slurm release major version """ - micro: str | None = None + micro: Optional[str] = None """ Slurm release micro version """ - minor: str | None = None + minor: Optional[str] = None """ Slurm release minor version """ class Slurm(BaseModel): - cluster: str | None = None + cluster: Optional[str] = None """ Slurm cluster name """ - release: str | None = None + release: Optional[str] = None """ Slurm release string """ - version: Version | None = None + version: Optional[Version] = None class OpenapiWarning(BaseModel): - description: str | None = None + description: Optional[str] = None """ Long form warning description """ - source: str | None = None + source: Optional[str] = None """ Source of warning or where warning was first detected """ @@ -693,17 +693,17 @@ class OpenapiWarnings(BaseModel): class Accounts(BaseModel): - allowed: str | None = None - deny: str | None = None + allowed: Optional[str] = None + deny: Optional[str] = None class Cpus(BaseModel): - task_binding: int | None = None - total: int | None = None + task_binding: Optional[int] = None + total: Optional[int] = None class Groups(BaseModel): - allowed: str | None = None + allowed: Optional[str] = None class Flag8(Enum): @@ -711,18 +711,18 @@ class Flag8(Enum): class Oversubscribe(BaseModel): - flags: list[Flag8] | None = None - jobs: int | None = None + flags: Optional[list[Flag8]] = None + jobs: Optional[int] = None class Minimums(BaseModel): - nodes: int | None = None + nodes: Optional[int] = None class Nodes1(BaseModel): - allowed_allocation: str | None = None - configured: str | None = None - total: int | None = None + allowed_allocation: Optional[str] = None + configured: Optional[str] = None + total: Optional[int] = None class StateEnum1(Enum): @@ -734,23 +734,23 @@ class StateEnum1(Enum): class Partition(BaseModel): - state: list[StateEnum1] | None = None + state: Optional[list[StateEnum1]] = None class Priority(BaseModel): - job_factor: int | None = None - tier: int | None = None + job_factor: Optional[int] = None + tier: Optional[int] = None class Qos(BaseModel): - allowed: str | None = None - assigned: str | None = None - deny: str | None = None + allowed: Optional[str] = None + assigned: Optional[str] = None + deny: Optional[str] = None class Tres4(BaseModel): - billing_weights: str | None = None - configured: str | None = None + billing_weights: Optional[str] = None + configured: Optional[str] = None class StatusEnum(Enum): @@ -803,8 +803,8 @@ class QosStringIdList(BaseModel): class ReservationCoreSpec(BaseModel): - core: str | None = None - node: str | None = None + core: Optional[str] = None + node: Optional[str] = None class Flag10(Enum): @@ -863,27 +863,27 @@ class RollupStat(BaseModel): recorded rollup statistics """ - last_run: int | None = Field(None, alias="last run") + last_run: Optional[int] = Field(None, alias="last run") """ Last time rollup ran (UNIX timestamp) """ - max_cycle: int | None = None + max_cycle: Optional[int] = None """ longest rollup time (seconds) """ - mean_cycles: int | None = None + mean_cycles: Optional[int] = None """ average time for rollup (seconds) """ - total_cycles: int | None = None + total_cycles: Optional[int] = None """ number of rollups since last_run """ - total_time: int | None = None + total_time: Optional[int] = None """ total time spent doing rollups (seconds) """ - type: Type | None = None + type: Optional[Type] = None """ type """ @@ -901,20 +901,20 @@ class RollupStats(BaseModel): class ScheduleExitFields(BaseModel): - default_queue_depth: int | None = None - end_job_queue: int | None = None - licenses: int | None = None - max_job_start: int | None = None - max_rpc_cnt: int | None = None - max_sched_time: int | None = None + default_queue_depth: Optional[int] = None + end_job_queue: Optional[int] = None + licenses: Optional[int] = None + max_job_start: Optional[int] = None + max_rpc_cnt: Optional[int] = None + max_sched_time: Optional[int] = None class SharesFloat128Tres(BaseModel): - name: str | None = None + name: Optional[str] = None """ TRES name """ - value: float | None = None + value: Optional[float] = None """ TRES value """ @@ -929,23 +929,23 @@ class StatsMsgRpcsByTypeItem(BaseModel): RPC """ - average_time: int | None = None + average_time: Optional[int] = None """ Average time spent processing RPC in seconds """ - count: int | None = None + count: Optional[int] = None """ Number of RPCs received """ - message_type: str | None = None + message_type: Optional[str] = None """ Message type as string """ - total_time: int | None = None + total_time: Optional[int] = None """ Total time spent processing RPC in seconds """ - type_id: int | None = None + type_id: Optional[int] = None """ Message type as integer """ @@ -967,23 +967,23 @@ class StatsMsgRpcsByUserItem(BaseModel): user """ - average_time: int | None = None + average_time: Optional[int] = None """ Average time spent processing RPC in seconds """ - count: int | None = None + count: Optional[int] = None """ Number of RPCs received """ - total_time: int | None = None + total_time: Optional[int] = None """ Total time spent processing RPC in seconds """ - user: str | None = None + user: Optional[str] = None """ user name """ - user_id: int | None = None + user_id: Optional[int] = None """ user id (numeric) """ @@ -1001,14 +1001,14 @@ class StatsMsgRpcsByUser(BaseModel): class Time2(BaseModel): - average: int | None = None - total: int | None = None + average: Optional[int] = None + total: Optional[int] = None class StatsRpc(BaseModel): - count: int | None = None - rpc: str | None = None - time: Time2 | None = None + count: Optional[int] = None + rpc: Optional[str] = None + time: Optional[Time2] = None class StatsRpcList(BaseModel): @@ -1016,9 +1016,9 @@ class StatsRpcList(BaseModel): class StatsUser(BaseModel): - count: int | None = None - time: Time2 | None = None - user: str | None = None + count: Optional[int] = None + time: Optional[Time2] = None + user: Optional[str] = None class StatsUserList(BaseModel): @@ -1026,9 +1026,9 @@ class StatsUserList(BaseModel): class Nodes2(BaseModel): - count: int | None = None - list: Hostlist | None = None - range: str | None = None + count: Optional[int] = None + list: Optional[Hostlist] = None + range: Optional[str] = None class StateEnum2(Enum): @@ -1063,23 +1063,23 @@ class StateEnum2(Enum): class CPU1(BaseModel): - actual_frequency: int | None = None + actual_frequency: Optional[int] = None class Step1(BaseModel): - id: str | None = None + id: Optional[str] = None """ Slurm Job StepId """ - name: str | None = None + name: Optional[str] = None class Task(BaseModel): - distribution: str | None = None + distribution: Optional[str] = None class Tasks(BaseModel): - count: int | None = None + count: Optional[int] = None class StringArray(BaseModel): @@ -1091,9 +1091,9 @@ class StringList(BaseModel): class Tres(BaseModel): - count: int | None = None - id: int | None = None - name: str | None = None + count: Optional[int] = None + id: Optional[int] = None + name: Optional[str] = None type: str @@ -1106,15 +1106,15 @@ class Uint16NoVal(BaseModel): Integer number with flags """ - infinite: bool | None = False + infinite: Optional[bool] = False """ True if number has been set to infinite. "set" and "number" will be ignored. """ - number: int | None = None + number: Optional[int] = None """ If set is True the number will be set with value. Otherwise ignore number contents. """ - set: bool | None = False + set: Optional[bool] = False """ True if number has been set. False if number is unset """ @@ -1125,15 +1125,15 @@ class Uint32NoVal(BaseModel): Integer number with flags """ - infinite: bool | None = False + infinite: Optional[bool] = False """ True if number has been set to infinite. "set" and "number" will be ignored. """ - number: int | None = None + number: Optional[int] = None """ If set is True the number will be set with value. Otherwise ignore number contents. """ - set: bool | None = False + set: Optional[bool] = False """ True if number has been set. False if number is unset """ @@ -1144,15 +1144,15 @@ class Uint64NoVal(BaseModel): Integer number with flags """ - infinite: bool | None = False + infinite: Optional[bool] = False """ True if number has been set to infinite. "set" and "number" will be ignored. """ - number: int | None = None + number: Optional[int] = None """ If set is True the number will be set with value. Otherwise ignore number contents. """ - set: bool | None = False + set: Optional[bool] = False """ True if number has been set. False if number is unset """ @@ -1193,59 +1193,59 @@ class StateEnum3(Enum): class UpdateNodeMsg(BaseModel): - address: HostlistString | None = None + address: Optional[HostlistString] = None """ communication name """ - comment: str | None = None + comment: Optional[str] = None """ arbitrary comment """ - cpu_bind: int | None = None + cpu_bind: Optional[int] = None """ default CPU binding type """ - extra: str | None = None + extra: Optional[str] = None """ arbitrary string """ - features: CsvString | None = None + features: Optional[CsvString] = None """ new available feature for node """ - features_act: CsvString | None = None + features_act: Optional[CsvString] = None """ new active feature for node """ - gres: str | None = None + gres: Optional[str] = None """ new generic resources for node """ - hostname: HostlistString | None = None + hostname: Optional[HostlistString] = None """ node's hostname """ - name: HostlistString | None = None + name: Optional[HostlistString] = None """ node to update """ - reason: str | None = None + reason: Optional[str] = None """ reason for node being DOWN or DRAINING """ - reason_uid: str | None = None + reason_uid: Optional[str] = None """ user ID of sending (needed if user root is sending message) """ - resume_after: Uint32NoVal | None = None + resume_after: Optional[Uint32NoVal] = None """ automatically resume DOWN or DRAINED node after this amount of seconds """ - state: list[StateEnum3] | None = None + state: Optional[list[StateEnum3]] = None """ assign new node state """ - weight: Uint32NoVal | None = None + weight: Optional[Uint32NoVal] = None """ new weight for node """ @@ -1259,8 +1259,8 @@ class AdministratorLevelEnum(Enum): class Default1(BaseModel): - account: str | None = None - wckey: str | None = None + account: Optional[str] = None + wckey: Optional[str] = None class Flag11(Enum): @@ -1276,15 +1276,15 @@ class AdminlevelEnum(Enum): class UserShort(BaseModel): - adminlevel: list[AdminlevelEnum] | None = None + adminlevel: Optional[list[AdminlevelEnum]] = None """ Admin level of user. Valid levels are None, Operator, and Admin. """ - defaultaccount: str | None = None + defaultaccount: Optional[str] = None """ Identify the default bank account name to be used for a job if none is specified at submission time. """ - defaultwckey: str | None = None + defaultwckey: Optional[str] = None """ Identify the default Workload Characterization Key. """ @@ -1310,10 +1310,10 @@ class WckeyTagStruct(BaseModel): class Account(BaseModel): - associations: AssocShortList | None = None - coordinators: CoordList | None = None + associations: Optional[AssocShortList] = None + coordinators: Optional[CoordList] = None description: str - flags: list[Flag] | None = None + flags: Optional[list[Flag]] = None name: str organization: str @@ -1323,10 +1323,10 @@ class AccountList(BaseModel): class Accounting(BaseModel): - TRES: Tres | None = None - allocated: Allocated | None = None - id: int | None = None - start: int | None = None + TRES: Optional[Tres] = None + allocated: Optional[Allocated] = None + id: Optional[int] = None + start: Optional[int] = None class AccountingList(BaseModel): @@ -1334,104 +1334,104 @@ class AccountingList(BaseModel): class AcctGatherEnergy(BaseModel): - average_watts: int | None = None - base_consumed_energy: int | None = None - consumed_energy: int | None = None - current_watts: Uint32NoVal | None = None - last_collected: int | None = None - previous_consumed_energy: int | None = None + average_watts: Optional[int] = None + base_consumed_energy: Optional[int] = None + consumed_energy: Optional[int] = None + current_watts: Optional[Uint32NoVal] = None + last_collected: Optional[int] = None + previous_consumed_energy: Optional[int] = None class Per(BaseModel): - accruing: Uint32NoVal | None = None - count: Uint32NoVal | None = None - submitted: Uint32NoVal | None = None - wall_clock: Uint32NoVal | None = None + accruing: Optional[Uint32NoVal] = None + count: Optional[Uint32NoVal] = None + submitted: Optional[Uint32NoVal] = None + wall_clock: Optional[Uint32NoVal] = None class Jobs(BaseModel): - accruing: Uint32NoVal | None = None - active: Uint32NoVal | None = None - per: Per | None = None - total: Uint32NoVal | None = None + accruing: Optional[Uint32NoVal] = None + active: Optional[Uint32NoVal] = None + per: Optional[Per] = None + total: Optional[Uint32NoVal] = None class Account1(BaseModel): - wall_clock: Uint32NoVal | None = None + wall_clock: Optional[Uint32NoVal] = None class Per1(BaseModel): - account: Account1 | None = None + account: Optional[Account1] = None class Group(BaseModel): - active: TresList | None = None - minutes: TresList | None = None + active: Optional[TresList] = None + minutes: Optional[TresList] = None class Per2(BaseModel): - job: TresList | None = None + job: Optional[TresList] = None class Minutes(BaseModel): - per: Per2 | None = None - total: TresList | None = None + per: Optional[Per2] = None + total: Optional[TresList] = None class Per3(BaseModel): - job: TresList | None = None - node: TresList | None = None + job: Optional[TresList] = None + node: Optional[TresList] = None class Tres1(BaseModel): - group: Group | None = None - minutes: Minutes | None = None - per: Per3 | None = None - total: TresList | None = None + group: Optional[Group] = None + minutes: Optional[Minutes] = None + per: Optional[Per3] = None + total: Optional[TresList] = None class Max(BaseModel): - jobs: Jobs | None = None - per: Per1 | None = None - tres: Tres1 | None = None + jobs: Optional[Jobs] = None + per: Optional[Per1] = None + tres: Optional[Tres1] = None class Min(BaseModel): - priority_threshold: Uint32NoVal | None = None + priority_threshold: Optional[Uint32NoVal] = None class Assoc(BaseModel): - account: str | None = None - accounting: AccountingList | None = None + account: Optional[str] = None + accounting: Optional[AccountingList] = None """ Usage accounting """ - cluster: str | None = None - comment: str | None = None + cluster: Optional[str] = None + comment: Optional[str] = None """ comment for the association """ - default: Default | None = None - flags: list[Flag] | None = None - id: AssocShort | None = None + default: Optional[Default] = None + flags: Optional[list[Flag]] = None + id: Optional[AssocShort] = None """ Association ID """ - is_default: bool | None = None - lineage: str | None = None + is_default: Optional[bool] = None + lineage: Optional[str] = None """ Complete path up the hierarchy to the root association """ - max: Max | None = None - min: Min | None = None - parent_account: str | None = None - partition: str | None = None - priority: Uint32NoVal | None = None - qos: QosStringIdList | None = None + max: Optional[Max] = None + min: Optional[Min] = None + parent_account: Optional[str] = None + partition: Optional[str] = None + priority: Optional[Uint32NoVal] = None + qos: Optional[QosStringIdList] = None """ List of QOS names """ - shares_raw: int | None = None + shares_raw: Optional[int] = None user: str @@ -1440,102 +1440,102 @@ class AssocList(BaseModel): class AssocRecSet(BaseModel): - comment: str | None = None + comment: Optional[str] = None """ Comment for the association """ - defaultqos: str | None = None + defaultqos: Optional[str] = None """ Which QOS id is this association default """ - fairshare: int | None = None + fairshare: Optional[int] = None """ Number of shares allocated to this association """ - grpjobs: Uint32NoVal | None = None + grpjobs: Optional[Uint32NoVal] = None """ Max number of jobs the underlying group of associations can run at one time """ - grpjobsaccrue: Uint32NoVal | None = None + grpjobsaccrue: Optional[Uint32NoVal] = None """ Max number of jobs the underlying group of associations can have accruing priority at one time """ - grpsubmitjobs: Uint32NoVal | None = None + grpsubmitjobs: Optional[Uint32NoVal] = None """ Max number of jobs the underlying group of associations can submit at one time """ - grptres: TresList | None = None - grptresmins: TresList | None = None + grptres: Optional[TresList] = None + grptresmins: Optional[TresList] = None """ Max number of cpu minutes the underlying group of associations can run for """ - grptresrunmins: TresList | None = None + grptresrunmins: Optional[TresList] = None """ Max number of cpu minutes the underlying group of associations can having running at one time """ - grpwall: Uint32NoVal | None = None + grpwall: Optional[Uint32NoVal] = None """ Total time in minutes the underlying group of associations can run for """ - maxjobs: Uint32NoVal | None = None + maxjobs: Optional[Uint32NoVal] = None """ Max number of jobs this association can run at one time """ - maxjobsaccrue: Uint32NoVal | None = None + maxjobsaccrue: Optional[Uint32NoVal] = None """ Max number of jobs this association can have accruing priority time """ - maxsubmitjobs: Uint32NoVal | None = None + maxsubmitjobs: Optional[Uint32NoVal] = None """ Max number of jobs that can be submitted by association """ - maxtresminsperjob: TresList | None = None + maxtresminsperjob: Optional[TresList] = None """ Max number of cpu minutes this association can have per job """ - maxtresperjob: TresList | None = None + maxtresperjob: Optional[TresList] = None """ Max number of cpus this association can allocate per job """ - maxtrespernode: TresList | None = None + maxtrespernode: Optional[TresList] = None """ Max number of TRES this association can allocate per node """ - maxtresrunmins: TresList | None = None + maxtresrunmins: Optional[TresList] = None """ Max number of cpu minutes this association can having running at one time """ - maxwalldurationperjob: Uint32NoVal | None = None + maxwalldurationperjob: Optional[Uint32NoVal] = None """ Longest time this association can run a job """ - minpriothresh: Uint32NoVal | None = None + minpriothresh: Optional[Uint32NoVal] = None """ Don't reserve resources for pending jobs unless they have a priority equal to or higher than this """ - parent: str | None = None + parent: Optional[str] = None """ Name of parent account """ - priority: Uint32NoVal | None = None + priority: Optional[Uint32NoVal] = None """ Association priority """ - qoslevel: QosStringIdList | None = None + qoslevel: Optional[QosStringIdList] = None """ List of QOS names """ class ClusterRec(BaseModel): - associations: Associations | None = None - controller: Controller | None = None - flags: list[Flag2] | None = None - name: str | None = None - nodes: str | None = None - rpc_version: int | None = None - select_plugin: str | None = None - tres: TresList | None = None + associations: Optional[Associations] = None + controller: Optional[Controller] = None + flags: Optional[list[Flag2]] = None + name: Optional[str] = None + nodes: Optional[str] = None + rpc_version: Optional[int] = None + select_plugin: Optional[str] = None + tres: Optional[TresList] = None class ClusterRecList(BaseModel): @@ -1543,46 +1543,46 @@ class ClusterRecList(BaseModel): class ExtSensorsData(BaseModel): - consumed_energy: Uint64NoVal | None = None - current_watts: int | None = None - energy_update_time: int | None = None - temperature: Uint32NoVal | None = None + consumed_energy: Optional[Uint64NoVal] = None + current_watts: Optional[int] = None + energy_update_time: Optional[int] = None + temperature: Optional[Uint32NoVal] = None class Array(BaseModel): - job_id: int | None = None - limits: Limits | None = None - task: str | None = None - task_id: Uint32NoVal | None = None + job_id: Optional[int] = None + limits: Optional[Limits] = None + task: Optional[str] = None + task_id: Optional[Uint32NoVal] = None class Het(BaseModel): - job_id: int | None = None - job_offset: Uint32NoVal | None = None + job_id: Optional[int] = None + job_offset: Optional[Uint32NoVal] = None class Required(BaseModel): - CPUs: int | None = None - memory_per_cpu: Uint64NoVal | None = None - memory_per_node: Uint64NoVal | None = None + CPUs: Optional[int] = None + memory_per_cpu: Optional[Uint64NoVal] = None + memory_per_node: Optional[Uint64NoVal] = None class Time1(BaseModel): - elapsed: int | None = None - eligible: int | None = None - end: int | None = None - limit: Uint32NoVal | None = None - start: int | None = None - submission: int | None = None - suspended: int | None = None - system: System | None = None - total: Total | None = None - user: User | None = None + elapsed: Optional[int] = None + eligible: Optional[int] = None + end: Optional[int] = None + limit: Optional[Uint32NoVal] = None + start: Optional[int] = None + submission: Optional[int] = None + suspended: Optional[int] = None + system: Optional[System] = None + total: Optional[Total] = None + user: Optional[User] = None class Tres3(BaseModel): - allocated: TresList | None = None - requested: TresList | None = None + allocated: Optional[TresList] = None + requested: Optional[TresList] = None class JobArrayResponseArray(BaseModel): @@ -1590,163 +1590,163 @@ class JobArrayResponseArray(BaseModel): class Rlimits(BaseModel): - as_: Uint64NoVal | None = Field(None, alias="as") + as_: Optional[Uint64NoVal] = Field(None, alias="as") """ Address space limit. """ - core: Uint64NoVal | None = None + core: Optional[Uint64NoVal] = None """ Largest core file that can be created, in bytes. """ - cpu: Uint64NoVal | None = None + cpu: Optional[Uint64NoVal] = None """ Per-process CPU limit, in seconds. """ - data: Uint64NoVal | None = None + data: Optional[Uint64NoVal] = None """ Maximum size of data segment, in bytes. """ - fsize: Uint64NoVal | None = None + fsize: Optional[Uint64NoVal] = None """ Largest file that can be created, in bytes. """ - memlock: Uint64NoVal | None = None + memlock: Optional[Uint64NoVal] = None """ Locked-in-memory address space """ - nofile: Uint64NoVal | None = None + nofile: Optional[Uint64NoVal] = None """ Number of open files. """ - nproc: Uint64NoVal | None = None + nproc: Optional[Uint64NoVal] = None """ Number of processes. """ - rss: Uint64NoVal | None = None + rss: Optional[Uint64NoVal] = 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: Uint64NoVal | None = None + stack: Optional[Uint64NoVal] = None """ Maximum size of stack segment, in bytes. """ class JobDescMsg(BaseModel): - account: str | None = None - account_gather_frequency: str | None = None - admin_comment: str | None = None - allocation_node_list: str | None = None - allocation_node_port: int | None = None - argv: StringArray | None = None - array: str | None = None - batch_features: str | None = None - begin_time: Uint64NoVal | None = None - burst_buffer: str | None = None - cluster_constraint: str | None = None - clusters: str | None = None - comment: str | None = None - constraints: str | None = None - container: str | None = None - container_id: str | None = None - contiguous: bool | None = None - core_specification: int | None = None - cpu_binding: str | None = None - cpu_binding_flags: list[CpuBindingFlag] | None = None - cpu_frequency: str | None = None - cpus_per_task: int | None = None - cpus_per_tres: str | None = None - crontab: CronEntry | None = None - current_working_directory: str | None = None - deadline: int | None = None - delay_boot: int | None = None - dependency: str | None = None - distribution: str | None = None - distribution_plane_size: int | None = None - end_time: int | None = None - environment: StringArray | None = None - excluded_nodes: CsvString | None = None - exclusive: list[ExclusiveEnum] | None = None - extra: str | None = None - flags: list[Flag5] | None = None - group_id: str | None = None - hetjob_group: int | None = None - immediate: bool | None = None - job_id: int | None = None - kill_on_node_fail: bool | None = None - kill_warning_delay: Uint16NoVal | None = None - kill_warning_flags: list[KillWarningFlag] | None = None - kill_warning_signal: str | None = None - licenses: str | None = None - mail_type: list[MailTypeEnum] | None = None - mail_user: str | None = None - maximum_cpus: int | None = None - maximum_nodes: int | None = None - mcs_label: str | None = None - memory_binding: str | None = None - memory_binding_type: list[MemoryBindingTypeEnum] | None = None - memory_per_cpu: Uint64NoVal | None = None - memory_per_node: Uint64NoVal | None = None - memory_per_tres: str | None = None - minimum_boards_per_node: int | None = None - minimum_cpus: int | None = None - minimum_cpus_per_node: int | None = None - minimum_nodes: int | None = None - minimum_sockets_per_board: int | None = None - name: str | None = None - network: str | None = None - nice: int | None = None - nodes: str | None = None - ntasks_per_tres: int | None = None - open_mode: list[OpenModeEnum] | None = None - overcommit: bool | None = None - oversubscribe: bool | None = None - partition: str | None = None - power_flags: list[PowerFlag] | None = None - prefer: str | None = None - priority: Uint32NoVal | None = None - profile: list[ProfileEnum] | None = None - qos: str | None = None - reboot: bool | None = None - requeue: bool | None = None - required_nodes: CsvString | None = None - required_switches: Uint32NoVal | None = None - reservation: str | None = None - reserve_ports: int | None = None - rlimits: Rlimits | None = None - script: str | None = None - selinux_context: str | None = None - shared: list[SharedEnum] | None = None - site_factor: int | None = None - sockets_per_node: int | None = None - spank_environment: StringArray | None = None - standard_error: str | None = None - standard_input: str | None = None - standard_output: str | None = None - tasks: int | None = None - tasks_per_board: int | None = None - tasks_per_core: int | None = None - tasks_per_node: int | None = None - tasks_per_socket: int | None = None - temporary_disk_per_node: int | None = None - thread_specification: int | None = None - threads_per_core: int | None = None - time_limit: Uint32NoVal | None = None - time_minimum: Uint32NoVal | None = None - tres_bind: str | None = None - tres_freq: str | None = None - tres_per_job: str | None = None - tres_per_node: str | None = None - tres_per_socket: str | None = None - tres_per_task: str | None = None - user_id: str | None = None - wait_all_nodes: bool | None = None - wait_for_switch: int | None = None - wckey: str | None = None - x11: list[X11Enum] | None = None - x11_magic_cookie: str | None = None - x11_target_host: str | None = None - x11_target_port: int | None = None + account: Optional[str] = None + account_gather_frequency: Optional[str] = None + admin_comment: Optional[str] = None + allocation_node_list: Optional[str] = None + allocation_node_port: Optional[int] = None + argv: Optional[StringArray] = None + array: Optional[str] = None + batch_features: Optional[str] = None + begin_time: Optional[Uint64NoVal] = None + burst_buffer: Optional[str] = None + cluster_constraint: Optional[str] = None + clusters: Optional[str] = None + comment: Optional[str] = None + constraints: Optional[str] = None + container: Optional[str] = None + container_id: Optional[str] = None + contiguous: Optional[bool] = None + core_specification: Optional[int] = None + cpu_binding: Optional[str] = None + cpu_binding_flags: Optional[list[CpuBindingFlag]] = None + cpu_frequency: Optional[str] = None + cpus_per_task: Optional[int] = None + cpus_per_tres: Optional[str] = None + crontab: Optional[CronEntry] = None + current_working_directory: Optional[str] = None + deadline: Optional[int] = None + delay_boot: Optional[int] = None + dependency: Optional[str] = None + distribution: Optional[str] = None + distribution_plane_size: Optional[int] = None + end_time: Optional[int] = None + environment: Optional[StringArray] = None + excluded_nodes: Optional[CsvString] = None + exclusive: Optional[list[ExclusiveEnum]] = None + extra: Optional[str] = None + flags: Optional[list[Flag5]] = None + group_id: Optional[str] = None + hetjob_group: Optional[int] = None + immediate: Optional[bool] = None + job_id: Optional[int] = None + kill_on_node_fail: Optional[bool] = None + kill_warning_delay: Optional[Uint16NoVal] = None + kill_warning_flags: Optional[list[KillWarningFlag]] = None + kill_warning_signal: Optional[str] = None + licenses: Optional[str] = None + mail_type: Optional[list[MailTypeEnum]] = None + mail_user: Optional[str] = None + maximum_cpus: Optional[int] = None + maximum_nodes: Optional[int] = None + mcs_label: Optional[str] = None + memory_binding: Optional[str] = None + memory_binding_type: Optional[list[MemoryBindingTypeEnum]] = None + memory_per_cpu: Optional[Uint64NoVal] = None + memory_per_node: Optional[Uint64NoVal] = None + memory_per_tres: Optional[str] = None + minimum_boards_per_node: Optional[int] = None + minimum_cpus: Optional[int] = None + minimum_cpus_per_node: Optional[int] = None + minimum_nodes: Optional[int] = None + minimum_sockets_per_board: Optional[int] = None + name: Optional[str] = None + network: Optional[str] = None + nice: Optional[int] = None + nodes: Optional[str] = None + ntasks_per_tres: Optional[int] = None + open_mode: Optional[list[OpenModeEnum]] = None + overcommit: Optional[bool] = None + oversubscribe: Optional[bool] = None + partition: Optional[str] = None + power_flags: Optional[list[PowerFlag]] = None + prefer: Optional[str] = None + priority: Optional[Uint32NoVal] = None + profile: Optional[list[ProfileEnum]] = None + qos: Optional[str] = None + reboot: Optional[bool] = None + requeue: Optional[bool] = None + required_nodes: Optional[CsvString] = None + required_switches: Optional[Uint32NoVal] = None + reservation: Optional[str] = None + reserve_ports: Optional[int] = None + rlimits: Optional[Rlimits] = None + script: Optional[str] = None + selinux_context: Optional[str] = None + shared: Optional[list[SharedEnum]] = None + site_factor: Optional[int] = None + sockets_per_node: Optional[int] = None + spank_environment: Optional[StringArray] = None + standard_error: Optional[str] = None + standard_input: Optional[str] = None + standard_output: Optional[str] = None + tasks: Optional[int] = None + tasks_per_board: Optional[int] = None + tasks_per_core: Optional[int] = None + tasks_per_node: Optional[int] = None + tasks_per_socket: Optional[int] = None + temporary_disk_per_node: Optional[int] = None + thread_specification: Optional[int] = None + threads_per_core: Optional[int] = None + time_limit: Optional[Uint32NoVal] = None + time_minimum: Optional[Uint32NoVal] = None + tres_bind: Optional[str] = None + tres_freq: Optional[str] = None + tres_per_job: Optional[str] = None + tres_per_node: Optional[str] = None + tres_per_socket: Optional[str] = None + tres_per_task: Optional[str] = None + user_id: Optional[str] = None + wait_all_nodes: Optional[bool] = None + wait_for_switch: Optional[int] = None + wckey: Optional[str] = None + x11: Optional[list[X11Enum]] = None + x11_magic_cookie: Optional[str] = None + x11_target_host: Optional[str] = None + x11_target_port: Optional[int] = None class JobDescMsgList(BaseModel): @@ -1754,44 +1754,44 @@ class JobDescMsgList(BaseModel): class JobRes(BaseModel): - allocated_cores: int | None = None - allocated_cpus: int | None = None - allocated_hosts: int | None = None - allocated_nodes: JobResNodes | None = None - nodes: str | None = None + allocated_cores: Optional[int] = None + allocated_cpus: Optional[int] = None + allocated_hosts: Optional[int] = None + allocated_nodes: Optional[JobResNodes] = None + nodes: Optional[str] = None class JobSubmitReq(BaseModel): - job: JobDescMsg | None = None + job: Optional[JobDescMsg] = None """ Job description """ - jobs: JobDescMsgList | None = None + jobs: Optional[JobDescMsgList] = None """ HetJob description """ - script: str | None = None + script: Optional[str] = None """ batch job script """ class OpenapiMeta(BaseModel): - client: Client | None = None - command: StringArray | None = None + client: Optional[Client] = None + command: Optional[StringArray] = None """ CLI command (if applicable) """ - plugin: Plugin | None = None - slurm: Slurm | None = None + plugin: Optional[Plugin] = None + slurm: Optional[Slurm] = None class OpenapiPingArrayResp(BaseModel): - errors: OpenapiErrors | None = None + errors: Optional[OpenapiErrors] = None """ Query errors """ - meta: OpenapiMeta | None = None + meta: Optional[OpenapiMeta] = None """ Slurm meta values """ @@ -1799,33 +1799,33 @@ class OpenapiPingArrayResp(BaseModel): """ pings """ - warnings: OpenapiWarnings | None = None + warnings: Optional[OpenapiWarnings] = None """ Query warnings """ class OpenapiResp(BaseModel): - errors: OpenapiErrors | None = None + errors: Optional[OpenapiErrors] = None """ Query errors """ - meta: OpenapiMeta | None = None + meta: Optional[OpenapiMeta] = None """ Slurm meta values """ - warnings: OpenapiWarnings | None = None + warnings: Optional[OpenapiWarnings] = None """ Query warnings """ class OpenapiSlurmdbdQosRemovedResp(BaseModel): - errors: OpenapiErrors | None = None + errors: Optional[OpenapiErrors] = None """ Query errors """ - meta: OpenapiMeta | None = None + meta: Optional[OpenapiMeta] = None """ Slurm meta values """ @@ -1833,7 +1833,7 @@ class OpenapiSlurmdbdQosRemovedResp(BaseModel): """ removed QOS """ - warnings: OpenapiWarnings | None = None + warnings: Optional[OpenapiWarnings] = None """ Query warnings """ @@ -1844,15 +1844,15 @@ class OpenapiTresResp(BaseModel): """ TRES """ - errors: OpenapiErrors | None = None + errors: Optional[OpenapiErrors] = None """ Query errors """ - meta: OpenapiMeta | None = None + meta: Optional[OpenapiMeta] = None """ Slurm meta values """ - warnings: OpenapiWarnings | None = None + warnings: Optional[OpenapiWarnings] = None """ Query warnings """ @@ -1863,15 +1863,15 @@ class OpenapiUsersAddCondRespStr(BaseModel): """ added_users """ - errors: OpenapiErrors | None = None + errors: Optional[OpenapiErrors] = None """ Query errors """ - meta: OpenapiMeta | None = None + meta: Optional[OpenapiMeta] = None """ Slurm meta values """ - warnings: OpenapiWarnings | None = None + warnings: Optional[OpenapiWarnings] = None """ Query warnings """ @@ -1882,65 +1882,65 @@ class OpenapiWckeyRemovedResp(BaseModel): """ deleted wckeys """ - errors: OpenapiErrors | None = None + errors: Optional[OpenapiErrors] = None """ Query errors """ - meta: OpenapiMeta | None = None + meta: Optional[OpenapiMeta] = None """ Slurm meta values """ - warnings: OpenapiWarnings | None = None + warnings: Optional[OpenapiWarnings] = None """ Query warnings """ class Defaults(BaseModel): - job: str | None = None - memory_per_cpu: int | None = None - partition_memory_per_cpu: Uint64NoVal | None = None - partition_memory_per_node: Uint64NoVal | None = None - time: Uint32NoVal | None = None + job: Optional[str] = None + memory_per_cpu: Optional[int] = None + partition_memory_per_cpu: Optional[Uint64NoVal] = None + partition_memory_per_node: Optional[Uint64NoVal] = None + time: Optional[Uint32NoVal] = None class Maximums(BaseModel): - cpus_per_node: Uint32NoVal | None = None - cpus_per_socket: Uint32NoVal | None = None - memory_per_cpu: int | None = None - nodes: Uint32NoVal | None = None - over_time_limit: Uint16NoVal | None = None - oversubscribe: Oversubscribe | None = None - partition_memory_per_cpu: Uint64NoVal | None = None - partition_memory_per_node: Uint64NoVal | None = None - shares: int | None = None - time: Uint32NoVal | None = None + cpus_per_node: Optional[Uint32NoVal] = None + cpus_per_socket: Optional[Uint32NoVal] = None + memory_per_cpu: Optional[int] = None + nodes: Optional[Uint32NoVal] = None + over_time_limit: Optional[Uint16NoVal] = None + oversubscribe: Optional[Oversubscribe] = None + partition_memory_per_cpu: Optional[Uint64NoVal] = None + partition_memory_per_node: Optional[Uint64NoVal] = None + shares: Optional[int] = None + time: Optional[Uint32NoVal] = None class Timeouts(BaseModel): - resume: Uint16NoVal | None = None - suspend: Uint16NoVal | None = None + resume: Optional[Uint16NoVal] = None + suspend: Optional[Uint16NoVal] = None class PartitionInfo(BaseModel): - accounts: Accounts | None = None - alternate: str | None = None - cluster: str | None = None - cpus: Cpus | None = None - defaults: Defaults | None = None - grace_time: int | None = None - groups: Groups | None = None - maximums: Maximums | None = None - minimums: Minimums | None = None - name: str | None = None - node_sets: str | None = None - nodes: Nodes1 | None = None - partition: Partition | None = None - priority: Priority | None = None - qos: Qos | None = None - suspend_time: Uint32NoVal | None = None - timeouts: Timeouts | None = None - tres: Tres4 | None = None + accounts: Optional[Accounts] = None + alternate: Optional[str] = None + cluster: Optional[str] = None + cpus: Optional[Cpus] = None + defaults: Optional[Defaults] = None + grace_time: Optional[int] = None + groups: Optional[Groups] = None + maximums: Optional[Maximums] = None + minimums: Optional[Minimums] = None + name: Optional[str] = None + node_sets: Optional[str] = None + nodes: Optional[Nodes1] = None + partition: Optional[Partition] = None + priority: Optional[Priority] = None + qos: Optional[Qos] = None + suspend_time: Optional[Uint32NoVal] = None + timeouts: Optional[Timeouts] = None + tres: Optional[Tres4] = None class PartitionInfoMsg(BaseModel): @@ -1948,140 +1948,140 @@ class PartitionInfoMsg(BaseModel): class PowerMgmtData(BaseModel): - current_watts: int | None = None - lowest_watts: int | None = None - maximum_watts: Uint32NoVal | None = None - new_job_time: Uint64NoVal | None = None - new_maximum_watts: int | None = None - peak_watts: int | None = None - state: int | None = None - time_start_day: int | None = None - total_energy: int | None = None + current_watts: Optional[int] = None + lowest_watts: Optional[int] = None + maximum_watts: Optional[Uint32NoVal] = None + new_job_time: Optional[Uint64NoVal] = None + new_maximum_watts: Optional[int] = None + peak_watts: Optional[int] = None + state: Optional[int] = None + time_start_day: Optional[int] = None + total_energy: Optional[int] = None class Signal(BaseModel): - id: Uint16NoVal | None = None + id: Optional[Uint16NoVal] = None """ Signal sent to process (numeric) """ - name: str | None = None + name: Optional[str] = None """ Signal sent to process """ class ProcessExitCodeVerbose(BaseModel): - return_code: Uint32NoVal | None = None + return_code: Optional[Uint32NoVal] = None """ Process return code (numeric) """ - signal: Signal | None = None - status: list[StatusEnum] | None = None + signal: Optional[Signal] = None + status: Optional[list[StatusEnum]] = None """ Status given by return code """ class Per4(BaseModel): - account: Uint32NoVal | None = None - user: Uint32NoVal | None = None + account: Optional[Uint32NoVal] = None + user: Optional[Uint32NoVal] = None class Accruing(BaseModel): - per: Per4 | None = None + per: Optional[Per4] = None class ActiveJobs(BaseModel): - accruing: Uint32NoVal | None = None - count: Uint32NoVal | None = None + accruing: Optional[Uint32NoVal] = None + count: Optional[Uint32NoVal] = None class ActiveJobs1(BaseModel): - per: Per4 | None = None + per: Optional[Per4] = None class Jobs1(BaseModel): - active_jobs: ActiveJobs1 | None = None - per: Per4 | None = None + active_jobs: Optional[ActiveJobs1] = None + per: Optional[Per4] = None class Per7(BaseModel): - account: TresList | None = None - job: TresList | None = None - qos: TresList | None = None - user: TresList | None = None + account: Optional[TresList] = None + job: Optional[TresList] = None + qos: Optional[TresList] = None + user: Optional[TresList] = None class Minutes1(BaseModel): - per: Per7 | None = None + per: Optional[Per7] = None class Per8(BaseModel): - account: TresList | None = None - job: TresList | None = None - node: TresList | None = None - user: TresList | None = None + account: Optional[TresList] = None + job: Optional[TresList] = None + node: Optional[TresList] = None + user: Optional[TresList] = None class Tres5(BaseModel): - minutes: Minutes1 | None = None - per: Per8 | None = None - total: TresList | None = None + minutes: Optional[Minutes1] = None + per: Optional[Per8] = None + total: Optional[TresList] = None class Per9(BaseModel): - job: Uint32NoVal | None = None - qos: Uint32NoVal | None = None + job: Optional[Uint32NoVal] = None + qos: Optional[Uint32NoVal] = None class WallClock(BaseModel): - per: Per9 | None = None + per: Optional[Per9] = 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 + accruing: Optional[Accruing] = None + active_jobs: Optional[ActiveJobs] = None + jobs: Optional[Jobs1] = None + tres: Optional[Tres5] = None + wall_clock: Optional[WallClock] = None class Per10(BaseModel): - job: TresList | None = None + job: Optional[TresList] = None class Tres6(BaseModel): - per: Per10 | None = None + per: Optional[Per10] = None class Min1(BaseModel): - priority_threshold: Uint32NoVal | None = None - tres: Tres6 | None = None + priority_threshold: Optional[Uint32NoVal] = None + tres: Optional[Tres6] = None class Limits1(BaseModel): - factor: Float64NoVal | None = None - grace_time: int | None = None - max: Max2 | None = None - min: Min1 | None = None + factor: Optional[Float64NoVal] = None + grace_time: Optional[int] = None + max: Optional[Max2] = None + min: Optional[Min1] = None class Preempt(BaseModel): - exempt_time: Uint32NoVal | None = None - list: QosPreemptList | None = None - mode: List[ModeEnum] | None = None # resolve name clash with list attribute + exempt_time: Optional[Uint32NoVal] = None + list: Optional[QosPreemptList] = None + mode: Optional[List[ModeEnum]] = None class Qos1(BaseModel): - description: str | None = None - flags: list[Flag9] | None = None - id: int | None = None - limits: Limits1 | None = None - name: str | None = None - preempt: Preempt | None = None - priority: Uint32NoVal | None = None - usage_factor: Float64NoVal | None = None - usage_threshold: Float64NoVal | None = None + description: Optional[str] = None + flags: Optional[list[Flag9]] = None + id: Optional[int] = None + limits: Optional[Limits1] = None + name: Optional[str] = None + preempt: Optional[Preempt] = None + priority: Optional[Uint32NoVal] = None + usage_factor: Optional[Float64NoVal] = None + usage_threshold: Optional[Float64NoVal] = None class QosList(BaseModel): @@ -2089,29 +2089,29 @@ class QosList(BaseModel): class PurgeCompleted(BaseModel): - time: Uint32NoVal | None = None + time: Optional[Uint32NoVal] = None class ReservationInfo(BaseModel): - accounts: str | None = None - burst_buffer: str | None = None - core_count: int | None = None - core_specializations: ReservationInfoCoreSpec | None = None - end_time: Uint64NoVal | None = None - features: str | None = None - flags: list[Flag10] | None = None - groups: str | None = None - licenses: str | None = None - max_start_delay: int | None = None - name: str | None = None - node_count: int | None = None - node_list: str | None = None - partition: str | None = None - purge_completed: PurgeCompleted | None = None - start_time: Uint64NoVal | None = None - tres: str | None = None - users: str | None = None - watts: Uint32NoVal | None = None + accounts: Optional[str] = None + burst_buffer: Optional[str] = None + core_count: Optional[int] = None + core_specializations: Optional[ReservationInfoCoreSpec] = None + end_time: Optional[Uint64NoVal] = None + features: Optional[str] = None + flags: Optional[list[Flag10]] = None + groups: Optional[str] = None + licenses: Optional[str] = None + max_start_delay: Optional[int] = None + name: Optional[str] = None + node_count: Optional[int] = None + node_list: Optional[str] = None + partition: Optional[str] = None + purge_completed: Optional[PurgeCompleted] = None + start_time: Optional[Uint64NoVal] = None + tres: Optional[str] = None + users: Optional[str] = None + watts: Optional[Uint32NoVal] = None class ReservationInfoMsg(BaseModel): @@ -2119,11 +2119,11 @@ class ReservationInfoMsg(BaseModel): class SharesUint64Tres(BaseModel): - name: str | None = None + name: Optional[str] = None """ TRES name """ - value: Uint64NoVal | None = None + value: Optional[Uint64NoVal] = None """ TRES value """ @@ -2134,90 +2134,90 @@ class SharesUint64TresList(BaseModel): class StatsMsg(BaseModel): - agent_count: int | None = None - agent_queue_size: int | None = None - agent_thread_count: int | None = None - bf_active: bool | None = None - bf_backfilled_het_jobs: int | None = None - bf_backfilled_jobs: int | None = None - bf_cycle_counter: int | None = None - bf_cycle_last: int | None = None - bf_cycle_mean: int | None = None - bf_cycle_sum: int | None = None - bf_depth_mean: int | None = None - bf_depth_mean_try: int | None = None - bf_depth_sum: int | None = None - bf_depth_try_sum: int | None = None - bf_exit: BfExitFields | None = None - bf_last_backfilled_jobs: int | None = None - bf_last_depth: int | None = None - bf_last_depth_try: int | None = None - bf_queue_len: int | None = None - bf_queue_len_mean: int | None = None - bf_queue_len_sum: int | None = None - bf_table_size: int | None = None - bf_table_size_mean: int | None = None - bf_when_last_cycle: Uint64NoVal | None = None - dbd_agent_queue_size: int | None = None - gettimeofday_latency: int | None = None - job_states_ts: Uint64NoVal | None = None - jobs_canceled: int | None = None - jobs_completed: int | None = None - jobs_failed: int | None = None - jobs_pending: int | None = None - jobs_running: int | None = None - jobs_started: int | None = None - jobs_submitted: int | None = None - parts_packed: int | None = None - req_time: Uint64NoVal | None = None - req_time_start: Uint64NoVal | None = None - rpcs_by_message_type: StatsMsgRpcsByType | None = None - rpcs_by_user: StatsMsgRpcsByUser | None = None - schedule_cycle_last: int | None = None - schedule_cycle_max: int | None = None - schedule_cycle_mean: int | None = None - schedule_cycle_mean_depth: int | None = None - schedule_cycle_per_minute: int | None = None - schedule_cycle_total: int | None = None - schedule_exit: ScheduleExitFields | None = None - schedule_queue_length: int | None = None - server_thread_count: int | None = None + agent_count: Optional[int] = None + agent_queue_size: Optional[int] = None + agent_thread_count: Optional[int] = None + bf_active: Optional[bool] = None + bf_backfilled_het_jobs: Optional[int] = None + bf_backfilled_jobs: Optional[int] = None + bf_cycle_counter: Optional[int] = None + bf_cycle_last: Optional[int] = None + bf_cycle_mean: Optional[int] = None + bf_cycle_sum: Optional[int] = None + bf_depth_mean: Optional[int] = None + bf_depth_mean_try: Optional[int] = None + bf_depth_sum: Optional[int] = None + bf_depth_try_sum: Optional[int] = None + bf_exit: Optional[BfExitFields] = None + bf_last_backfilled_jobs: Optional[int] = None + bf_last_depth: Optional[int] = None + bf_last_depth_try: Optional[int] = None + bf_queue_len: Optional[int] = None + bf_queue_len_mean: Optional[int] = None + bf_queue_len_sum: Optional[int] = None + bf_table_size: Optional[int] = None + bf_table_size_mean: Optional[int] = None + bf_when_last_cycle: Optional[Uint64NoVal] = None + dbd_agent_queue_size: Optional[int] = None + gettimeofday_latency: Optional[int] = None + job_states_ts: Optional[Uint64NoVal] = None + jobs_canceled: Optional[int] = None + jobs_completed: Optional[int] = None + jobs_failed: Optional[int] = None + jobs_pending: Optional[int] = None + jobs_running: Optional[int] = None + jobs_started: Optional[int] = None + jobs_submitted: Optional[int] = None + parts_packed: Optional[int] = None + req_time: Optional[Uint64NoVal] = None + req_time_start: Optional[Uint64NoVal] = None + rpcs_by_message_type: Optional[StatsMsgRpcsByType] = None + rpcs_by_user: Optional[StatsMsgRpcsByUser] = None + schedule_cycle_last: Optional[int] = None + schedule_cycle_max: Optional[int] = None + schedule_cycle_mean: Optional[int] = None + schedule_cycle_mean_depth: Optional[int] = None + schedule_cycle_per_minute: Optional[int] = None + schedule_cycle_total: Optional[int] = None + schedule_exit: Optional[ScheduleExitFields] = None + schedule_queue_length: Optional[int] = None + server_thread_count: Optional[int] = None class StatsRec(BaseModel): - RPCs: StatsRpcList | None = None - rollups: RollupStats | None = None - time_start: int | None = None - users: StatsUserList | None = None + RPCs: Optional[StatsRpcList] = None + rollups: Optional[RollupStats] = None + time_start: Optional[int] = None + users: Optional[StatsUserList] = None class RequestedFrequency(BaseModel): - max: Uint32NoVal | None = None - min: Uint32NoVal | None = None + max: Optional[Uint32NoVal] = None + min: Optional[Uint32NoVal] = None class CPU(BaseModel): - governor: str | None = None - requested_frequency: RequestedFrequency | None = None + governor: Optional[str] = None + requested_frequency: Optional[RequestedFrequency] = None class Energy(BaseModel): - consumed: Uint64NoVal | None = None + consumed: Optional[Uint64NoVal] = None class Statistics(BaseModel): - CPU: CPU1 | None = None - energy: Energy | None = None + CPU: Optional[CPU1] = None + energy: Optional[Energy] = None class Time4(BaseModel): - elapsed: int | None = None - end: Uint64NoVal | None = None - start: Uint64NoVal | None = None - suspended: int | None = None - system: System | None = None - total: Total | None = None - user: User | None = None + elapsed: Optional[int] = None + end: Optional[Uint64NoVal] = None + start: Optional[Uint64NoVal] = None + suspended: Optional[int] = None + system: Optional[System] = None + total: Optional[Total] = None + user: Optional[User] = None class StepTresReqMax(BaseModel): @@ -2237,19 +2237,19 @@ class StepTresUsageMin(BaseModel): class UsersAddCond(BaseModel): - accounts: StringList | None = None + accounts: Optional[StringList] = None """ CSV accounts list """ - association: AssocRecSet | None = None + association: Optional[AssocRecSet] = None """ Association limits and options """ - clusters: StringList | None = None + clusters: Optional[StringList] = None """ CSV clusters list """ - partitions: StringList | None = None + partitions: Optional[StringList] = None """ CSV partitions list """ @@ -2257,17 +2257,17 @@ class UsersAddCond(BaseModel): """ CSV users list """ - wckeys: StringList | None = None + wckeys: Optional[StringList] = None """ CSV WCKeys list """ class Wckey(BaseModel): - accounting: AccountingList | None = None + accounting: Optional[AccountingList] = None cluster: str - flags: list[Flag12] | None = None - id: int | None = None + flags: Optional[list[Flag12]] = None + id: Optional[int] = None name: str user: str @@ -2281,216 +2281,216 @@ class AccountsAddCond(BaseModel): """ CSV accounts list """ - association: AssocRecSet | None = None + association: Optional[AssocRecSet] = None """ Association limits and options """ - clusters: StringList | None = None + clusters: Optional[StringList] = None """ CSV clusters list """ class Tres2(BaseModel): - group_minutes: SharesUint64TresList | None = None + group_minutes: Optional[SharesUint64TresList] = None """ tres-minute limit """ - run_seconds: SharesUint64TresList | None = None + run_seconds: Optional[SharesUint64TresList] = None """ currently running tres-secs = grp_used_tres_run_secs """ - usage: SharesFloat128TresList | None = None + usage: Optional[SharesFloat128TresList] = None """ measure of each tres usage """ class AssocSharesObjWrap(BaseModel): - cluster: str | None = None + cluster: Optional[str] = None """ cluster name """ - effective_usage: float | None = None + effective_usage: Optional[float] = None """ effective, normalized usage """ - fairshare: Fairshare | None = None - id: int | None = None + fairshare: Optional[Fairshare] = None + id: Optional[int] = None """ assocation id """ - name: str | None = None + name: Optional[str] = None """ share name """ - parent: str | None = None + parent: Optional[str] = None """ parent name """ - partition: str | None = None + partition: Optional[str] = None """ partition name """ - shares: Uint32NoVal | None = None + shares: Optional[Uint32NoVal] = None """ number of shares allocated """ - shares_normalized: Float64NoVal | None = None + shares_normalized: Optional[Float64NoVal] = None """ normalized shares """ - tres: Tres2 | None = None - type: list[TypeEnum] | None = None + tres: Optional[Tres2] = None + type: Optional[list[TypeEnum]] = None """ user or account association """ - usage: int | None = None + usage: Optional[int] = None """ measure of tresbillableunits usage """ - usage_normalized: Float64NoVal | None = None + usage_normalized: Optional[Float64NoVal] = None """ normalized usage """ class JobInfo(BaseModel): - account: str | None = None - accrue_time: Uint64NoVal | None = None - admin_comment: str | None = None - allocating_node: str | None = None - array_job_id: Uint32NoVal | None = None - array_max_tasks: Uint32NoVal | None = None - array_task_id: Uint32NoVal | None = None - array_task_string: str | None = None - association_id: int | None = None - batch_features: str | None = None - batch_flag: bool | None = None - batch_host: str | None = None - billable_tres: Float64NoVal | None = None - burst_buffer: str | None = None - burst_buffer_state: str | None = None - cluster: str | None = None - cluster_features: str | None = None - command: str | None = None - comment: str | None = None - container: str | None = None - container_id: str | None = None - contiguous: bool | None = None - core_spec: int | None = None - cores_per_socket: Uint16NoVal | None = None - cpu_frequency_governor: Uint32NoVal | None = None - cpu_frequency_maximum: Uint32NoVal | None = None - cpu_frequency_minimum: Uint32NoVal | None = None - cpus: Uint32NoVal | None = None - cpus_per_task: Uint16NoVal | None = None - cpus_per_tres: str | None = None - cron: str | None = None - current_working_directory: str | None = None - deadline: Uint64NoVal | None = None - delay_boot: Uint32NoVal | None = None - dependency: str | None = None - derived_exit_code: ProcessExitCodeVerbose | None = None + account: Optional[str] = None + accrue_time: Optional[Uint64NoVal] = None + admin_comment: Optional[str] = None + allocating_node: Optional[str] = None + array_job_id: Optional[Uint32NoVal] = None + array_max_tasks: Optional[Uint32NoVal] = None + array_task_id: Optional[Uint32NoVal] = None + array_task_string: Optional[str] = None + association_id: Optional[int] = None + batch_features: Optional[str] = None + batch_flag: Optional[bool] = None + batch_host: Optional[str] = None + billable_tres: Optional[Float64NoVal] = None + burst_buffer: Optional[str] = None + burst_buffer_state: Optional[str] = None + cluster: Optional[str] = None + cluster_features: Optional[str] = None + command: Optional[str] = None + comment: Optional[str] = None + container: Optional[str] = None + container_id: Optional[str] = None + contiguous: Optional[bool] = None + core_spec: Optional[int] = None + cores_per_socket: Optional[Uint16NoVal] = None + cpu_frequency_governor: Optional[Uint32NoVal] = None + cpu_frequency_maximum: Optional[Uint32NoVal] = None + cpu_frequency_minimum: Optional[Uint32NoVal] = None + cpus: Optional[Uint32NoVal] = None + cpus_per_task: Optional[Uint16NoVal] = None + cpus_per_tres: Optional[str] = None + cron: Optional[str] = None + current_working_directory: Optional[str] = None + deadline: Optional[Uint64NoVal] = None + delay_boot: Optional[Uint32NoVal] = None + dependency: Optional[str] = None + derived_exit_code: Optional[ProcessExitCodeVerbose] = None """ return code returned by process """ - eligible_time: Uint64NoVal | None = None - end_time: Uint64NoVal | None = None - excluded_nodes: str | None = None - exclusive: list[ExclusiveEnum] | None = None - exit_code: ProcessExitCodeVerbose | None = None + eligible_time: Optional[Uint64NoVal] = None + end_time: Optional[Uint64NoVal] = None + excluded_nodes: Optional[str] = None + exclusive: Optional[list[ExclusiveEnum]] = None + exit_code: Optional[ProcessExitCodeVerbose] = None """ return code returned by process """ - extra: str | None = None - failed_node: str | None = None - features: str | None = None - federation_origin: str | None = None - federation_siblings_active: str | None = None - federation_siblings_viable: str | None = None - flags: list[Flag5] | None = None - gres_detail: JobInfoGresDetail | None = None - group_id: int | None = None - group_name: str | None = None - het_job_id: Uint32NoVal | None = None - het_job_id_set: str | None = None - het_job_offset: Uint32NoVal | None = None - job_id: int | None = None - job_resources: JobRes | None = None - job_size_str: CsvString | None = None - job_state: list[JobStateEnum] | None = None - last_sched_evaluation: Uint64NoVal | None = None - licenses: str | None = None - mail_type: list[MailTypeEnum] | None = None - mail_user: str | None = None - max_cpus: Uint32NoVal | None = None - max_nodes: Uint32NoVal | None = None - maximum_switch_wait_time: int | None = None - mcs_label: str | None = None - memory_per_cpu: Uint64NoVal | None = None - memory_per_node: Uint64NoVal | None = None - memory_per_tres: str | None = None - minimum_cpus_per_node: Uint16NoVal | None = None - minimum_switches: int | None = None - minimum_tmp_disk_per_node: Uint32NoVal | None = None - name: str | None = None - network: str | None = None - nice: int | None = None - node_count: Uint32NoVal | None = None - nodes: str | None = None - oversubscribe: bool | None = None - partition: str | None = None - power: Power | None = None - pre_sus_time: Uint64NoVal | None = None - preempt_time: Uint64NoVal | None = None - preemptable_time: Uint64NoVal | None = None - prefer: str | None = None - priority: Uint32NoVal | None = None - profile: list[ProfileEnum] | None = None - qos: str | None = None - reboot: bool | None = None - requeue: bool | None = None - required_nodes: str | None = None - resize_time: Uint64NoVal | None = None - restart_cnt: int | None = None - resv_name: str | None = None - scheduled_nodes: str | None = None - selinux_context: str | None = None - shared: list[SharedEnum] | None = None - show_flags: list[ShowFlag] | None = None - sockets_per_board: int | None = None - sockets_per_node: Uint16NoVal | None = None - standard_error: str | None = None - standard_input: str | None = None - standard_output: str | None = None - start_time: Uint64NoVal | None = None - state_description: str | None = None - state_reason: str | None = None - submit_time: Uint64NoVal | None = None - suspend_time: Uint64NoVal | None = None - system_comment: str | None = None - tasks: Uint32NoVal | None = None - tasks_per_board: Uint16NoVal | None = None - tasks_per_core: Uint16NoVal | None = None - tasks_per_node: Uint16NoVal | None = None - tasks_per_socket: Uint16NoVal | None = None - tasks_per_tres: Uint16NoVal | None = None - thread_spec: int | None = None - threads_per_core: Uint16NoVal | None = None - time_limit: Uint32NoVal | None = None - time_minimum: Uint32NoVal | None = None - tres_alloc_str: str | None = None - tres_bind: str | None = None - tres_freq: str | None = None - tres_per_job: str | None = None - tres_per_node: str | None = None - tres_per_socket: str | None = None - tres_per_task: str | None = None - tres_req_str: str | None = None - user_id: int | None = None - user_name: str | None = None - wckey: str | None = None + extra: Optional[str] = None + failed_node: Optional[str] = None + features: Optional[str] = None + federation_origin: Optional[str] = None + federation_siblings_active: Optional[str] = None + federation_siblings_viable: Optional[str] = None + flags: Optional[list[Flag5]] = None + gres_detail: Optional[JobInfoGresDetail] = None + group_id: Optional[int] = None + group_name: Optional[str] = None + het_job_id: Optional[Uint32NoVal] = None + het_job_id_set: Optional[str] = None + het_job_offset: Optional[Uint32NoVal] = None + job_id: Optional[int] = None + job_resources: Optional[JobRes] = None + job_size_str: Optional[CsvString] = None + job_state: Optional[list[JobStateEnum]] = None + last_sched_evaluation: Optional[Uint64NoVal] = None + licenses: Optional[str] = None + mail_type: Optional[list[MailTypeEnum]] = None + mail_user: Optional[str] = None + max_cpus: Optional[Uint32NoVal] = None + max_nodes: Optional[Uint32NoVal] = None + maximum_switch_wait_time: Optional[int] = None + mcs_label: Optional[str] = None + memory_per_cpu: Optional[Uint64NoVal] = None + memory_per_node: Optional[Uint64NoVal] = None + memory_per_tres: Optional[str] = None + minimum_cpus_per_node: Optional[Uint16NoVal] = None + minimum_switches: Optional[int] = None + minimum_tmp_disk_per_node: Optional[Uint32NoVal] = None + name: Optional[str] = None + network: Optional[str] = None + nice: Optional[int] = None + node_count: Optional[Uint32NoVal] = None + nodes: Optional[str] = None + oversubscribe: Optional[bool] = None + partition: Optional[str] = None + power: Optional[Power] = None + pre_sus_time: Optional[Uint64NoVal] = None + preempt_time: Optional[Uint64NoVal] = None + preemptable_time: Optional[Uint64NoVal] = None + prefer: Optional[str] = None + priority: Optional[Uint32NoVal] = None + profile: Optional[list[ProfileEnum]] = None + qos: Optional[str] = None + reboot: Optional[bool] = None + requeue: Optional[bool] = None + required_nodes: Optional[str] = None + resize_time: Optional[Uint64NoVal] = None + restart_cnt: Optional[int] = None + resv_name: Optional[str] = None + scheduled_nodes: Optional[str] = None + selinux_context: Optional[str] = None + shared: Optional[list[SharedEnum]] = None + show_flags: Optional[list[ShowFlag]] = None + sockets_per_board: Optional[int] = None + sockets_per_node: Optional[Uint16NoVal] = None + standard_error: Optional[str] = None + standard_input: Optional[str] = None + standard_output: Optional[str] = None + start_time: Optional[Uint64NoVal] = None + state_description: Optional[str] = None + state_reason: Optional[str] = None + submit_time: Optional[Uint64NoVal] = None + suspend_time: Optional[Uint64NoVal] = None + system_comment: Optional[str] = None + tasks: Optional[Uint32NoVal] = None + tasks_per_board: Optional[Uint16NoVal] = None + tasks_per_core: Optional[Uint16NoVal] = None + tasks_per_node: Optional[Uint16NoVal] = None + tasks_per_socket: Optional[Uint16NoVal] = None + tasks_per_tres: Optional[Uint16NoVal] = None + thread_spec: Optional[int] = None + threads_per_core: Optional[Uint16NoVal] = None + time_limit: Optional[Uint32NoVal] = None + time_minimum: Optional[Uint32NoVal] = None + tres_alloc_str: Optional[str] = None + tres_bind: Optional[str] = None + tres_freq: Optional[str] = None + tres_per_job: Optional[str] = None + tres_per_node: Optional[str] = None + tres_per_socket: Optional[str] = None + tres_per_task: Optional[str] = None + tres_req_str: Optional[str] = None + user_id: Optional[int] = None + user_name: Optional[str] = None + wckey: Optional[str] = None class JobInfoMsg(BaseModel): @@ -2498,61 +2498,61 @@ class JobInfoMsg(BaseModel): class Node(BaseModel): - active_features: CsvString | None = None - address: str | None = None - alloc_cpus: int | None = None - alloc_idle_cpus: int | None = None - alloc_memory: int | None = None - architecture: str | None = None - boards: int | None = None - boot_time: Uint64NoVal | None = None - burstbuffer_network_address: str | None = None - cluster_name: str | None = None - comment: str | None = None - cores: int | None = None - cpu_binding: int | None = None - cpu_load: int | None = None - cpus: int | None = None - effective_cpus: int | None = None - energy: AcctGatherEnergy | None = None - external_sensors: ExtSensorsData | None = None - extra: str | None = None - features: CsvString | None = None - free_mem: Uint64NoVal | None = None - gres: str | None = None - gres_drained: str | None = None - gres_used: str | None = None - hostname: str | None = None - instance_id: str | None = None - instance_type: str | None = None - last_busy: Uint64NoVal | None = None - mcs_label: str | None = None - name: str | None = None - next_state_after_reboot: list[NextStateAfterRebootEnum] | None = None - operating_system: str | None = None - owner: str | None = None - partitions: CsvString | None = None - port: int | None = None - power: PowerMgmtData | None = None - real_memory: int | None = None - reason: str | None = None - reason_changed_at: Uint64NoVal | None = None - reason_set_by_user: str | None = None - reservation: str | None = None - resume_after: Uint64NoVal | None = None - slurmd_start_time: Uint64NoVal | None = None - sockets: int | None = None - specialized_cores: int | None = None - specialized_cpus: str | None = None - specialized_memory: int | None = None - state: list[StateEnum] | None = None - temporary_disk: int | None = None - threads: int | None = None - tres: str | None = None - tres_used: str | None = None - tres_weighted: float | None = None - version: str | None = None - weight: int | None = None + active_features: Optional[CsvString] = None + address: Optional[str] = None + alloc_cpus: Optional[int] = None + alloc_idle_cpus: Optional[int] = None + alloc_memory: Optional[int] = None + architecture: Optional[str] = None + boards: Optional[int] = None + boot_time: Optional[Uint64NoVal] = None + burstbuffer_network_address: Optional[str] = None + cluster_name: Optional[str] = None + comment: Optional[str] = None + cores: Optional[int] = None + cpu_binding: Optional[int] = None + cpu_load: Optional[int] = None + cpus: Optional[int] = None + effective_cpus: Optional[int] = None + energy: Optional[AcctGatherEnergy] = None + external_sensors: Optional[ExtSensorsData] = None + extra: Optional[str] = None + features: Optional[CsvString] = None + free_mem: Optional[Uint64NoVal] = None + gres: Optional[str] = None + gres_drained: Optional[str] = None + gres_used: Optional[str] = None + hostname: Optional[str] = None + instance_id: Optional[str] = None + instance_type: Optional[str] = None + last_busy: Optional[Uint64NoVal] = None + mcs_label: Optional[str] = None + name: Optional[str] = None + next_state_after_reboot: Optional[list[NextStateAfterRebootEnum]] = None + operating_system: Optional[str] = None + owner: Optional[str] = None + partitions: Optional[CsvString] = None + port: Optional[int] = None + power: Optional[PowerMgmtData] = None + real_memory: Optional[int] = None + reason: Optional[str] = None + reason_changed_at: Optional[Uint64NoVal] = None + reason_set_by_user: Optional[str] = None + reservation: Optional[str] = None + resume_after: Optional[Uint64NoVal] = None + slurmd_start_time: Optional[Uint64NoVal] = None + sockets: Optional[int] = None + specialized_cores: Optional[int] = None + specialized_cpus: Optional[str] = None + specialized_memory: Optional[int] = None + state: Optional[list[StateEnum]] = None + temporary_disk: Optional[int] = None + threads: Optional[int] = None + tres: Optional[str] = None + tres_used: Optional[str] = None + tres_weighted: Optional[float] = None + version: Optional[str] = None + weight: Optional[int] = None class Nodes(BaseModel): @@ -2560,23 +2560,23 @@ class Nodes(BaseModel): class OpenapiAccountsAddCondResp(BaseModel): - account: AccountShort | None = None + account: Optional[AccountShort] = None """ Account organization and description """ - association_condition: AccountsAddCond | None = None + association_condition: Optional[AccountsAddCond] = None """ CSV list of accounts, association limits and options, CSV list of clusters """ - errors: OpenapiErrors | None = None + errors: Optional[OpenapiErrors] = None """ Query errors """ - meta: OpenapiMeta | None = None + meta: Optional[OpenapiMeta] = None """ Slurm meta values """ - warnings: OpenapiWarnings | None = None + warnings: Optional[OpenapiWarnings] = None """ Query warnings """ @@ -2587,26 +2587,26 @@ class OpenapiAccountsAddCondRespStr(BaseModel): """ added_accounts """ - errors: OpenapiErrors | None = None + errors: Optional[OpenapiErrors] = None """ Query errors """ - meta: OpenapiMeta | None = None + meta: Optional[OpenapiMeta] = None """ Slurm meta values """ - warnings: OpenapiWarnings | None = None + warnings: Optional[OpenapiWarnings] = None """ Query warnings """ class OpenapiAccountsRemovedResp(BaseModel): - errors: OpenapiErrors | None = None + errors: Optional[OpenapiErrors] = None """ Query errors """ - meta: OpenapiMeta | None = None + meta: Optional[OpenapiMeta] = None """ Slurm meta values """ @@ -2614,7 +2614,7 @@ class OpenapiAccountsRemovedResp(BaseModel): """ removed_accounts """ - warnings: OpenapiWarnings | None = None + warnings: Optional[OpenapiWarnings] = None """ Query warnings """ @@ -2625,26 +2625,26 @@ class OpenapiAccountsResp(BaseModel): """ accounts """ - errors: OpenapiErrors | None = None + errors: Optional[OpenapiErrors] = None """ Query errors """ - meta: OpenapiMeta | None = None + meta: Optional[OpenapiMeta] = None """ Slurm meta values """ - warnings: OpenapiWarnings | None = None + warnings: Optional[OpenapiWarnings] = None """ Query warnings """ class OpenapiAssocsRemovedResp(BaseModel): - errors: OpenapiErrors | None = None + errors: Optional[OpenapiErrors] = None """ Query errors """ - meta: OpenapiMeta | None = None + meta: Optional[OpenapiMeta] = None """ Slurm meta values """ @@ -2652,7 +2652,7 @@ class OpenapiAssocsRemovedResp(BaseModel): """ removed_associations """ - warnings: OpenapiWarnings | None = None + warnings: Optional[OpenapiWarnings] = None """ Query warnings """ @@ -2663,15 +2663,15 @@ class OpenapiAssocsResp(BaseModel): """ associations """ - errors: OpenapiErrors | None = None + errors: Optional[OpenapiErrors] = None """ Query errors """ - meta: OpenapiMeta | None = None + meta: Optional[OpenapiMeta] = None """ Slurm meta values """ - warnings: OpenapiWarnings | None = None + warnings: Optional[OpenapiWarnings] = None """ Query warnings """ @@ -2682,15 +2682,15 @@ class OpenapiClustersRemovedResp(BaseModel): """ deleted_clusters """ - errors: OpenapiErrors | None = None + errors: Optional[OpenapiErrors] = None """ Query errors """ - meta: OpenapiMeta | None = None + meta: Optional[OpenapiMeta] = None """ Slurm meta values """ - warnings: OpenapiWarnings | None = None + warnings: Optional[OpenapiWarnings] = None """ Query warnings """ @@ -2701,26 +2701,26 @@ class OpenapiClustersResp(BaseModel): """ clusters """ - errors: OpenapiErrors | None = None + errors: Optional[OpenapiErrors] = None """ Query errors """ - meta: OpenapiMeta | None = None + meta: Optional[OpenapiMeta] = None """ Slurm meta values """ - warnings: OpenapiWarnings | None = None + warnings: Optional[OpenapiWarnings] = None """ Query warnings """ class OpenapiDiagResp(BaseModel): - errors: OpenapiErrors | None = None + errors: Optional[OpenapiErrors] = None """ Query errors """ - meta: OpenapiMeta | None = None + meta: Optional[OpenapiMeta] = None """ Slurm meta values """ @@ -2728,14 +2728,14 @@ class OpenapiDiagResp(BaseModel): """ statistics """ - warnings: OpenapiWarnings | None = None + warnings: Optional[OpenapiWarnings] = None """ Query warnings """ class OpenapiInstancesResp(BaseModel): - errors: OpenapiErrors | None = None + errors: Optional[OpenapiErrors] = None """ Query errors """ @@ -2743,18 +2743,18 @@ class OpenapiInstancesResp(BaseModel): """ instances """ - meta: OpenapiMeta | None = None + meta: Optional[OpenapiMeta] = None """ Slurm meta values """ - warnings: OpenapiWarnings | None = None + warnings: Optional[OpenapiWarnings] = None """ Query warnings """ class OpenapiJobInfoResp(BaseModel): - errors: OpenapiErrors | None = None + errors: Optional[OpenapiErrors] = None """ Query errors """ @@ -2770,80 +2770,80 @@ class OpenapiJobInfoResp(BaseModel): """ time of last job change (UNIX timestamp) """ - meta: OpenapiMeta | None = None + meta: Optional[OpenapiMeta] = None """ Slurm meta values """ - warnings: OpenapiWarnings | None = None + warnings: Optional[OpenapiWarnings] = None """ Query warnings """ class OpenapiJobPostResponse(BaseModel): - errors: OpenapiErrors | None = None + errors: Optional[OpenapiErrors] = None """ Query errors """ - job_id: str | None = None + job_id: Optional[str] = None """ First updated JobId - Use results instead """ - job_submit_user_msg: str | None = None + job_submit_user_msg: Optional[str] = None """ First updated Job submision user message - Use results instead """ - meta: OpenapiMeta | None = None + meta: Optional[OpenapiMeta] = None """ Slurm meta values """ - results: JobArrayResponseArray | None = None + results: Optional[JobArrayResponseArray] = None """ Job update results """ - step_id: str | None = None + step_id: Optional[str] = None """ First updated StepID - Use results instead """ - warnings: OpenapiWarnings | None = None + warnings: Optional[OpenapiWarnings] = None """ Query warnings """ class OpenapiJobSubmitResponse(BaseModel): - errors: OpenapiErrors | None = None + errors: Optional[OpenapiErrors] = None """ Query errors """ - job_id: int | None = None + job_id: Optional[int] = None """ submited JobId """ - job_submit_user_msg: str | None = None + job_submit_user_msg: Optional[str] = None """ job submision user message """ - meta: OpenapiMeta | None = None + meta: Optional[OpenapiMeta] = None """ Slurm meta values """ - result: JobSubmitResponseMsg | None = None + result: Optional[JobSubmitResponseMsg] = None """ Job submission """ - step_id: str | None = None + step_id: Optional[str] = None """ submited StepID """ - warnings: OpenapiWarnings | None = None + warnings: Optional[OpenapiWarnings] = None """ Query warnings """ class OpenapiLicensesResp(BaseModel): - errors: OpenapiErrors | None = None + errors: Optional[OpenapiErrors] = None """ Query errors """ @@ -2855,18 +2855,18 @@ class OpenapiLicensesResp(BaseModel): """ list of licenses """ - meta: OpenapiMeta | None = None + meta: Optional[OpenapiMeta] = None """ Slurm meta values """ - warnings: OpenapiWarnings | None = None + warnings: Optional[OpenapiWarnings] = None """ Query warnings """ class OpenapiNodesResp(BaseModel): - errors: OpenapiErrors | None = None + errors: Optional[OpenapiErrors] = None """ Query errors """ @@ -2874,7 +2874,7 @@ class OpenapiNodesResp(BaseModel): """ time of last node change (UNIX timestamp) """ - meta: OpenapiMeta | None = None + meta: Optional[OpenapiMeta] = None """ Slurm meta values """ @@ -2882,14 +2882,14 @@ class OpenapiNodesResp(BaseModel): """ list of nodes """ - warnings: OpenapiWarnings | None = None + warnings: Optional[OpenapiWarnings] = None """ Query warnings """ class OpenapiPartitionResp(BaseModel): - errors: OpenapiErrors | None = None + errors: Optional[OpenapiErrors] = None """ Query errors """ @@ -2897,7 +2897,7 @@ class OpenapiPartitionResp(BaseModel): """ time of last partition change (UNIX timestamp) """ - meta: OpenapiMeta | None = None + meta: Optional[OpenapiMeta] = None """ Slurm meta values """ @@ -2905,14 +2905,14 @@ class OpenapiPartitionResp(BaseModel): """ list of partitions """ - warnings: OpenapiWarnings | None = None + warnings: Optional[OpenapiWarnings] = None """ Query warnings """ class OpenapiReservationResp(BaseModel): - errors: OpenapiErrors | None = None + errors: Optional[OpenapiErrors] = None """ Query errors """ @@ -2920,7 +2920,7 @@ class OpenapiReservationResp(BaseModel): """ time of last reservation change (UNIX timestamp) """ - meta: OpenapiMeta | None = None + meta: Optional[OpenapiMeta] = None """ Slurm meta values """ @@ -2928,18 +2928,18 @@ class OpenapiReservationResp(BaseModel): """ list of reservations """ - warnings: OpenapiWarnings | None = None + warnings: Optional[OpenapiWarnings] = None """ Query warnings """ class OpenapiSlurmdbdQosResp(BaseModel): - errors: OpenapiErrors | None = None + errors: Optional[OpenapiErrors] = None """ Query errors """ - meta: OpenapiMeta | None = None + meta: Optional[OpenapiMeta] = None """ Slurm meta values """ @@ -2947,18 +2947,18 @@ class OpenapiSlurmdbdQosResp(BaseModel): """ List of QOS """ - warnings: OpenapiWarnings | None = None + warnings: Optional[OpenapiWarnings] = None """ Query warnings """ class OpenapiSlurmdbdStatsResp(BaseModel): - errors: OpenapiErrors | None = None + errors: Optional[OpenapiErrors] = None """ Query errors """ - meta: OpenapiMeta | None = None + meta: Optional[OpenapiMeta] = None """ Slurm meta values """ @@ -2966,45 +2966,45 @@ class OpenapiSlurmdbdStatsResp(BaseModel): """ statistics """ - warnings: OpenapiWarnings | None = None + warnings: Optional[OpenapiWarnings] = None """ Query warnings """ class OpenapiUsersAddCondResp(BaseModel): - association_condition: UsersAddCond | None = None + association_condition: Optional[UsersAddCond] = None """ Filters to select associations for users """ - errors: OpenapiErrors | None = None + errors: Optional[OpenapiErrors] = None """ Query errors """ - meta: OpenapiMeta | None = None + meta: Optional[OpenapiMeta] = None """ Slurm meta values """ - user: UserShort | None = None + user: Optional[UserShort] = None """ Admin level of user, DefaultAccount, DefaultWCKey """ - warnings: OpenapiWarnings | None = None + warnings: Optional[OpenapiWarnings] = None """ Query warnings """ class OpenapiWckeyResp(BaseModel): - errors: OpenapiErrors | None = None + errors: Optional[OpenapiErrors] = None """ Query errors """ - meta: OpenapiMeta | None = None + meta: Optional[OpenapiMeta] = None """ Slurm meta values """ - warnings: OpenapiWarnings | None = None + warnings: Optional[OpenapiWarnings] = None """ Query warnings """ @@ -3015,41 +3015,41 @@ class OpenapiWckeyResp(BaseModel): class Consumed(BaseModel): - average: TresList | None = None - max: StepTresUsageMax | None = None - min: StepTresUsageMin | None = None - total: TresList | None = None + average: Optional[TresList] = None + max: Optional[StepTresUsageMax] = None + min: Optional[StepTresUsageMin] = None + total: Optional[TresList] = None class Requested(BaseModel): - average: TresList | None = None - max: StepTresReqMax | None = None - min: StepTresReqMin | None = None - total: TresList | None = None + average: Optional[TresList] = None + max: Optional[StepTresReqMax] = None + min: Optional[StepTresReqMin] = None + total: Optional[TresList] = None class Tres7(BaseModel): - allocated: TresList | None = None - consumed: Consumed | None = None - requested: Requested | None = None + allocated: Optional[TresList] = None + consumed: Optional[Consumed] = None + requested: Optional[Requested] = None class Step(BaseModel): - CPU: CPU | None = None - exit_code: ProcessExitCodeVerbose | None = None + CPU: Optional[CPU] = None + exit_code: Optional[ProcessExitCodeVerbose] = None """ return code returned by process """ - kill_request_user: str | None = None - nodes: Nodes2 | None = None - pid: str | None = None - state: list[StateEnum2] | None = None - statistics: Statistics | None = None - step: Step1 | None = None - task: Task | None = None - tasks: Tasks | None = None - time: Time4 | None = None - tres: Tres7 | None = None + kill_request_user: Optional[str] = None + nodes: Optional[Nodes2] = None + pid: Optional[str] = None + state: Optional[list[StateEnum2]] = None + statistics: Optional[Statistics] = None + step: Optional[Step1] = None + task: Optional[Task] = None + tasks: Optional[Tasks] = None + time: Optional[Time4] = None + tres: Optional[Tres7] = None class StepList(BaseModel): @@ -3057,14 +3057,14 @@ class StepList(BaseModel): class User2(BaseModel): - administrator_level: list[AdministratorLevelEnum] | None = None - associations: AssocShortList | None = None - coordinators: CoordList | None = None - default: Default1 | None = None - flags: list[Flag11] | None = None + administrator_level: Optional[list[AdministratorLevelEnum]] = None + associations: Optional[AssocShortList] = None + coordinators: Optional[CoordList] = None + default: Optional[Default1] = None + flags: Optional[list[Flag11]] = None name: str - old_name: str | None = None - wckeys: WckeyList | None = None + old_name: Optional[str] = None + wckeys: Optional[WckeyList] = None class UserList(BaseModel): @@ -3076,52 +3076,52 @@ class AssocSharesObjList(BaseModel): class Job(BaseModel): - account: str | None = None - allocation_nodes: int | None = None - array: Array | None = None - association: AssocShort | None = None - block: str | None = None - cluster: str | None = None - comment: Comment | None = None - constraints: str | None = None - container: str | None = None - derived_exit_code: ProcessExitCodeVerbose | None = None + account: Optional[str] = None + allocation_nodes: Optional[int] = None + array: Optional[Array] = None + association: Optional[AssocShort] = None + block: Optional[str] = None + cluster: Optional[str] = None + comment: Optional[Comment] = None + constraints: Optional[str] = None + container: Optional[str] = None + derived_exit_code: Optional[ProcessExitCodeVerbose] = None """ return code returned by process """ - exit_code: ProcessExitCodeVerbose | None = None + exit_code: Optional[ProcessExitCodeVerbose] = None """ return code returned by process """ - extra: str | None = None - failed_node: str | None = None - flags: list[Flag4] | None = None - group: str | None = None - het: Het | None = None - job_id: int | None = None - kill_request_user: str | None = None - licenses: str | None = None - mcs: Mcs | None = None - name: str | None = None - nodes: str | None = None - partition: str | None = None - priority: Uint32NoVal | None = None - qos: str | None = None - required: Required | None = None - reservation: Reservation | None = None - script: str | None = None - state: State | None = None - steps: StepList | None = None - submit_line: str | None = None - time: Time1 | None = None - tres: Tres3 | None = None - used_gres: str | None = None - user: str | None = None - wckey: WckeyTagStruct | None = None + extra: Optional[str] = None + failed_node: Optional[str] = None + flags: Optional[list[Flag4]] = None + group: Optional[str] = None + het: Optional[Het] = None + job_id: Optional[int] = None + kill_request_user: Optional[str] = None + licenses: Optional[str] = None + mcs: Optional[Mcs] = None + name: Optional[str] = None + nodes: Optional[str] = None + partition: Optional[str] = None + priority: Optional[Uint32NoVal] = None + qos: Optional[str] = None + required: Optional[Required] = None + reservation: Optional[Reservation] = None + script: Optional[str] = None + state: Optional[State] = None + steps: Optional[StepList] = None + submit_line: Optional[str] = None + time: Optional[Time1] = None + tres: Optional[Tres3] = None + used_gres: Optional[str] = None + user: Optional[str] = None + wckey: Optional[WckeyTagStruct] = None """ WCKey ID with tagging """ - working_directory: str | None = None + working_directory: Optional[str] = None class JobList(BaseModel): @@ -3129,54 +3129,54 @@ class JobList(BaseModel): class OpenapiSlurmdbdConfigResp(BaseModel): - accounts: AccountList | None = None + accounts: Optional[AccountList] = None """ accounts """ - associations: AssocList | None = None + associations: Optional[AssocList] = None """ associations """ - clusters: ClusterRecList | None = None + clusters: Optional[ClusterRecList] = None """ clusters """ - errors: OpenapiErrors | None = None + errors: Optional[OpenapiErrors] = None """ Query errors """ - instances: InstanceList | None = None + instances: Optional[InstanceList] = None """ instances """ - meta: OpenapiMeta | None = None + meta: Optional[OpenapiMeta] = None """ Slurm meta values """ - qos: QosList | None = None + qos: Optional[QosList] = None """ qos """ - tres: TresList | None = None + tres: Optional[TresList] = None """ tres """ - users: UserList | None = None + users: Optional[UserList] = None """ users """ - warnings: OpenapiWarnings | None = None + warnings: Optional[OpenapiWarnings] = None """ Query warnings """ - wckeys: WckeyList | None = None + wckeys: Optional[WckeyList] = None """ wckeys """ class OpenapiSlurmdbdJobsResp(BaseModel): - errors: OpenapiErrors | None = None + errors: Optional[OpenapiErrors] = None """ Query errors """ @@ -3184,22 +3184,22 @@ class OpenapiSlurmdbdJobsResp(BaseModel): """ jobs """ - meta: OpenapiMeta | None = None + meta: Optional[OpenapiMeta] = None """ Slurm meta values """ - warnings: OpenapiWarnings | None = None + warnings: Optional[OpenapiWarnings] = None """ Query warnings """ class OpenapiUsersResp(BaseModel): - errors: OpenapiErrors | None = None + errors: Optional[OpenapiErrors] = None """ Query errors """ - meta: OpenapiMeta | None = None + meta: Optional[OpenapiMeta] = None """ Slurm meta values """ @@ -3207,29 +3207,29 @@ class OpenapiUsersResp(BaseModel): """ users """ - warnings: OpenapiWarnings | None = None + warnings: Optional[OpenapiWarnings] = None """ Query warnings """ class SharesRespMsg(BaseModel): - shares: AssocSharesObjList | None = None + shares: Optional[AssocSharesObjList] = None """ Assocation shares """ - total_shares: int | None = None + total_shares: Optional[int] = None """ Total number of shares """ class OpenapiSharesResp(BaseModel): - errors: OpenapiErrors | None = None + errors: Optional[OpenapiErrors] = None """ Query errors """ - meta: OpenapiMeta | None = None + meta: Optional[OpenapiMeta] = None """ Slurm meta values """ @@ -3237,7 +3237,7 @@ class OpenapiSharesResp(BaseModel): """ fairshare info """ - warnings: OpenapiWarnings | None = None + warnings: Optional[OpenapiWarnings] = None """ Query warnings """ From 3d56a4779e98bcd61a2e2b8a860ce446773c18ea Mon Sep 17 00:00:00 2001 From: Irakli Sikharulidze Date: Wed, 27 Mar 2024 14:05:34 +0000 Subject: [PATCH 3/3] Fix list type reference for python 3.8 --- src/zocalo/util/slurm/models.py | 218 ++++++++++++++++---------------- 1 file changed, 109 insertions(+), 109 deletions(-) diff --git a/src/zocalo/util/slurm/models.py b/src/zocalo/util/slurm/models.py index 70743b8..a615581 100644 --- a/src/zocalo/util/slurm/models.py +++ b/src/zocalo/util/slurm/models.py @@ -73,7 +73,7 @@ class AssocShort(BaseModel): class AssocShortList(BaseModel): - __root__: list[AssocShort] + __root__: List[AssocShort] class BfExitFields(BaseModel): @@ -111,7 +111,7 @@ class ControllerPing(BaseModel): class ControllerPingArray(BaseModel): - __root__: list[ControllerPing] + __root__: List[ControllerPing] class Coord(BaseModel): @@ -120,7 +120,7 @@ class Coord(BaseModel): class CoordList(BaseModel): - __root__: list[Coord] + __root__: List[Coord] class Flag3(Enum): @@ -140,7 +140,7 @@ class CronEntry(BaseModel): command: Optional[str] = None day_of_month: Optional[str] = None day_of_week: Optional[str] = None - flags: Optional[list[Flag3]] = None + flags: Optional[List[Flag3]] = None hour: Optional[str] = None line: Optional[Line] = None minute: Optional[str] = None @@ -149,7 +149,7 @@ class CronEntry(BaseModel): class CsvString(BaseModel): - __root__: list[str] + __root__: List[str] class Float64NoVal(BaseModel): @@ -171,12 +171,12 @@ class Float64NoVal(BaseModel): """ -class Hostlist(BaseModel): - __root__: list[str] +class HostList(BaseModel): + __root__: List[str] -class HostlistString(BaseModel): - __root__: list[str] +class HostListString(BaseModel): + __root__: List[str] class Time(BaseModel): @@ -194,7 +194,7 @@ class Instance(BaseModel): class InstanceList(BaseModel): - __root__: list[Instance] + __root__: List[Instance] class Running(BaseModel): @@ -266,7 +266,7 @@ class CurrentEnum(Enum): class State(BaseModel): - current: Optional[list[CurrentEnum]] = None + current: Optional[List[CurrentEnum]] = None reason: Optional[str] = None @@ -473,7 +473,7 @@ class Flag7(Enum): class Power(BaseModel): - flags: Optional[list[Flag7]] = None + flags: Optional[List[Flag7]] = None class ShowFlag(Enum): @@ -487,7 +487,7 @@ class ShowFlag(Enum): class JobInfoGresDetail(BaseModel): - __root__: list[str] + __root__: List[str] class JobResNodes(BaseModel): @@ -495,7 +495,7 @@ class JobResNodes(BaseModel): job node resources """ - __root__: list + __root__: List """ job node resources """ @@ -522,7 +522,7 @@ class License(BaseModel): class Licenses(BaseModel): - __root__: list[License] + __root__: List[License] class NextStateAfterRebootEnum(Enum): @@ -613,7 +613,7 @@ class OpenapiError(BaseModel): class OpenapiErrors(BaseModel): - __root__: list[OpenapiError] + __root__: List[OpenapiError] class Client(BaseModel): @@ -689,7 +689,7 @@ class OpenapiWarning(BaseModel): class OpenapiWarnings(BaseModel): - __root__: list[OpenapiWarning] + __root__: List[OpenapiWarning] class Accounts(BaseModel): @@ -711,7 +711,7 @@ class Flag8(Enum): class Oversubscribe(BaseModel): - flags: Optional[list[Flag8]] = None + flags: Optional[List[Flag8]] = None jobs: Optional[int] = None @@ -734,7 +734,7 @@ class StateEnum1(Enum): class Partition(BaseModel): - state: Optional[list[StateEnum1]] = None + state: Optional[List[StateEnum1]] = None class Priority(BaseModel): @@ -788,7 +788,7 @@ class ModeEnum(Enum): class QosPreemptList(BaseModel): - __root__: list[str] + __root__: List[str] class QosStringIdList(BaseModel): @@ -796,7 +796,7 @@ class QosStringIdList(BaseModel): List of QOS names """ - __root__: list[str] + __root__: List[str] """ List of QOS names """ @@ -845,7 +845,7 @@ class Flag10(Enum): class ReservationInfoCoreSpec(BaseModel): - __root__: list[ReservationCoreSpec] + __root__: List[ReservationCoreSpec] class Type(Enum): @@ -891,12 +891,12 @@ class RollupStat(BaseModel): class RollupStats(BaseModel): """ - list of recorded rollup statistics + List of recorded rollup statistics """ - __root__: list[RollupStat] + __root__: List[RollupStat] """ - list of recorded rollup statistics + List of recorded rollup statistics """ @@ -921,7 +921,7 @@ class SharesFloat128Tres(BaseModel): class SharesFloat128TresList(BaseModel): - __root__: list[SharesFloat128Tres] + __root__: List[SharesFloat128Tres] class StatsMsgRpcsByTypeItem(BaseModel): @@ -956,7 +956,7 @@ class StatsMsgRpcsByType(BaseModel): RPCs by message type """ - __root__: list[StatsMsgRpcsByTypeItem] + __root__: List[StatsMsgRpcsByTypeItem] """ RPCs by message type """ @@ -994,7 +994,7 @@ class StatsMsgRpcsByUser(BaseModel): RPCs by user """ - __root__: list[StatsMsgRpcsByUserItem] + __root__: List[StatsMsgRpcsByUserItem] """ RPCs by user """ @@ -1012,7 +1012,7 @@ class StatsRpc(BaseModel): class StatsRpcList(BaseModel): - __root__: list[StatsRpc] + __root__: List[StatsRpc] class StatsUser(BaseModel): @@ -1022,12 +1022,12 @@ class StatsUser(BaseModel): class StatsUserList(BaseModel): - __root__: list[StatsUser] + __root__: List[StatsUser] class Nodes2(BaseModel): count: Optional[int] = None - list: Optional[Hostlist] = None + List: Optional[HostList] = None range: Optional[str] = None @@ -1083,11 +1083,11 @@ class Tasks(BaseModel): class StringArray(BaseModel): - __root__: list[str] + __root__: List[str] class StringList(BaseModel): - __root__: list[str] + __root__: List[str] class Tres(BaseModel): @@ -1098,7 +1098,7 @@ class Tres(BaseModel): class TresList(BaseModel): - __root__: list[Tres] + __root__: List[Tres] class Uint16NoVal(BaseModel): @@ -1193,7 +1193,7 @@ class StateEnum3(Enum): class UpdateNodeMsg(BaseModel): - address: Optional[HostlistString] = None + address: Optional[HostListString] = None """ communication name """ @@ -1221,11 +1221,11 @@ class UpdateNodeMsg(BaseModel): """ new generic resources for node """ - hostname: Optional[HostlistString] = None + hostname: Optional[HostListString] = None """ node's hostname """ - name: Optional[HostlistString] = None + name: Optional[HostListString] = None """ node to update """ @@ -1241,7 +1241,7 @@ class UpdateNodeMsg(BaseModel): """ automatically resume DOWN or DRAINED node after this amount of seconds """ - state: Optional[list[StateEnum3]] = None + state: Optional[List[StateEnum3]] = None """ assign new node state """ @@ -1276,7 +1276,7 @@ class AdminlevelEnum(Enum): class UserShort(BaseModel): - adminlevel: Optional[list[AdminlevelEnum]] = None + adminlevel: Optional[List[AdminlevelEnum]] = None """ Admin level of user. Valid levels are None, Operator, and Admin. """ @@ -1299,7 +1299,7 @@ class Flag13(Enum): class WckeyTagStruct(BaseModel): - flags: list[Flag13] + flags: List[Flag13] """ Active flags """ @@ -1313,13 +1313,13 @@ class Account(BaseModel): associations: Optional[AssocShortList] = None coordinators: Optional[CoordList] = None description: str - flags: Optional[list[Flag]] = None + flags: Optional[List[Flag]] = None name: str organization: str class AccountList(BaseModel): - __root__: list[Account] + __root__: List[Account] class Accounting(BaseModel): @@ -1330,7 +1330,7 @@ class Accounting(BaseModel): class AccountingList(BaseModel): - __root__: list[Accounting] + __root__: List[Accounting] class AcctGatherEnergy(BaseModel): @@ -1412,7 +1412,7 @@ class Assoc(BaseModel): comment for the association """ default: Optional[Default] = None - flags: Optional[list[Flag]] = None + flags: Optional[List[Flag]] = None id: Optional[AssocShort] = None """ Association ID @@ -1436,7 +1436,7 @@ class Assoc(BaseModel): class AssocList(BaseModel): - __root__: list[Assoc] + __root__: List[Assoc] class AssocRecSet(BaseModel): @@ -1530,7 +1530,7 @@ class AssocRecSet(BaseModel): class ClusterRec(BaseModel): associations: Optional[Associations] = None controller: Optional[Controller] = None - flags: Optional[list[Flag2]] = None + flags: Optional[List[Flag2]] = None name: Optional[str] = None nodes: Optional[str] = None rpc_version: Optional[int] = None @@ -1539,7 +1539,7 @@ class ClusterRec(BaseModel): class ClusterRecList(BaseModel): - __root__: list[ClusterRec] + __root__: List[ClusterRec] class ExtSensorsData(BaseModel): @@ -1586,7 +1586,7 @@ class Tres3(BaseModel): class JobArrayResponseArray(BaseModel): - __root__: list[JobArrayResponseMsgEntry] + __root__: List[JobArrayResponseMsgEntry] class Rlimits(BaseModel): @@ -1636,7 +1636,7 @@ class JobDescMsg(BaseModel): account: Optional[str] = None account_gather_frequency: Optional[str] = None admin_comment: Optional[str] = None - allocation_node_list: Optional[str] = None + allocation_node_List: Optional[str] = None allocation_node_port: Optional[int] = None argv: Optional[StringArray] = None array: Optional[str] = None @@ -1652,7 +1652,7 @@ class JobDescMsg(BaseModel): contiguous: Optional[bool] = None core_specification: Optional[int] = None cpu_binding: Optional[str] = None - cpu_binding_flags: Optional[list[CpuBindingFlag]] = None + cpu_binding_flags: Optional[List[CpuBindingFlag]] = None cpu_frequency: Optional[str] = None cpus_per_task: Optional[int] = None cpus_per_tres: Optional[str] = None @@ -1666,25 +1666,25 @@ class JobDescMsg(BaseModel): end_time: Optional[int] = None environment: Optional[StringArray] = None excluded_nodes: Optional[CsvString] = None - exclusive: Optional[list[ExclusiveEnum]] = None + exclusive: Optional[List[ExclusiveEnum]] = None extra: Optional[str] = None - flags: Optional[list[Flag5]] = None + flags: Optional[List[Flag5]] = None group_id: Optional[str] = None hetjob_group: Optional[int] = None immediate: Optional[bool] = None job_id: Optional[int] = None kill_on_node_fail: Optional[bool] = None kill_warning_delay: Optional[Uint16NoVal] = None - kill_warning_flags: Optional[list[KillWarningFlag]] = None + kill_warning_flags: Optional[List[KillWarningFlag]] = None kill_warning_signal: Optional[str] = None licenses: Optional[str] = None - mail_type: Optional[list[MailTypeEnum]] = None + mail_type: Optional[List[MailTypeEnum]] = None mail_user: Optional[str] = None maximum_cpus: Optional[int] = None maximum_nodes: Optional[int] = None mcs_label: Optional[str] = None memory_binding: Optional[str] = None - memory_binding_type: Optional[list[MemoryBindingTypeEnum]] = None + memory_binding_type: Optional[List[MemoryBindingTypeEnum]] = None memory_per_cpu: Optional[Uint64NoVal] = None memory_per_node: Optional[Uint64NoVal] = None memory_per_tres: Optional[str] = None @@ -1698,14 +1698,14 @@ class JobDescMsg(BaseModel): nice: Optional[int] = None nodes: Optional[str] = None ntasks_per_tres: Optional[int] = None - open_mode: Optional[list[OpenModeEnum]] = None + open_mode: Optional[List[OpenModeEnum]] = None overcommit: Optional[bool] = None oversubscribe: Optional[bool] = None partition: Optional[str] = None - power_flags: Optional[list[PowerFlag]] = None + power_flags: Optional[List[PowerFlag]] = None prefer: Optional[str] = None priority: Optional[Uint32NoVal] = None - profile: Optional[list[ProfileEnum]] = None + profile: Optional[List[ProfileEnum]] = None qos: Optional[str] = None reboot: Optional[bool] = None requeue: Optional[bool] = None @@ -1716,7 +1716,7 @@ class JobDescMsg(BaseModel): rlimits: Optional[Rlimits] = None script: Optional[str] = None selinux_context: Optional[str] = None - shared: Optional[list[SharedEnum]] = None + shared: Optional[List[SharedEnum]] = None site_factor: Optional[int] = None sockets_per_node: Optional[int] = None spank_environment: Optional[StringArray] = None @@ -1743,14 +1743,14 @@ class JobDescMsg(BaseModel): wait_all_nodes: Optional[bool] = None wait_for_switch: Optional[int] = None wckey: Optional[str] = None - x11: Optional[list[X11Enum]] = None + x11: Optional[List[X11Enum]] = None x11_magic_cookie: Optional[str] = None x11_target_host: Optional[str] = None x11_target_port: Optional[int] = None class JobDescMsgList(BaseModel): - __root__: list[JobDescMsg] + __root__: List[JobDescMsg] class JobRes(BaseModel): @@ -1944,7 +1944,7 @@ class PartitionInfo(BaseModel): class PartitionInfoMsg(BaseModel): - __root__: list[PartitionInfo] + __root__: List[PartitionInfo] class PowerMgmtData(BaseModel): @@ -1976,7 +1976,7 @@ class ProcessExitCodeVerbose(BaseModel): Process return code (numeric) """ signal: Optional[Signal] = None - status: Optional[list[StatusEnum]] = None + status: Optional[List[StatusEnum]] = None """ Status given by return code """ @@ -2068,13 +2068,13 @@ class Limits1(BaseModel): class Preempt(BaseModel): exempt_time: Optional[Uint32NoVal] = None - list: Optional[QosPreemptList] = None + List: Optional[QosPreemptList] = None mode: Optional[List[ModeEnum]] = None class Qos1(BaseModel): description: Optional[str] = None - flags: Optional[list[Flag9]] = None + flags: Optional[List[Flag9]] = None id: Optional[int] = None limits: Optional[Limits1] = None name: Optional[str] = None @@ -2085,7 +2085,7 @@ class Qos1(BaseModel): class QosList(BaseModel): - __root__: list[Qos1] + __root__: List[Qos1] class PurgeCompleted(BaseModel): @@ -2099,13 +2099,13 @@ class ReservationInfo(BaseModel): core_specializations: Optional[ReservationInfoCoreSpec] = None end_time: Optional[Uint64NoVal] = None features: Optional[str] = None - flags: Optional[list[Flag10]] = None + flags: Optional[List[Flag10]] = None groups: Optional[str] = None licenses: Optional[str] = None max_start_delay: Optional[int] = None name: Optional[str] = None node_count: Optional[int] = None - node_list: Optional[str] = None + node_List: Optional[str] = None partition: Optional[str] = None purge_completed: Optional[PurgeCompleted] = None start_time: Optional[Uint64NoVal] = None @@ -2115,7 +2115,7 @@ class ReservationInfo(BaseModel): class ReservationInfoMsg(BaseModel): - __root__: list[ReservationInfo] + __root__: List[ReservationInfo] class SharesUint64Tres(BaseModel): @@ -2130,7 +2130,7 @@ class SharesUint64Tres(BaseModel): class SharesUint64TresList(BaseModel): - __root__: list[SharesUint64Tres] + __root__: List[SharesUint64Tres] class StatsMsg(BaseModel): @@ -2221,25 +2221,25 @@ class Time4(BaseModel): class StepTresReqMax(BaseModel): - __root__: list[Tres] + __root__: List[Tres] class StepTresReqMin(BaseModel): - __root__: list[Tres] + __root__: List[Tres] class StepTresUsageMax(BaseModel): - __root__: list[Tres] + __root__: List[Tres] class StepTresUsageMin(BaseModel): - __root__: list[Tres] + __root__: List[Tres] class UsersAddCond(BaseModel): accounts: Optional[StringList] = None """ - CSV accounts list + CSV accounts List """ association: Optional[AssocRecSet] = None """ @@ -2247,39 +2247,39 @@ class UsersAddCond(BaseModel): """ clusters: Optional[StringList] = None """ - CSV clusters list + CSV clusters List """ partitions: Optional[StringList] = None """ - CSV partitions list + CSV partitions List """ users: StringList """ - CSV users list + CSV users List """ wckeys: Optional[StringList] = None """ - CSV WCKeys list + CSV WCKeys List """ class Wckey(BaseModel): accounting: Optional[AccountingList] = None cluster: str - flags: Optional[list[Flag12]] = None + flags: Optional[List[Flag12]] = None id: Optional[int] = None name: str user: str class WckeyList(BaseModel): - __root__: list[Wckey] + __root__: List[Wckey] class AccountsAddCond(BaseModel): accounts: StringList """ - CSV accounts list + CSV accounts List """ association: Optional[AssocRecSet] = None """ @@ -2287,7 +2287,7 @@ class AccountsAddCond(BaseModel): """ clusters: Optional[StringList] = None """ - CSV clusters list + CSV clusters List """ @@ -2341,7 +2341,7 @@ class AssocSharesObjWrap(BaseModel): normalized shares """ tres: Optional[Tres2] = None - type: Optional[list[TypeEnum]] = None + type: Optional[List[TypeEnum]] = None """ user or account association """ @@ -2398,7 +2398,7 @@ class JobInfo(BaseModel): eligible_time: Optional[Uint64NoVal] = None end_time: Optional[Uint64NoVal] = None excluded_nodes: Optional[str] = None - exclusive: Optional[list[ExclusiveEnum]] = None + exclusive: Optional[List[ExclusiveEnum]] = None exit_code: Optional[ProcessExitCodeVerbose] = None """ return code returned by process @@ -2409,7 +2409,7 @@ class JobInfo(BaseModel): federation_origin: Optional[str] = None federation_siblings_active: Optional[str] = None federation_siblings_viable: Optional[str] = None - flags: Optional[list[Flag5]] = None + flags: Optional[List[Flag5]] = None gres_detail: Optional[JobInfoGresDetail] = None group_id: Optional[int] = None group_name: Optional[str] = None @@ -2419,10 +2419,10 @@ class JobInfo(BaseModel): job_id: Optional[int] = None job_resources: Optional[JobRes] = None job_size_str: Optional[CsvString] = None - job_state: Optional[list[JobStateEnum]] = None + job_state: Optional[List[JobStateEnum]] = None last_sched_evaluation: Optional[Uint64NoVal] = None licenses: Optional[str] = None - mail_type: Optional[list[MailTypeEnum]] = None + mail_type: Optional[List[MailTypeEnum]] = None mail_user: Optional[str] = None max_cpus: Optional[Uint32NoVal] = None max_nodes: Optional[Uint32NoVal] = None @@ -2447,7 +2447,7 @@ class JobInfo(BaseModel): preemptable_time: Optional[Uint64NoVal] = None prefer: Optional[str] = None priority: Optional[Uint32NoVal] = None - profile: Optional[list[ProfileEnum]] = None + profile: Optional[List[ProfileEnum]] = None qos: Optional[str] = None reboot: Optional[bool] = None requeue: Optional[bool] = None @@ -2457,8 +2457,8 @@ class JobInfo(BaseModel): resv_name: Optional[str] = None scheduled_nodes: Optional[str] = None selinux_context: Optional[str] = None - shared: Optional[list[SharedEnum]] = None - show_flags: Optional[list[ShowFlag]] = None + shared: Optional[List[SharedEnum]] = None + show_flags: Optional[List[ShowFlag]] = None sockets_per_board: Optional[int] = None sockets_per_node: Optional[Uint16NoVal] = None standard_error: Optional[str] = None @@ -2494,7 +2494,7 @@ class JobInfo(BaseModel): class JobInfoMsg(BaseModel): - __root__: list[JobInfo] + __root__: List[JobInfo] class Node(BaseModel): @@ -2528,7 +2528,7 @@ class Node(BaseModel): last_busy: Optional[Uint64NoVal] = None mcs_label: Optional[str] = None name: Optional[str] = None - next_state_after_reboot: Optional[list[NextStateAfterRebootEnum]] = None + next_state_after_reboot: Optional[List[NextStateAfterRebootEnum]] = None operating_system: Optional[str] = None owner: Optional[str] = None partitions: Optional[CsvString] = None @@ -2545,7 +2545,7 @@ class Node(BaseModel): specialized_cores: Optional[int] = None specialized_cpus: Optional[str] = None specialized_memory: Optional[int] = None - state: Optional[list[StateEnum]] = None + state: Optional[List[StateEnum]] = None temporary_disk: Optional[int] = None threads: Optional[int] = None tres: Optional[str] = None @@ -2556,7 +2556,7 @@ class Node(BaseModel): class Nodes(BaseModel): - __root__: list[Node] + __root__: List[Node] class OpenapiAccountsAddCondResp(BaseModel): @@ -2566,7 +2566,7 @@ class OpenapiAccountsAddCondResp(BaseModel): """ association_condition: Optional[AccountsAddCond] = None """ - CSV list of accounts, association limits and options, CSV list of clusters + CSV List of accounts, association limits and options, CSV List of clusters """ errors: Optional[OpenapiErrors] = None """ @@ -2760,7 +2760,7 @@ class OpenapiJobInfoResp(BaseModel): """ jobs: JobInfoMsg """ - list of jobs + List of jobs """ last_backfill: Uint64NoVal """ @@ -2853,7 +2853,7 @@ class OpenapiLicensesResp(BaseModel): """ licenses: Licenses """ - list of licenses + List of licenses """ meta: Optional[OpenapiMeta] = None """ @@ -2880,7 +2880,7 @@ class OpenapiNodesResp(BaseModel): """ nodes: Nodes """ - list of nodes + List of nodes """ warnings: Optional[OpenapiWarnings] = None """ @@ -2903,7 +2903,7 @@ class OpenapiPartitionResp(BaseModel): """ partitions: PartitionInfoMsg """ - list of partitions + List of partitions """ warnings: Optional[OpenapiWarnings] = None """ @@ -2926,7 +2926,7 @@ class OpenapiReservationResp(BaseModel): """ reservations: ReservationInfoMsg """ - list of reservations + List of reservations """ warnings: Optional[OpenapiWarnings] = None """ @@ -3043,7 +3043,7 @@ class Step(BaseModel): kill_request_user: Optional[str] = None nodes: Optional[Nodes2] = None pid: Optional[str] = None - state: Optional[list[StateEnum2]] = None + state: Optional[List[StateEnum2]] = None statistics: Optional[Statistics] = None step: Optional[Step1] = None task: Optional[Task] = None @@ -3053,26 +3053,26 @@ class Step(BaseModel): class StepList(BaseModel): - __root__: list[Step] + __root__: List[Step] class User2(BaseModel): - administrator_level: Optional[list[AdministratorLevelEnum]] = None + administrator_level: Optional[List[AdministratorLevelEnum]] = None associations: Optional[AssocShortList] = None coordinators: Optional[CoordList] = None default: Optional[Default1] = None - flags: Optional[list[Flag11]] = None + flags: Optional[List[Flag11]] = None name: str old_name: Optional[str] = None wckeys: Optional[WckeyList] = None class UserList(BaseModel): - __root__: list[User2] + __root__: List[User2] class AssocSharesObjList(BaseModel): - __root__: list[AssocSharesObjWrap] + __root__: List[AssocSharesObjWrap] class Job(BaseModel): @@ -3095,7 +3095,7 @@ class Job(BaseModel): """ extra: Optional[str] = None failed_node: Optional[str] = None - flags: Optional[list[Flag4]] = None + flags: Optional[List[Flag4]] = None group: Optional[str] = None het: Optional[Het] = None job_id: Optional[int] = None @@ -3125,7 +3125,7 @@ class Job(BaseModel): class JobList(BaseModel): - __root__: list[Job] + __root__: List[Job] class OpenapiSlurmdbdConfigResp(BaseModel):