From 8ce2e9973e465120e330a57d21f89c6a19df95b4 Mon Sep 17 00:00:00 2001 From: Toni Harzendorf Date: Wed, 4 Dec 2024 15:17:40 +0100 Subject: [PATCH 01/11] slurm_get_errno was removed, just use errno directly --- pyslurm/core/error.pyx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pyslurm/core/error.pyx b/pyslurm/core/error.pyx index dd62f679..722f3097 100644 --- a/pyslurm/core/error.pyx +++ b/pyslurm/core/error.pyx @@ -24,7 +24,7 @@ from pyslurm.utils cimport cstr from pyslurm cimport slurm -from pyslurm.slurm cimport slurm_get_errno +cimport libc.errno def slurm_strerror(errno): @@ -36,7 +36,7 @@ def slurm_strerror(errno): returned. Returns: - (str): String representation of errno. + (str): String representation of errno. """ return cstr.to_unicode(slurm.slurm_strerror(errno)) @@ -47,7 +47,7 @@ def slurm_errno(): Returns: (int): Current slurm errno """ - return slurm_get_errno() + return libc.errno.errno def get_last_slurm_error(): @@ -75,7 +75,7 @@ class RPCError(PyslurmError): Args: errno (int): A slurm error number returned by RPC functions. Default is None, - which will get the last slurm error automatically. + which will get the last slurm error automatically. msg (str): An optional, custom error description. If this is set, the errno will not be translated to its string representation. @@ -89,7 +89,7 @@ class RPCError(PyslurmError): """ def __init__(self, errno=slurm.SLURM_ERROR, msg=None): self.msg = msg - self.errno = errno + self.errno = errno if not msg: if errno == slurm.SLURM_ERROR: From 3f380b2767de2d1e0a61aa3e9deb9e961ca64a14 Mon Sep 17 00:00:00 2001 From: Toni Harzendorf Date: Wed, 4 Dec 2024 15:19:13 +0100 Subject: [PATCH 02/11] "List" type was removed, use list_t now --- pyslurm/core/partition.pxd | 1 + pyslurm/core/partition.pyx | 2 +- pyslurm/db/qos.pxd | 5 +++-- pyslurm/db/qos.pyx | 2 +- pyslurm/db/util.pxd | 14 +++++++------- pyslurm/db/util.pyx | 10 +++++----- pyslurm/slurm/extra.pxi | 8 ++++---- 7 files changed, 22 insertions(+), 20 deletions(-) diff --git a/pyslurm/core/partition.pxd b/pyslurm/core/partition.pxd index 9319b6f4..ee178230 100644 --- a/pyslurm/core/partition.pxd +++ b/pyslurm/core/partition.pxd @@ -27,6 +27,7 @@ from libc.string cimport memcpy, memset from pyslurm cimport slurm from libc.stdint cimport uint8_t, uint16_t, uint32_t, uint64_t from pyslurm.slurm cimport ( + list_t, partition_info_msg_t, job_defaults_t, delete_part_msg_t, diff --git a/pyslurm/core/partition.pyx b/pyslurm/core/partition.pyx index f842eb28..9c50390b 100644 --- a/pyslurm/core/partition.pyx +++ b/pyslurm/core/partition.pyx @@ -807,7 +807,7 @@ def _preempt_mode_int_to_str(mode, slurmctld.Config slurm_conf): return cstr.to_unicode(slurm_preempt_mode_string(mode)) -cdef _extract_job_default_item(typ, slurm.List job_defaults_list): +cdef _extract_job_default_item(typ, list_t *job_defaults_list): cdef: job_defaults_t *default_item SlurmList job_def_list diff --git a/pyslurm/db/qos.pxd b/pyslurm/db/qos.pxd index ea0fde2d..02131974 100644 --- a/pyslurm/db/qos.pxd +++ b/pyslurm/db/qos.pxd @@ -30,7 +30,7 @@ from pyslurm.slurm cimport ( slurmdb_destroy_qos_cond, slurmdb_qos_get, slurm_preempt_mode_num, - List, + list_t, try_xmalloc, ) from pyslurm.db.util cimport ( @@ -40,8 +40,9 @@ from pyslurm.db.util cimport ( ) from pyslurm.db.connection cimport Connection from pyslurm.utils cimport cstr +from pyslurm.utils.uint cimport u16_set_bool_flag -cdef _set_qos_list(List *in_list, vals, QualitiesOfService data) +cdef _set_qos_list(list_t **in_list, vals, QualitiesOfService data) cdef class QualitiesOfService(dict): diff --git a/pyslurm/db/qos.pyx b/pyslurm/db/qos.pyx index c06a41b1..4c371209 100644 --- a/pyslurm/db/qos.pyx +++ b/pyslurm/db/qos.pyx @@ -223,6 +223,6 @@ def _validate_qos_single(qid, QualitiesOfService data): raise ValueError(f"Invalid QOS specified: {qid}") -cdef _set_qos_list(List *in_list, vals, QualitiesOfService data): +cdef _set_qos_list(list_t **in_list, vals, QualitiesOfService data): qos_ids = _qos_names_to_ids(vals, data) make_char_list(in_list, qos_ids) diff --git a/pyslurm/db/util.pxd b/pyslurm/db/util.pxd index 2593a31e..5b42584f 100644 --- a/pyslurm/db/util.pxd +++ b/pyslurm/db/util.pxd @@ -24,7 +24,7 @@ from pyslurm cimport slurm from pyslurm.utils cimport cstr from pyslurm.slurm cimport ( list_itr_t, - List, + list_t, slurm_list_iterator_create, slurm_list_iterator_destroy, slurm_list_iterator_reset, @@ -37,9 +37,9 @@ from pyslurm.slurm cimport ( slurm_xfree_ptr, ) -cdef slurm_list_to_pylist(List in_list) -cdef make_char_list(List *in_list, vals) -cdef qos_list_to_pylist(List in_list, qos_data) +cdef slurm_list_to_pylist(list_t *in_list) +cdef make_char_list(list_t **in_list, vals) +cdef qos_list_to_pylist(list_t *in_list, qos_data) cdef class SlurmListItem: @@ -51,16 +51,16 @@ cdef class SlurmListItem: cdef class SlurmList: cdef: - List info + list_t *info list_itr_t *itr cdef readonly: owned int itr_cnt int cnt - + @staticmethod - cdef SlurmList wrap(List, owned=*) + cdef SlurmList wrap(list_t *li, owned=*) @staticmethod cdef SlurmList create(slurm.ListDelF delf, owned=*) diff --git a/pyslurm/db/util.pyx b/pyslurm/db/util.pyx index 672886c2..bff854ec 100644 --- a/pyslurm/db/util.pyx +++ b/pyslurm/db/util.pyx @@ -23,7 +23,7 @@ # cython: language_level=3 -cdef make_char_list(List *in_list, vals): +cdef make_char_list(list_t **in_list, vals): if not vals: return None @@ -39,11 +39,11 @@ cdef make_char_list(List *in_list, vals): slist.owned = False -cdef slurm_list_to_pylist(List in_list): +cdef slurm_list_to_pylist(list_t *in_list): return SlurmList.wrap(in_list, owned=False).to_pylist() -cdef qos_list_to_pylist(List in_list, qos_data): +cdef qos_list_to_pylist(list_t *in_list, qos_data): if not in_list: return [] @@ -53,7 +53,7 @@ cdef qos_list_to_pylist(List in_list, qos_data): cdef class SlurmListItem: - + def __cinit__(self): self.data = NULL @@ -138,7 +138,7 @@ cdef class SlurmList: return wrapper @staticmethod - cdef SlurmList wrap(List li, owned=True): + cdef SlurmList wrap(list_t *li, owned=True): cdef SlurmList wrapper = SlurmList.__new__(SlurmList) if not li: return wrapper diff --git a/pyslurm/slurm/extra.pxi b/pyslurm/slurm/extra.pxi index 2909ce5d..55c68210 100644 --- a/pyslurm/slurm/extra.pxi +++ b/pyslurm/slurm/extra.pxi @@ -92,7 +92,7 @@ ctypedef struct forward_struct_t: uint16_t fwd_cnt pthread_mutex_t forward_mutex pthread_cond_t notify - List ret_list + list_t *ret_list uint32_t timeout # https://github.com/SchedMD/slurm/blob/slurm-24-05-3-1/src/common/slurm_protocol_defs.h#L271 @@ -117,7 +117,7 @@ ctypedef struct slurm_msg_t: forward_t forward forward_struct_t *forward_struct slurm_addr_t orig_addr - List ret_list + list_t *ret_list # https://github.com/SchedMD/slurm/blob/fe82218def7b57f5ecda9222e80662ebbb6415f8/src/common/slurm_protocol_defs.c#L865 cdef extern void slurm_free_return_code_msg(return_code_msg_t *msg) @@ -244,8 +244,8 @@ cdef extern char *slurm_node_state_string (uint32_t inx) cdef extern char *slurm_step_layout_type_name (task_dist_states_t task_dist) cdef extern char *slurm_reservation_flags_string (reserve_info_t *resv_ptr) cdef extern void slurm_free_stats_response_msg (stats_info_response_msg_t *msg) -cdef extern int slurm_addto_char_list_with_case(List char_list, char *names, bool lower_case_noralization) -cdef extern int slurm_addto_step_list(List step_list, char *names) +cdef extern int slurm_addto_char_list_with_case(list_t *char_list, char *names, bool lower_case_noralization) +cdef extern int slurm_addto_step_list(list_t *step_list, char *names) cdef extern int slurmdb_report_set_start_end_time(time_t *start, time_t *end) cdef extern uint16_t slurm_get_track_wckey() cdef extern void slurm_sprint_cpu_bind_type(char *str, cpu_bind_type_t cpu_bind_type) From 98d4cb4441ddc5fe865e482b6a711eab8304d38f Mon Sep 17 00:00:00 2001 From: Toni Harzendorf Date: Mon, 30 Dec 2024 10:26:13 +0100 Subject: [PATCH 03/11] qos: previous bool members were moved into a single flags variable --- pyslurm/db/qos.pyx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pyslurm/db/qos.pyx b/pyslurm/db/qos.pyx index 4c371209..6395c98f 100644 --- a/pyslurm/db/qos.pyx +++ b/pyslurm/db/qos.pyx @@ -124,7 +124,8 @@ cdef class QualityOfServiceFilter: make_char_list(&ptr.id_list, self.ids) make_char_list(&ptr.description_list, self.descriptions) ptr.preempt_mode = self._parse_preempt_modes() - ptr.with_deleted = 1 if bool(self.with_deleted) else 0 + u16_set_bool_flag(&ptr.flags, self.with_deleted, + slurm.QOS_COND_FLAG_WITH_DELETED) cdef class QualityOfService: From a5f8257c94efb58b49bd4467d310c8cace9ec46f Mon Sep 17 00:00:00 2001 From: Toni Harzendorf Date: Mon, 30 Dec 2024 10:26:43 +0100 Subject: [PATCH 04/11] bump version to 24.11.0 --- README.md | 10 +++++----- pyslurm/version.py | 2 +- setup.cfg | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index c57ee395..3b83e53d 100644 --- a/README.md +++ b/README.md @@ -8,16 +8,16 @@ pyslurm is the Python client library for the [Slurm Workload Manager](https://sl * [Python](https://www.python.org) - >= 3.6 * [Cython](https://cython.org) - >= 0.29.37 -This Version is for Slurm 24.05.x +This Version is for Slurm 24.11.x ## Versioning In pyslurm, the versioning scheme follows the official Slurm versioning. The first two numbers (`MAJOR.MINOR`) always correspond to Slurms Major-Release, -for example `24.05`. +for example `24.11`. The last number (`MICRO`) is however not tied in any way to Slurms `MICRO` version, but is instead PySlurm's internal Patch-Level. For example, any -pyslurm 24.05.X version should work with any Slurm 24.05.X release. +pyslurm 24.11.X version should work with any Slurm 24.11.X release. ## Installation @@ -29,8 +29,8 @@ the corresponding paths to the necessary files. You can specify those with environment variables (recommended), for example: ```shell -export SLURM_INCLUDE_DIR=/opt/slurm/24.05/include -export SLURM_LIB_DIR=/opt/slurm/24.05/lib +export SLURM_INCLUDE_DIR=/opt/slurm/24.11/include +export SLURM_LIB_DIR=/opt/slurm/24.11/lib ``` Then you can proceed to install pyslurm, for example by cloning the Repository: diff --git a/pyslurm/version.py b/pyslurm/version.py index a8060beb..9797941c 100644 --- a/pyslurm/version.py +++ b/pyslurm/version.py @@ -5,4 +5,4 @@ # The last Number "Z" is the current Pyslurm patch version, which should be # incremented each time a new release is made (except when migrating to a new # Slurm Major release, then set it back to 0) -__version__ = "24.5.1" +__version__ = "24.11.0" diff --git a/setup.cfg b/setup.cfg index 1a849c79..43c3b737 100644 --- a/setup.cfg +++ b/setup.cfg @@ -4,6 +4,6 @@ packager = Giovanni Torres doc_files = README.md examples/ build_requires = python3-devel >= 3.6 - slurm-devel >= 24.05.0 + slurm-devel >= 24.11.0 requires = slurm use_bzip2 = 1 From 98f851675c733ea9b068166076e77252eb92f15a Mon Sep 17 00:00:00 2001 From: Toni Harzendorf Date: Wed, 4 Dec 2024 15:22:28 +0100 Subject: [PATCH 05/11] JOB_UPDATE_DB was removed --- pyslurm/pydefines/slurm_defines.pxi | 1 - pyslurm/slurm/helpers.pxi | 3 --- 2 files changed, 4 deletions(-) diff --git a/pyslurm/pydefines/slurm_defines.pxi b/pyslurm/pydefines/slurm_defines.pxi index f86804e5..fe9b1ae1 100644 --- a/pyslurm/pydefines/slurm_defines.pxi +++ b/pyslurm/pydefines/slurm_defines.pxi @@ -26,7 +26,6 @@ DEFAULT_EIO_SHUTDOWN_WAIT = slurm.DEFAULT_EIO_SHUTDOWN_WAIT JOB_STATE_BASE = slurm.JOB_STATE_BASE JOB_STATE_FLAGS = slurm.JOB_STATE_FLAGS JOB_LAUNCH_FAILED = slurm.JOB_LAUNCH_FAILED -JOB_UPDATE_DB = slurm.JOB_UPDATE_DB JOB_REQUEUE = slurm.JOB_REQUEUE JOB_REQUEUE_HOLD = slurm.JOB_REQUEUE_HOLD JOB_SPECIAL_EXIT = slurm.JOB_SPECIAL_EXIT diff --git a/pyslurm/slurm/helpers.pxi b/pyslurm/slurm/helpers.pxi index abff2594..32ec989b 100644 --- a/pyslurm/slurm/helpers.pxi +++ b/pyslurm/slurm/helpers.pxi @@ -47,9 +47,6 @@ cdef inline IS_JOB_RESIZING(slurm_job_info_t *_X): cdef inline IS_JOB_REQUEUED(slurm_job_info_t *_X): return _X.job_state & JOB_REQUEUE -cdef inline IS_JOB_UPDATE_DB(slurm_job_info_t *_X): - return _X.job_state & JOB_UPDATE_DB - # # Node states # From 56f8f2508b6f1c0a6bba17865669ee6bfc3a5d39 Mon Sep 17 00:00:00 2001 From: Toni Harzendorf Date: Wed, 4 Dec 2024 15:22:45 +0100 Subject: [PATCH 06/11] add new headers for 24.11 --- pyslurm/slurm/slurm.h.pxi | 74 ++++-- pyslurm/slurm/slurm_errno.h.pxi | 10 +- pyslurm/slurm/slurmdb.h.pxi | 393 +++++++++++++++++--------------- 3 files changed, 261 insertions(+), 216 deletions(-) diff --git a/pyslurm/slurm/slurm.h.pxi b/pyslurm/slurm/slurm.h.pxi index 798bb666..76768ba8 100644 --- a/pyslurm/slurm/slurm.h.pxi +++ b/pyslurm/slurm/slurm.h.pxi @@ -9,7 +9,7 @@ # * C-Macros are listed with their appropriate uint type # * Any definitions that cannot be translated are not included in this file # -# Generated on 2024-07-12T16:21:51.963583 +# Generated on 2024-12-04T13:40:11.790952 # # The Original Copyright notice from slurm.h has been included # below: @@ -70,6 +70,8 @@ cdef extern from "slurm/slurm.h": uint32_t MAX_FED_JOB_ID uint8_t MAX_HET_JOB_COMPONENTS uint8_t MAX_FED_CLUSTERS + uint16_t MAX_JOB_SIZE_BITMAP + uint32_t MAX_SLURM_NODES uint32_t SLURM_MAX_NORMAL_STEP_ID uint32_t SLURM_PENDING_STEP uint32_t SLURM_EXTERN_CONT @@ -79,7 +81,6 @@ cdef extern from "slurm/slurm.h": uint8_t JOB_STATE_BASE uint32_t JOB_STATE_FLAGS uint16_t JOB_LAUNCH_FAILED - uint16_t JOB_UPDATE_DB uint16_t JOB_REQUEUE uint16_t JOB_REQUEUE_HOLD uint16_t JOB_SPECIAL_EXIT @@ -308,6 +309,8 @@ cdef extern from "slurm/slurm.h": uint16_t PART_FLAG_PDOI_CLR uint32_t PART_FLAG_EXCLUSIVE_TOPO uint32_t PART_FLAG_EXC_TOPO_CLR + uint32_t PART_FLAG_SCHED_FAILED + uint32_t PART_FLAG_SCHED_CLEARED uint8_t RESERVE_FLAG_MAINT uint8_t RESERVE_FLAG_NO_MAINT uint8_t RESERVE_FLAG_DAILY @@ -348,6 +351,7 @@ cdef extern from "slurm/slurm.h": uint64_t RESERVE_TRES_PER_NODE uint64_t RESERVE_FLAG_USER_DEL uint64_t RESERVE_FLAG_NO_USER_DEL + uint64_t RESERVE_FLAG_SCHED_FAILED uint8_t DEBUG_FLAG_SELECT_TYPE uint8_t DEBUG_FLAG_STEPS uint8_t DEBUG_FLAG_TRIGGERS @@ -357,7 +361,7 @@ cdef extern from "slurm/slurm.h": uint8_t DEBUG_FLAG_GRES uint8_t DEBUG_FLAG_MPI uint16_t DEBUG_FLAG_DATA - uint16_t DEBUG_FLAG_WORKQ + uint16_t DEBUG_FLAG_CONMGR uint16_t DEBUG_FLAG_NET uint16_t DEBUG_FLAG_PRIO uint16_t DEBUG_FLAG_BACKFILL @@ -529,6 +533,8 @@ cdef extern from "slurm/slurm.h": cdef extern from "slurm/slurm.h": + ctypedef uint64_t sluid_t + ctypedef sockaddr_storage slurm_addr_t ctypedef slurmdb_cluster_rec slurmdb_cluster_rec_t @@ -938,7 +944,6 @@ cdef extern from "slurm/slurm.h": CPU_BIND_TO_SOCKETS CPU_BIND_TO_LDOMS CPU_BIND_NONE - CPU_BIND_RANK CPU_BIND_MAP CPU_BIND_MASK CPU_BIND_LDRANK @@ -950,6 +955,7 @@ cdef extern from "slurm/slurm.h": CPU_AUTO_BIND_TO_SOCKETS SLURMD_OFF_SPEC CPU_BIND_OFF + OOM_KILL_STEP ctypedef cpu_bind_type cpu_bind_type_t @@ -1027,8 +1033,6 @@ cdef extern from "slurm/slurm.h": void slurm_hostlist_uniq(hostlist_t* hl) - ctypedef xlist* List - ctypedef xlist list_t ctypedef listIterator list_itr_t @@ -1082,6 +1086,7 @@ cdef extern from "slurm/slurm.h": uint32_t current_watts uint64_t previous_consumed_energy time_t poll_time + time_t slurmd_start_time ctypedef acct_gather_energy acct_gather_energy_t @@ -1153,6 +1158,7 @@ cdef extern from "slurm/slurm.h": char* network uint32_t nice uint32_t num_tasks + uint16_t oom_kill_step uint8_t open_mode char* origin_cluster uint16_t other_port @@ -1312,6 +1318,7 @@ cdef extern from "slurm/slurm.h": uint32_t num_cpus uint32_t num_nodes uint32_t num_tasks + uint16_t oom_kill_step char* partition char* prefer uint64_t pn_min_memory @@ -1322,7 +1329,7 @@ cdef extern from "slurm/slurm.h": time_t pre_sus_time uint32_t priority uint32_t* priority_array - char* priority_array_parts + char* priority_array_names uint32_t profile char* qos uint8_t reboot @@ -1337,7 +1344,6 @@ cdef extern from "slurm/slurm.h": char* sched_nodes char* selinux_context uint16_t shared - uint16_t show_flags uint32_t site_factor uint16_t sockets_per_board uint16_t sockets_per_node @@ -1411,6 +1417,26 @@ cdef extern from "slurm/slurm.h": ctypedef job_info_msg job_info_msg_t + cdef struct listjobs_info: + uint32_t job_id + + ctypedef listjobs_info listjobs_info_t + + cdef struct listpids_info: + uint32_t global_task_id + uint32_t job_id + uint32_t local_task_id + pid_t pid + char* step_id + + ctypedef listpids_info listpids_info_t + + cdef struct liststeps_info: + uint32_t job_id + char* step_id + + ctypedef liststeps_info liststeps_info_t + ctypedef struct job_state_response_job_t: uint32_t job_id uint32_t array_job_id @@ -1465,6 +1491,7 @@ cdef extern from "slurm/slurm.h": ctypedef slurm_step_layout slurm_step_layout_t cdef struct slurm_step_id_msg: + sluid_t sluid uint32_t job_id uint32_t step_het_comp uint32_t step_id @@ -1631,6 +1658,7 @@ cdef extern from "slurm/slurm.h": uint32_t spank_job_env_size char* tres_bind char* tres_freq + uint16_t oom_kill_step ctypedef void (*_slurm_step_launch_callbacks_t_slurm_step_launch_callbacks_t_step_complete_ft)(srun_job_complete_msg_t*) @@ -2088,8 +2116,11 @@ cdef extern from "slurm/slurm.h": char* bcast_exclude char* bcast_parameters time_t boot_time + char* certmgr_params + char* certmgr_type void* cgroup_conf char* cli_filter_plugins + uint16_t cluster_id char* cluster_name char* comm_params uint16_t complete_wait @@ -2100,6 +2131,7 @@ cdef extern from "slurm/slurm.h": uint32_t cpu_freq_def uint32_t cpu_freq_govs char* cred_type + char* data_parser_parameters uint64_t debug_flags uint64_t def_mem_per_cpu char* dependency_params @@ -2315,6 +2347,7 @@ cdef extern from "slurm/slurm.h": cdef struct slurm_update_node_msg: char* comment uint32_t cpu_bind + char* cert_token char* extra char* features char* features_act @@ -2349,6 +2382,11 @@ cdef extern from "slurm/slurm.h": ctypedef job_sbcast_cred_msg job_sbcast_cred_msg_t + cdef struct sbcast_cred_req_msg: + char* node_list + + ctypedef sbcast_cred_req_msg sbcast_cred_req_msg_t + ctypedef struct token_request_msg_t: uint32_t lifespan char* username @@ -2647,14 +2685,6 @@ cdef extern from "slurm/slurm.h": int slurm_reset_statistics(stats_info_request_msg_t* req) - int slurm_job_cpus_allocated_on_node_id(job_resources_t* job_resrcs_ptr, int node_id) - - int slurm_job_cpus_allocated_on_node(job_resources_t* job_resrcs_ptr, const char* node_name) - - int slurm_job_cpus_allocated_str_on_node_id(char* cpus, size_t cpus_len, job_resources_t* job_resrcs_ptr, int node_id) - - int slurm_job_cpus_allocated_str_on_node(char* cpus, size_t cpus_len, job_resources_t* job_resrcs_ptr, const char* node_name) - void slurm_free_job_info_msg(job_info_msg_t* job_buffer_ptr) void slurm_free_job_state_response_msg(job_state_response_msg_t* msg) @@ -2687,12 +2717,6 @@ cdef extern from "slurm/slurm.h": int slurm_pid2jobid(pid_t job_pid, uint32_t* job_id_ptr) - void slurm_print_job_info(FILE* out, slurm_job_info_t* job_ptr, int one_liner) - - void slurm_print_job_info_msg(FILE* out, job_info_msg_t* job_info_msg_ptr, int one_liner) - - char* slurm_sprint_job_info(slurm_job_info_t* job_ptr, int one_liner) - int slurm_update_job(job_desc_msg_t* job_msg) int slurm_update_job2(job_desc_msg_t* job_msg, job_array_resp_msg_t** resp) @@ -2825,6 +2849,12 @@ cdef extern from "slurm/slurm.h": long latency int offset + ctypedef struct slurmdbd_ping_t: + char* hostname + bool pinged + long latency + int offset + int slurm_ping(int dest) controller_ping_t* ping_all_controllers() diff --git a/pyslurm/slurm/slurm_errno.h.pxi b/pyslurm/slurm/slurm_errno.h.pxi index 25e83892..bfe33ee0 100644 --- a/pyslurm/slurm/slurm_errno.h.pxi +++ b/pyslurm/slurm/slurm_errno.h.pxi @@ -9,7 +9,7 @@ # * C-Macros are listed with their appropriate uint type # * Any definitions that cannot be translated are not included in this file # -# Generated on 2024-07-12T16:21:51.735507 +# Generated on 2024-12-04T13:40:11.641040 # # The Original Copyright notice from slurm_errno.h has been included # below: @@ -72,6 +72,9 @@ cdef extern from "slurm/slurm_errno.h": SLURM_PLUGIN_NAME_INVALID SLURM_UNKNOWN_FORWARD_ADDR SLURM_COMMUNICATIONS_MISSING_SOCKET_ERROR + SLURM_COMMUNICATIONS_INVALID_INCOMING_FD + SLURM_COMMUNICATIONS_INVALID_OUTGOING_FD + SLURM_COMMUNICATIONS_INVALID_FD SLURMCTLD_COMMUNICATIONS_CONNECTION_ERROR SLURMCTLD_COMMUNICATIONS_SEND_ERROR SLURMCTLD_COMMUNICATIONS_RECEIVE_ERROR @@ -180,7 +183,6 @@ cdef extern from "slurm/slurm_errno.h": ESLURM_BURST_BUFFER_WAIT ESLURM_PARTITION_DOWN ESLURM_DUPLICATE_GRES - ESLURM_JOB_SETTING_DB_INX ESLURM_RSV_ALREADY_STARTED ESLURM_SUBMISSIONS_DISABLED ESLURM_NOT_HET_JOB @@ -255,6 +257,7 @@ cdef extern from "slurm/slurm_errno.h": ESLURM_RES_CORES_PER_GPU_TOPO ESLURM_RES_CORES_PER_GPU_NO ESLURM_MAX_POWERED_NODES + ESLURM_REQUESTED_TOPO_CONFIG_UNAVAILABLE ESPANK_ERROR ESPANK_BAD_ARG ESPANK_NOT_TASK @@ -294,6 +297,7 @@ cdef extern from "slurm/slurm_errno.h": SLURM_PROTOCOL_SOCKET_IMPL_TIMEOUT SLURM_PROTOCOL_SOCKET_ZERO_BYTES_SENT ESLURM_AUTH_CRED_INVALID + ESLURM_AUTH_EXPIRED ESLURM_AUTH_BADARG ESLURM_AUTH_UNPACK ESLURM_AUTH_SKIP @@ -366,6 +370,4 @@ cdef extern from "slurm/slurm_errno.h": void slurm_seterrno(int errnum) - int slurm_get_errno() - void slurm_perror(const char* msg) diff --git a/pyslurm/slurm/slurmdb.h.pxi b/pyslurm/slurm/slurmdb.h.pxi index 93677249..9f2703f0 100644 --- a/pyslurm/slurm/slurmdb.h.pxi +++ b/pyslurm/slurm/slurmdb.h.pxi @@ -9,7 +9,7 @@ # * C-Macros are listed with their appropriate uint type # * Any definitions that cannot be translated are not included in this file # -# Generated on 2024-09-24T07:52:21.615726 +# Generated on 2024-12-04T13:40:12.010546 # # The Original Copyright notice from slurmdb.h has been included # below: @@ -66,6 +66,7 @@ cdef extern from "slurm/slurmdb.h": uint16_t QOS_FLAG_RELATIVE uint16_t QOS_FLAG_RELATIVE_SET uint16_t QOS_FLAG_PART_QOS + uint8_t QOS_COND_FLAG_WITH_DELETED uint32_t SLURMDB_RES_FLAG_BASE uint32_t SLURMDB_RES_FLAG_NOTSET uint32_t SLURMDB_RES_FLAG_ADD @@ -117,6 +118,14 @@ cdef extern from "slurm/slurmdb.h": uint16_t CLUSTER_FLAG_FE uint16_t CLUSTER_FLAG_FED uint16_t CLUSTER_FLAG_EXT + uint8_t ASSOC_COND_FLAG_WITH_DELETED + uint8_t ASSOC_COND_FLAG_WITH_USAGE + uint8_t ASSOC_COND_FLAG_ONLY_DEFS + uint8_t ASSOC_COND_FLAG_RAW_QOS + uint8_t ASSOC_COND_FLAG_SUB_ACCTS + uint8_t ASSOC_COND_FLAG_WOPI + uint8_t ASSOC_COND_FLAG_WOPL + uint8_t ASSOC_COND_FLAG_QOS_USAGE uint8_t SLURMDB_EVENT_COND_OPEN uint8_t DB_CONN_FLAG_CLUSTER_DEL uint8_t DB_CONN_FLAG_ROLLBACK @@ -215,54 +224,48 @@ cdef extern from "slurm/slurmdb.h": char* type ctypedef struct slurmdb_assoc_cond_t: - List acct_list - List cluster_list - List def_qos_id_list - List format_list - List id_list - uint16_t only_defs - List parent_acct_list - List partition_list - List qos_list + list_t* acct_list + list_t* cluster_list + list_t* def_qos_id_list + uint32_t flags + list_t* format_list + list_t* id_list + list_t* parent_acct_list + list_t* partition_list + list_t* qos_list time_t usage_end time_t usage_start - List user_list - uint16_t with_usage - uint16_t with_deleted - uint16_t with_raw_qos - uint16_t with_sub_accts - uint16_t without_parent_info - uint16_t without_parent_limits + list_t* user_list ctypedef struct slurmdb_job_cond_t: - List acct_list - List associd_list - List cluster_list - List constraint_list + list_t* acct_list + list_t* associd_list + list_t* cluster_list + list_t* constraint_list uint32_t cpus_max uint32_t cpus_min uint32_t db_flags int32_t exitcode uint32_t flags - List format_list - List groupid_list - List jobname_list + list_t* format_list + list_t* groupid_list + list_t* jobname_list uint32_t nodes_max uint32_t nodes_min - List partition_list - List qos_list - List reason_list - List resv_list - List resvid_list - List state_list - List step_list + list_t* partition_list + list_t* qos_list + list_t* reason_list + list_t* resv_list + list_t* resvid_list + list_t* state_list + list_t* step_list uint32_t timelimit_max uint32_t timelimit_min time_t usage_end time_t usage_start char* used_nodes - List userid_list - List wckey_list + list_t* userid_list + list_t* wckey_list ctypedef struct slurmdb_stats_t: double act_cpufreq @@ -296,13 +299,13 @@ cdef extern from "slurm/slurmdb.h": ctypedef struct slurmdb_account_cond_t: slurmdb_assoc_cond_t* assoc_cond - List description_list + list_t* description_list slurmdb_acct_flags_t flags - List organization_list + list_t* organization_list ctypedef struct slurmdb_account_rec_t: - List assoc_list - List coordinators + list_t* assoc_list + list_t* coordinators char* description slurmdb_acct_flags_t flags char* name @@ -311,6 +314,7 @@ cdef extern from "slurm/slurmdb.h": ctypedef struct slurmdb_accounting_rec_t: uint64_t alloc_secs uint32_t id + uint32_t id_alt time_t period_start slurmdb_tres_rec_t tres_rec @@ -332,10 +336,10 @@ cdef extern from "slurm/slurmdb.h": ctypedef struct slurmdb_tres_cond_t: uint64_t count - List format_list - List id_list - List name_list - List type_list + list_t* format_list + list_t* id_list + list_t* name_list + list_t* type_list uint16_t with_deleted ctypedef slurmdb_assoc_usage slurmdb_assoc_usage_t @@ -345,7 +349,7 @@ cdef extern from "slurm/slurmdb.h": ctypedef slurmdb_user_rec slurmdb_user_rec_t cdef struct slurmdb_assoc_rec: - List accounting_list + list_t* accounting_list char* acct slurmdb_assoc_rec* assoc_next slurmdb_assoc_rec* assoc_next_id @@ -386,7 +390,7 @@ cdef extern from "slurm/slurmdb.h": uint32_t parent_id char* partition uint32_t priority - List qos_list + list_t* qos_list uint32_t rgt uint32_t shares_raw uint32_t uid @@ -407,7 +411,7 @@ cdef extern from "slurm/slurmdb.h": cdef struct slurmdb_assoc_usage: uint32_t accrue_cnt - List children_list + list_t* children_list bitstr_t* grp_node_bitmap uint16_t* grp_node_job_cnt uint64_t* grp_used_tres @@ -435,18 +439,18 @@ cdef extern from "slurm/slurmdb.h": ctypedef struct slurmdb_cluster_cond_t: uint16_t classification - List cluster_list - List federation_list + list_t* cluster_list + list_t* federation_list uint32_t flags - List format_list - List rpc_version_list + list_t* format_list + list_t* rpc_version_list time_t usage_end time_t usage_start uint16_t with_deleted uint16_t with_usage ctypedef struct slurmdb_cluster_fed_t: - List feature_list + list_t* feature_list uint32_t id char* name void* recv @@ -456,7 +460,7 @@ cdef extern from "slurm/slurmdb.h": bool sync_sent cdef struct slurmdb_cluster_rec: - List accounting_list + list_t* accounting_list uint16_t classification time_t comm_fail_time slurm_addr_t control_addr @@ -464,6 +468,7 @@ cdef extern from "slurm/slurmdb.h": uint32_t control_port uint16_t dimensions int* dim_size + uint16_t id slurmdb_cluster_fed_t fed uint32_t flags pthread_mutex_t lock @@ -471,7 +476,7 @@ cdef extern from "slurm/slurmdb.h": char* nodes slurmdb_assoc_rec_t* root_assoc uint16_t rpc_version - List send_rpc + list_t* send_rpc char* tres_str ctypedef struct slurmdb_cluster_accounting_rec_t: @@ -493,18 +498,18 @@ cdef extern from "slurm/slurmdb.h": uint16_t direct ctypedef struct slurmdb_event_cond_t: - List cluster_list + list_t* cluster_list uint32_t cond_flags uint32_t cpus_max uint32_t cpus_min uint16_t event_type - List format_list + list_t* format_list char* node_list time_t period_end time_t period_start - List reason_list - List reason_uid_list - List state_list + list_t* reason_list + list_t* reason_uid_list + list_t* state_list ctypedef struct slurmdb_event_rec_t: char* cluster @@ -519,22 +524,22 @@ cdef extern from "slurm/slurmdb.h": char* tres_str ctypedef struct slurmdb_federation_cond_t: - List cluster_list - List federation_list - List format_list + list_t* cluster_list + list_t* federation_list + list_t* format_list uint16_t with_deleted ctypedef struct slurmdb_federation_rec_t: char* name uint32_t flags - List cluster_list + list_t* cluster_list ctypedef struct slurmdb_instance_cond_t: - List cluster_list - List extra_list - List format_list - List instance_id_list - List instance_type_list + list_t* cluster_list + list_t* extra_list + list_t* format_list + list_t* instance_id_list + list_t* instance_type_list char* node_list time_t time_end time_t time_start @@ -586,9 +591,11 @@ cdef extern from "slurm/slurmdb.h": char* partition uint32_t priority uint32_t qosid + char* qos_req uint32_t req_cpus uint64_t req_mem uint32_t requid + uint16_t restart_cnt uint32_t resvid char* resv_name char* script @@ -596,7 +603,7 @@ cdef extern from "slurm/slurmdb.h": time_t start uint32_t state uint32_t state_reason_prev - List steps + list_t* steps char* std_err char* std_in char* std_out @@ -622,8 +629,8 @@ cdef extern from "slurm/slurmdb.h": ctypedef struct slurmdb_qos_usage_t: uint32_t accrue_cnt - List acct_limit_list - List job_list + list_t* acct_limit_list + list_t* job_list bitstr_t* grp_node_bitmap uint16_t* grp_node_job_cnt uint32_t grp_used_jobs @@ -635,9 +642,10 @@ cdef extern from "slurm/slurmdb.h": uint32_t tres_cnt long double usage_raw long double* usage_tres_raw - List user_limit_list + list_t* user_limit_list ctypedef struct slurmdb_qos_rec_t: + time_t blocked_until char* description uint32_t id uint32_t flags @@ -679,7 +687,7 @@ cdef extern from "slurm/slurmdb.h": uint64_t* min_tres_pj_ctld char* name bitstr_t* preempt_bitstr - List preempt_list + list_t* preempt_list uint16_t preempt_mode uint32_t preempt_exempt_time uint32_t priority @@ -687,22 +695,21 @@ cdef extern from "slurm/slurmdb.h": slurmdb_qos_usage_t* usage double usage_factor double usage_thres - time_t blocked_until ctypedef struct slurmdb_qos_cond_t: - List description_list - List id_list - List format_list - List name_list + list_t* description_list + uint16_t flags + list_t* id_list + list_t* format_list + list_t* name_list uint16_t preempt_mode - uint16_t with_deleted ctypedef struct slurmdb_reservation_cond_t: - List cluster_list + list_t* cluster_list uint64_t flags - List format_list - List id_list - List name_list + list_t* format_list + list_t* id_list + list_t* name_list char* nodes time_t time_end time_t time_start @@ -722,7 +729,7 @@ cdef extern from "slurm/slurmdb.h": time_t time_start_prev char* tres_str double unused_wall - List tres_list + list_t* tres_list ctypedef struct slurmdb_step_rec_t: char* container @@ -756,22 +763,22 @@ cdef extern from "slurm/slurmdb.h": ctypedef struct slurmdb_res_cond_t: list_t* allowed_list - List cluster_list - List description_list + list_t* cluster_list + list_t* description_list uint32_t flags - List format_list - List id_list - List manager_list - List name_list - List server_list - List type_list + list_t* format_list + list_t* id_list + list_t* manager_list + list_t* name_list + list_t* server_list + list_t* type_list uint16_t with_deleted uint16_t with_clusters ctypedef struct slurmdb_res_rec_t: uint32_t allocated uint32_t last_consumed - List clus_res_list + list_t* clus_res_list slurmdb_clus_res_rec_t* clus_res_rec uint32_t count char* description @@ -784,17 +791,17 @@ cdef extern from "slurm/slurmdb.h": uint32_t type ctypedef struct slurmdb_txn_cond_t: - List acct_list - List action_list - List actor_list - List cluster_list - List format_list - List id_list - List info_list - List name_list + list_t* acct_list + list_t* action_list + list_t* actor_list + list_t* cluster_list + list_t* format_list + list_t* id_list + list_t* info_list + list_t* name_list time_t time_end time_t time_start - List user_list + list_t* user_list uint16_t with_assoc_info ctypedef struct slurmdb_txn_rec_t: @@ -822,8 +829,8 @@ cdef extern from "slurm/slurmdb.h": ctypedef struct slurmdb_user_cond_t: uint16_t admin_level slurmdb_assoc_cond_t* assoc_cond - List def_acct_list - List def_wckey_list + list_t* def_acct_list + list_t* def_wckey_list uint16_t with_assocs uint16_t with_coords uint16_t with_deleted @@ -836,30 +843,30 @@ cdef extern from "slurm/slurmdb.h": cdef struct slurmdb_user_rec: uint16_t admin_level - List assoc_list + list_t* assoc_list slurmdb_bf_usage_t* bf_usage - List coord_accts + list_t* coord_accts char* default_acct char* default_wckey uint32_t flags char* name char* old_name uint32_t uid - List wckey_list + list_t* wckey_list ctypedef struct slurmdb_update_object_t: - List objects + list_t* objects uint16_t type ctypedef struct slurmdb_wckey_cond_t: - List cluster_list - List format_list - List id_list - List name_list + list_t* cluster_list + list_t* format_list + list_t* id_list + list_t* name_list uint16_t only_defs time_t usage_end time_t usage_start - List user_list + list_t* user_list uint16_t with_usage uint16_t with_deleted @@ -868,7 +875,7 @@ cdef extern from "slurm/slurmdb.h": SLURMDB_WCKEY_FLAG_DELETED ctypedef struct slurmdb_wckey_rec_t: - List accounting_list + list_t* accounting_list char* cluster uint32_t flags uint32_t id @@ -887,49 +894,51 @@ cdef extern from "slurm/slurmdb.h": slurmdb_assoc_rec_t* assoc char* key char* sort_name - List children + list_t* children ctypedef struct slurmdb_report_assoc_rec_t: char* acct char* cluster + uint32_t id + uint32_t id_alt char* parent_acct - List tres_list + list_t* tres_list char* user ctypedef struct slurmdb_report_user_rec_t: char* acct - List acct_list - List assoc_list + list_t* acct_list + list_t* assoc_list char* name - List tres_list + list_t* tres_list uid_t uid ctypedef struct slurmdb_report_cluster_rec_t: - List accounting_list - List assoc_list + list_t* accounting_list + list_t* assoc_list char* name - List tres_list - List user_list + list_t* tres_list + list_t* user_list ctypedef struct slurmdb_report_job_grouping_t: uint32_t count - List jobs + list_t* jobs uint32_t min_size uint32_t max_size - List tres_list + list_t* tres_list ctypedef struct slurmdb_report_acct_grouping_t: char* acct uint32_t count - List groups + list_t* groups char* lineage - List tres_list + list_t* tres_list ctypedef struct slurmdb_report_cluster_grouping_t: - List acct_list + list_t* acct_list char* cluster uint32_t count - List tres_list + list_t* tres_list cdef enum: DBD_ROLLUP_HOUR @@ -953,58 +962,58 @@ cdef extern from "slurm/slurmdb.h": ctypedef struct slurmdb_stats_rec_t: slurmdb_rollup_stats_t* dbd_rollup_stats - List rollup_stats - List rpc_list + list_t* rollup_stats + list_t* rpc_list time_t time_start - List user_list + list_t* user_list slurmdb_cluster_rec_t* working_cluster_rec - int slurmdb_accounts_add(void* db_conn, List acct_list) + int slurmdb_accounts_add(void* db_conn, list_t* acct_list) char* slurmdb_accounts_add_cond(void* db_conn, slurmdb_add_assoc_cond_t* add_assoc, slurmdb_account_rec_t* acct) - List slurmdb_accounts_get(void* db_conn, slurmdb_account_cond_t* acct_cond) + list_t* slurmdb_accounts_get(void* db_conn, slurmdb_account_cond_t* acct_cond) - List slurmdb_accounts_modify(void* db_conn, slurmdb_account_cond_t* acct_cond, slurmdb_account_rec_t* acct) + list_t* slurmdb_accounts_modify(void* db_conn, slurmdb_account_cond_t* acct_cond, slurmdb_account_rec_t* acct) - List slurmdb_accounts_remove(void* db_conn, slurmdb_account_cond_t* acct_cond) + list_t* slurmdb_accounts_remove(void* db_conn, slurmdb_account_cond_t* acct_cond) int slurmdb_archive(void* db_conn, slurmdb_archive_cond_t* arch_cond) int slurmdb_archive_load(void* db_conn, slurmdb_archive_rec_t* arch_rec) - int slurmdb_associations_add(void* db_conn, List assoc_list) + int slurmdb_associations_add(void* db_conn, list_t* assoc_list) - List slurmdb_associations_get(void* db_conn, slurmdb_assoc_cond_t* assoc_cond) + list_t* slurmdb_associations_get(void* db_conn, slurmdb_assoc_cond_t* assoc_cond) - List slurmdb_associations_modify(void* db_conn, slurmdb_assoc_cond_t* assoc_cond, slurmdb_assoc_rec_t* assoc) + list_t* slurmdb_associations_modify(void* db_conn, slurmdb_assoc_cond_t* assoc_cond, slurmdb_assoc_rec_t* assoc) - List slurmdb_associations_remove(void* db_conn, slurmdb_assoc_cond_t* assoc_cond) + list_t* slurmdb_associations_remove(void* db_conn, slurmdb_assoc_cond_t* assoc_cond) - int slurmdb_clusters_add(void* db_conn, List cluster_list) + int slurmdb_clusters_add(void* db_conn, list_t* cluster_list) - List slurmdb_clusters_get(void* db_conn, slurmdb_cluster_cond_t* cluster_cond) + list_t* slurmdb_clusters_get(void* db_conn, slurmdb_cluster_cond_t* cluster_cond) - List slurmdb_clusters_modify(void* db_conn, slurmdb_cluster_cond_t* cluster_cond, slurmdb_cluster_rec_t* cluster) + list_t* slurmdb_clusters_modify(void* db_conn, slurmdb_cluster_cond_t* cluster_cond, slurmdb_cluster_rec_t* cluster) - List slurmdb_clusters_remove(void* db_conn, slurmdb_cluster_cond_t* cluster_cond) + list_t* slurmdb_clusters_remove(void* db_conn, slurmdb_cluster_cond_t* cluster_cond) - List slurmdb_report_cluster_account_by_user(void* db_conn, slurmdb_assoc_cond_t* assoc_cond) + list_t* slurmdb_report_cluster_account_by_user(void* db_conn, slurmdb_assoc_cond_t* assoc_cond) - List slurmdb_report_cluster_user_by_account(void* db_conn, slurmdb_assoc_cond_t* assoc_cond) + list_t* slurmdb_report_cluster_user_by_account(void* db_conn, slurmdb_assoc_cond_t* assoc_cond) - List slurmdb_report_cluster_wckey_by_user(void* db_conn, slurmdb_wckey_cond_t* wckey_cond) + list_t* slurmdb_report_cluster_wckey_by_user(void* db_conn, slurmdb_wckey_cond_t* wckey_cond) - List slurmdb_report_cluster_user_by_wckey(void* db_conn, slurmdb_wckey_cond_t* wckey_cond) + list_t* slurmdb_report_cluster_user_by_wckey(void* db_conn, slurmdb_wckey_cond_t* wckey_cond) - List slurmdb_report_job_sizes_grouped_by_account(void* db_conn, slurmdb_job_cond_t* job_cond, List grouping_list, bool flat_view, bool acct_as_parent) + list_t* slurmdb_report_job_sizes_grouped_by_account(void* db_conn, slurmdb_job_cond_t* job_cond, list_t* grouping_list, bool flat_view, bool acct_as_parent) - List slurmdb_report_job_sizes_grouped_by_wckey(void* db_conn, slurmdb_job_cond_t* job_cond, List grouping_list) + list_t* slurmdb_report_job_sizes_grouped_by_wckey(void* db_conn, slurmdb_job_cond_t* job_cond, list_t* grouping_list) - List slurmdb_report_job_sizes_grouped_by_account_then_wckey(void* db_conn, slurmdb_job_cond_t* job_cond, List grouping_list, bool flat_view, bool acct_as_parent) + list_t* slurmdb_report_job_sizes_grouped_by_account_then_wckey(void* db_conn, slurmdb_job_cond_t* job_cond, list_t* grouping_list, bool flat_view, bool acct_as_parent) - List slurmdb_report_user_top_usage(void* db_conn, slurmdb_user_cond_t* user_cond, bool group_accounts) + list_t* slurmdb_report_user_top_usage(void* db_conn, slurmdb_user_cond_t* user_cond, bool group_accounts) void* slurmdb_connection_get(uint16_t* persist_conn_flags) @@ -1012,29 +1021,29 @@ cdef extern from "slurm/slurmdb.h": int slurmdb_connection_commit(void* db_conn, bool commit) - int slurmdb_coord_add(void* db_conn, List acct_list, slurmdb_user_cond_t* user_cond) + int slurmdb_coord_add(void* db_conn, list_t* acct_list, slurmdb_user_cond_t* user_cond) - List slurmdb_coord_remove(void* db_conn, List acct_list, slurmdb_user_cond_t* user_cond) + list_t* slurmdb_coord_remove(void* db_conn, list_t* acct_list, slurmdb_user_cond_t* user_cond) - int slurmdb_federations_add(void* db_conn, List federation_list) + int slurmdb_federations_add(void* db_conn, list_t* federation_list) - List slurmdb_federations_modify(void* db_conn, slurmdb_federation_cond_t* fed_cond, slurmdb_federation_rec_t* fed) + list_t* slurmdb_federations_modify(void* db_conn, slurmdb_federation_cond_t* fed_cond, slurmdb_federation_rec_t* fed) - List slurmdb_federations_remove(void* db_conn, slurmdb_federation_cond_t* fed_cond) + list_t* slurmdb_federations_remove(void* db_conn, slurmdb_federation_cond_t* fed_cond) - List slurmdb_federations_get(void* db_conn, slurmdb_federation_cond_t* fed_cond) + list_t* slurmdb_federations_get(void* db_conn, slurmdb_federation_cond_t* fed_cond) - List slurmdb_job_modify(void* db_conn, slurmdb_job_cond_t* job_cond, slurmdb_job_rec_t* job) + list_t* slurmdb_job_modify(void* db_conn, slurmdb_job_cond_t* job_cond, slurmdb_job_rec_t* job) - List slurmdb_jobs_get(void* db_conn, slurmdb_job_cond_t* job_cond) + list_t* slurmdb_jobs_get(void* db_conn, slurmdb_job_cond_t* job_cond) - int slurmdb_jobs_fix_runaway(void* db_conn, List jobs) + int slurmdb_jobs_fix_runaway(void* db_conn, list_t* jobs) int slurmdb_jobcomp_init() int slurmdb_jobcomp_fini() - List slurmdb_jobcomp_jobs_get(slurmdb_job_cond_t* job_cond) + list_t* slurmdb_jobcomp_jobs_get(slurmdb_job_cond_t* job_cond) int slurmdb_reconfig(void* db_conn) @@ -1044,23 +1053,23 @@ cdef extern from "slurm/slurmdb.h": int slurmdb_get_stats(void* db_conn, slurmdb_stats_rec_t** stats_pptr) - List slurmdb_config_get(void* db_conn) + list_t* slurmdb_config_get(void* db_conn) - List slurmdb_events_get(void* db_conn, slurmdb_event_cond_t* event_cond) + list_t* slurmdb_events_get(void* db_conn, slurmdb_event_cond_t* event_cond) - List slurmdb_instances_get(void* db_conn, slurmdb_instance_cond_t* instance_cond) + list_t* slurmdb_instances_get(void* db_conn, slurmdb_instance_cond_t* instance_cond) - List slurmdb_problems_get(void* db_conn, slurmdb_assoc_cond_t* assoc_cond) + list_t* slurmdb_problems_get(void* db_conn, slurmdb_assoc_cond_t* assoc_cond) - List slurmdb_reservations_get(void* db_conn, slurmdb_reservation_cond_t* resv_cond) + list_t* slurmdb_reservations_get(void* db_conn, slurmdb_reservation_cond_t* resv_cond) - List slurmdb_txn_get(void* db_conn, slurmdb_txn_cond_t* txn_cond) + list_t* slurmdb_txn_get(void* db_conn, slurmdb_txn_cond_t* txn_cond) - List slurmdb_get_info_cluster(char* cluster_names) + list_t* slurmdb_get_info_cluster(char* cluster_names) int slurmdb_get_first_avail_cluster(job_desc_msg_t* req, char* cluster_names, slurmdb_cluster_rec_t** cluster_rec) - int slurmdb_get_first_het_job_cluster(List job_req_list, char* cluster_names, slurmdb_cluster_rec_t** cluster_rec) + int slurmdb_get_first_het_job_cluster(list_t* job_req_list, char* cluster_names, slurmdb_cluster_rec_t** cluster_rec) void slurmdb_destroy_assoc_usage(void* object) @@ -1214,52 +1223,56 @@ cdef extern from "slurm/slurmdb.h": void slurmdb_init_res_cond(slurmdb_res_cond_t* cluster, bool free_it) - List slurmdb_get_hierarchical_sorted_assoc_list(List assoc_list) + int slurmdb_ping(char* rem_host) + + slurmdbd_ping_t* slurmdb_ping_all() + + list_t* slurmdb_get_hierarchical_sorted_assoc_list(list_t* assoc_list) - List slurmdb_get_acct_hierarchical_rec_list(List assoc_list) + list_t* slurmdb_get_acct_hierarchical_rec_list(list_t* assoc_list) - char* slurmdb_tree_name_get(char* name, char* parent, List tree_list) + char* slurmdb_tree_name_get(char* name, char* parent, list_t* tree_list) - int slurmdb_res_add(void* db_conn, List res_list) + int slurmdb_res_add(void* db_conn, list_t* res_list) - List slurmdb_res_get(void* db_conn, slurmdb_res_cond_t* res_cond) + list_t* slurmdb_res_get(void* db_conn, slurmdb_res_cond_t* res_cond) - List slurmdb_res_modify(void* db_conn, slurmdb_res_cond_t* res_cond, slurmdb_res_rec_t* res) + list_t* slurmdb_res_modify(void* db_conn, slurmdb_res_cond_t* res_cond, slurmdb_res_rec_t* res) - List slurmdb_res_remove(void* db_conn, slurmdb_res_cond_t* res_cond) + list_t* slurmdb_res_remove(void* db_conn, slurmdb_res_cond_t* res_cond) - int slurmdb_qos_add(void* db_conn, List qos_list) + int slurmdb_qos_add(void* db_conn, list_t* qos_list) - List slurmdb_qos_get(void* db_conn, slurmdb_qos_cond_t* qos_cond) + list_t* slurmdb_qos_get(void* db_conn, slurmdb_qos_cond_t* qos_cond) - List slurmdb_qos_modify(void* db_conn, slurmdb_qos_cond_t* qos_cond, slurmdb_qos_rec_t* qos) + list_t* slurmdb_qos_modify(void* db_conn, slurmdb_qos_cond_t* qos_cond, slurmdb_qos_rec_t* qos) - List slurmdb_qos_remove(void* db_conn, slurmdb_qos_cond_t* qos_cond) + list_t* slurmdb_qos_remove(void* db_conn, slurmdb_qos_cond_t* qos_cond) - int slurmdb_tres_add(void* db_conn, List tres_list) + int slurmdb_tres_add(void* db_conn, list_t* tres_list) - List slurmdb_tres_get(void* db_conn, slurmdb_tres_cond_t* tres_cond) + list_t* slurmdb_tres_get(void* db_conn, slurmdb_tres_cond_t* tres_cond) int slurmdb_usage_get(void* db_conn, void* in_, int type, time_t start, time_t end) - int slurmdb_usage_roll(void* db_conn, time_t sent_start, time_t sent_end, uint16_t archive_data, List* rollup_stats_list_in) + int slurmdb_usage_roll(void* db_conn, time_t sent_start, time_t sent_end, uint16_t archive_data, list_t** rollup_stats_list_in) - int slurmdb_users_add(void* db_conn, List user_list) + int slurmdb_users_add(void* db_conn, list_t* user_list) char* slurmdb_users_add_cond(void* db_conn, slurmdb_add_assoc_cond_t* add_assoc, slurmdb_user_rec_t* user) - List slurmdb_users_add_conn(void* db_conn, slurmdb_user_rec_t* user, slurmdb_assoc_cond_t* assoc_cond, slurmdb_assoc_rec_t* assoc) + list_t* slurmdb_users_add_conn(void* db_conn, slurmdb_user_rec_t* user, slurmdb_assoc_cond_t* assoc_cond, slurmdb_assoc_rec_t* assoc) - List slurmdb_users_get(void* db_conn, slurmdb_user_cond_t* user_cond) + list_t* slurmdb_users_get(void* db_conn, slurmdb_user_cond_t* user_cond) - List slurmdb_users_modify(void* db_conn, slurmdb_user_cond_t* user_cond, slurmdb_user_rec_t* user) + list_t* slurmdb_users_modify(void* db_conn, slurmdb_user_cond_t* user_cond, slurmdb_user_rec_t* user) - List slurmdb_users_remove(void* db_conn, slurmdb_user_cond_t* user_cond) + list_t* slurmdb_users_remove(void* db_conn, slurmdb_user_cond_t* user_cond) - int slurmdb_wckeys_add(void* db_conn, List wckey_list) + int slurmdb_wckeys_add(void* db_conn, list_t* wckey_list) - List slurmdb_wckeys_get(void* db_conn, slurmdb_wckey_cond_t* wckey_cond) + list_t* slurmdb_wckeys_get(void* db_conn, slurmdb_wckey_cond_t* wckey_cond) - List slurmdb_wckeys_modify(void* db_conn, slurmdb_wckey_cond_t* wckey_cond, slurmdb_wckey_rec_t* wckey) + list_t* slurmdb_wckeys_modify(void* db_conn, slurmdb_wckey_cond_t* wckey_cond, slurmdb_wckey_rec_t* wckey) - List slurmdb_wckeys_remove(void* db_conn, slurmdb_wckey_cond_t* wckey_cond) + list_t* slurmdb_wckeys_remove(void* db_conn, slurmdb_wckey_cond_t* wckey_cond) From 1a811030ebec43efcec1c68414183c913ddf8a01 Mon Sep 17 00:00:00 2001 From: Toni Harzendorf Date: Thu, 5 Dec 2024 08:38:03 +0100 Subject: [PATCH 07/11] make pyslurm.pyx compatible with 24.11.x - print_job_info_msg removed - the underlying API call was removed by the slurm devs - change List to list_t - slurm_get_errno was removed, use errno directly - set cpus_allocated to 0 and cpus_alloc_layout to empty list when retrieving jobs - API calls were removed (and this class is deprecated anyway) --- pyslurm/deprecated.pyx | 229 ++++++++---------------- pyslurm/pydefines/slurm_defines.pxi | 1 - pyslurm/pydefines/slurm_enums.pxi | 1 - pyslurm/pydefines/slurm_errno_enums.pxi | 1 - 4 files changed, 72 insertions(+), 160 deletions(-) diff --git a/pyslurm/deprecated.pyx b/pyslurm/deprecated.pyx index 676f0adc..86ba2105 100644 --- a/pyslurm/deprecated.pyx +++ b/pyslurm/deprecated.pyx @@ -248,9 +248,6 @@ cdef inline IS_JOB_REQUEUED(slurm.slurm_job_info_t _X): cdef inline IS_JOB_FED_REQUEUED(slurm.slurm_job_info_t _X): return (_X.job_state & JOB_REQUEUE_FED) -cdef inline IS_JOB_UPDATE_DB(slurm.slurm_job_info_t _X): - return (_X.job_state & JOB_UPDATE_DB) - cdef inline IS_JOB_REVOKED(slurm.slurm_job_info_t _X): return (_X.job_state & JOB_REVOKED) @@ -353,7 +350,7 @@ def get_controllers(): uint32_t length = 0 if errCode != 0: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) control_machs = [] @@ -535,7 +532,7 @@ cdef class config: int errCode = slurm.slurm_load_ctl_conf(Time, &slurm_ctl_conf_ptr) if errCode != 0: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) self.__Config_ptr = slurm_ctl_conf_ptr @@ -549,7 +546,7 @@ cdef class config: """ cdef: void *ret_list = NULL - slurm.List config_list = NULL + slurm.list_t *config_list = NULL slurm.list_itr_t *iters = NULL config_key_pair_t *keyPairs @@ -559,7 +556,7 @@ cdef class config: if self.__Config_ptr is not NULL: - config_list = slurm.slurm_ctl_conf_2_key_pairs(self.__Config_ptr) + config_list = slurm.slurm_ctl_conf_2_key_pairs(self.__Config_ptr) listNum = slurm.slurm_list_count(config_list) iters = slurm.slurm_list_iterator_create(config_list) @@ -595,7 +592,7 @@ cdef class config: """Get the slurm control configuration information.""" cdef: void *ret_list = NULL - slurm.List config_list = NULL + slurm.list_t *config_list = NULL slurm.list_itr_t *iters = NULL char tmp_str[128] @@ -824,7 +821,7 @@ cdef class config: # Get key_pairs from Opaque data structure # -# config_list = self.__Config_ptr.select_conf_key_pairs +# config_list = self.__Config_ptr.select_conf_key_pairs # if config_list is not NULL: # listNum = slurm.slurm_list_count(config_list) # iters = slurm.slurm_list_iterator_create(config_list) @@ -897,7 +894,7 @@ cdef class partition: self._Partition_ptr = NULL return all_partitions else: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) def find_id(self, partID): @@ -954,7 +951,7 @@ cdef class partition: slurm.slurm_free_partition_info_msg(self._Partition_ptr) self._Partition_ptr = NULL else: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) def delete(self, PartID): @@ -978,7 +975,7 @@ cdef class partition: errCode = slurm.slurm_delete_partition(&part_msg) if errCode != slurm.SLURM_SUCCESS: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) return errCode @@ -1157,7 +1154,7 @@ cdef class partition: self._Partition_ptr = NULL return self._PartDict else: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) @@ -1335,7 +1332,7 @@ def slurm_delete_partition(PartID): errCode = slurm.slurm_delete_partition(&part_msg) if errCode != slurm.SLURM_SUCCESS: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) return errCode @@ -1360,7 +1357,7 @@ cpdef int slurm_ping(int Controller=0) except? -1: cdef int errCode = slurm.slurm_ping(Controller) if errCode != 0: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) return errCode @@ -1376,7 +1373,7 @@ cpdef int slurm_reconfigure() except? -1: cdef int errCode = slurm.slurm_reconfigure() if errCode != 0: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) return errCode @@ -1400,7 +1397,7 @@ cpdef int slurm_shutdown(uint16_t Options=0) except? -1: cdef int errCode = slurm.slurm_shutdown(Options) if errCode != 0: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) return errCode @@ -1434,7 +1431,7 @@ cpdef int slurm_set_debug_level(uint32_t DebugLevel=0) except? -1: cdef int errCode = slurm.slurm_set_debug_level(DebugLevel) if errCode != 0: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) return errCode @@ -1456,7 +1453,7 @@ cpdef int slurm_set_debugflags(uint32_t debug_flags_plus=0, debug_flags_minus) if errCode != 0: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) return errCode @@ -1475,7 +1472,7 @@ cpdef int slurm_set_schedlog_level(uint32_t Enable=0) except? -1: cdef int errCode = slurm.slurm_set_schedlog_level(Enable) if errCode != 0: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) return errCode @@ -1499,7 +1496,7 @@ cpdef int slurm_suspend(uint32_t JobID=0) except? -1: cdef int errCode = slurm.slurm_suspend(JobID) if errCode != 0: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) return errCode @@ -1518,7 +1515,7 @@ cpdef int slurm_resume(uint32_t JobID=0) except? -1: cdef int errCode = slurm.slurm_resume(JobID) if errCode != 0: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) return errCode @@ -1537,7 +1534,7 @@ cpdef int slurm_requeue(uint32_t JobID=0, uint32_t State=0) except? -1: cdef int errCode = slurm.slurm_requeue(JobID, State) if errCode != 0: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) return errCode @@ -1556,7 +1553,7 @@ cpdef long slurm_get_rem_time(uint32_t JobID=0) except? -1: cdef long errCode = slurm.slurm_get_rem_time(JobID) if errCode != 0: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) return errCode @@ -1576,7 +1573,7 @@ cpdef time_t slurm_get_end_time(uint32_t JobID=0) except? -1: cdef int errCode = slurm.slurm_get_end_time(JobID, &EndTime) if errCode != 0: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) return EndTime @@ -1611,7 +1608,7 @@ cpdef int slurm_signal_job(uint32_t JobID=0, uint16_t Signal=0) except? -1: cdef int errCode = slurm.slurm_signal_job(JobID, Signal) if errCode != 0: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) return errCode @@ -1638,7 +1635,7 @@ cpdef int slurm_signal_job_step(uint32_t JobID=0, uint32_t JobStep=0, cdef int errCode = slurm.slurm_signal_job_step(JobID, JobStep, Signal) if errCode != 0: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) return errCode @@ -1660,7 +1657,7 @@ cpdef int slurm_kill_job(uint32_t JobID=0, uint16_t Signal=0, cdef int errCode = slurm.slurm_kill_job(JobID, Signal, BatchFlag) if errCode != 0: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) return errCode @@ -1682,7 +1679,7 @@ cpdef int slurm_kill_job_step(uint32_t JobID=0, uint32_t JobStep=0, cdef int errCode = slurm.slurm_kill_job_step(JobID, JobStep, Signal, 0) if errCode != 0: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) return errCode @@ -1705,7 +1702,7 @@ cpdef int slurm_kill_job2(const char *JobID='', uint16_t Signal=0, cdef int errCode = slurm.slurm_kill_job2(JobID, Signal, BatchFlag, sibling) if errCode != 0: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) return errCode @@ -1725,7 +1722,7 @@ cpdef int slurm_complete_job(uint32_t JobID=0, uint32_t JobCode=0) except? -1: cdef int errCode = slurm.slurm_complete_job(JobID, JobCode) if errCode != 0: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) return errCode @@ -1745,7 +1742,7 @@ cpdef int slurm_notify_job(uint32_t JobID=0, char* Msg='') except? -1: cdef int errCode = slurm.slurm_notify_job(JobID, Msg) if errCode != 0: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) return errCode @@ -1765,7 +1762,7 @@ cpdef int slurm_terminate_job_step(uint32_t JobID=0, uint32_t JobStep=0) except? cdef int errCode = slurm.slurm_terminate_job_step(JobID, JobStep) if errCode != 0: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) return errCode @@ -1833,7 +1830,7 @@ cdef class job: self._job_ptr = NULL return all_jobs else: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) def find(self, name='', val=''): @@ -1882,7 +1879,7 @@ cdef class job: rc = slurm.slurm_load_job(&self._job_ptr, jobid, self._ShowFlags) if rc != slurm.SLURM_SUCCESS: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) def find_id(self, jobid): @@ -1932,7 +1929,7 @@ cdef class job: if rc == slurm.SLURM_SUCCESS: return self.get_job_ptr() else: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) def get(self): @@ -1954,7 +1951,7 @@ cdef class job: if rc == slurm.SLURM_SUCCESS: return self.get_job_ptr() else: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) cdef dict get_job_ptr(self): @@ -2212,7 +2209,6 @@ cdef class job: else: Job_dict['shared'] = "OK" - Job_dict['show_flags'] = self._record.show_flags Job_dict['sockets_per_board'] = self._record.sockets_per_board Job_dict['sockets_per_node'] = int16orNone(self._record.sockets_per_node) Job_dict['start_time'] = self._record.start_time @@ -2281,8 +2277,8 @@ cdef class job: if host_list: for node_name in host_list: b_node_name = node_name.decode("UTF-8") - Job_dict['cpus_allocated'][b_node_name] = self.__cpus_allocated_on_node(node_name) - Job_dict['cpus_alloc_layout'][b_node_name] = self.__cpus_allocated_list_on_node(node_name) + Job_dict['cpus_allocated'][b_node_name] = 0 + Job_dict['cpus_alloc_layout'][b_node_name] = [] hl.destroy() self._JobDict[self._record.job_id] = Job_dict @@ -2291,63 +2287,6 @@ cdef class job: self._job_ptr = NULL return self._JobDict - cpdef int __cpus_allocated_on_node_id(self, int nodeID=0): - """Get the number of cpus allocated to a job on a node by node name. - - Args: - nodeID (int): Numerical node ID - - Returns: - int: Num of CPUs allocated to job on this node or -1 on error - """ - cdef: - slurm.job_resources_t *job_resrcs_ptr = self._record.job_resrcs - int retval = slurm.slurm_job_cpus_allocated_on_node_id(job_resrcs_ptr, nodeID) - - return retval - - cdef int __cpus_allocated_on_node(self, char* nodeName=''): - """Get the number of cpus allocated to a slurm job on a node by node name. - - Args: - nodeName (str): Name of the node - - Returns: - Num of CPUs allocated to job on this node or -1 on error - """ - cdef: - slurm.job_resources_t *job_resrcs_ptr = self._record.job_resrcs - int retval = slurm.slurm_job_cpus_allocated_on_node(job_resrcs_ptr, nodeName) - - return retval - - cdef list __cpus_allocated_list_on_node(self, char* nodeName=''): - """Get a list of cpu ids allocated to current slurm job on a node by node name. - - Args: - nodeName (str): Name of the node - - Returns: - list of allocated cpus (empty, if nothing found or error) - """ - cdef: - int error = 0 - int cpus_len = 1024 - char *cpus - list cpus_list = [] - slurm.job_resources_t *job_resrcs_ptr = self._record.job_resrcs - - cpus = malloc(cpus_len * sizeof(char)) - if cpus is not NULL: - try: - error = slurm.slurm_job_cpus_allocated_str_on_node(cpus, cpus_len, job_resrcs_ptr, nodeName) - if error == 0: - cpus_list = self.__unrange(stringOrNone(cpus, '')) - finally: - free(cpus) - - return cpus_list - def __unrange(self, bit_str): """converts a string describing a bitmap (from slurm_job_cpus_allocated_str_on_node()) to a list. @@ -2377,28 +2316,6 @@ cdef class job: if self._job_ptr is not NULL: slurm.slurm_free_job_info_msg(self._job_ptr) - def print_job_info_msg(self, int oneLiner=0): - """Print the data structure describing all job step records. - - Args: - oneLiner (int, optional): Whether to print the data in one line or - not - """ - cdef: - int rc - int apiError - - rc = slurm.slurm_load_jobs( NULL, &self._job_ptr, self._ShowFlags) - - if rc == slurm.SLURM_SUCCESS: - slurm.slurm_print_job_info_msg(slurm.stdout, self._job_ptr, - oneLiner) - slurm.slurm_free_job_info_msg(self._job_ptr) - self._job_ptr = NULL - else: - apiError = slurm.slurm_get_errno() - raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) - def slurm_job_batch_script(self, jobid): """Return the contents of the batch-script for a Job. @@ -3049,7 +2966,7 @@ def slurm_pid2jobid(uint32_t JobPID=0): int errCode = slurm.slurm_pid2jobid(JobPID, &JobID) if errCode != 0: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) return errCode, JobID @@ -3145,9 +3062,7 @@ def slurm_get_errno(): Returns: (int): Current slurm error number """ - cdef int errNum = slurm.slurm_get_errno() - - return errNum + return errno def slurm_strerror(int Errno=0): @@ -3240,7 +3155,7 @@ cdef class node: self._Node_ptr = NULL return all_nodes else: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) def find_id(self, nodeID): @@ -3300,7 +3215,7 @@ cdef class node: rc = slurm.slurm_load_node(NULL, &self._Node_ptr, self._ShowFlags) if rc != slurm.SLURM_SUCCESS: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) if slurm.slurm_load_ctl_conf(NULL, &slurm_ctl_conf_ptr) != slurm.SLURM_SUCCESS: @@ -3524,7 +3439,7 @@ cdef class node: slurm.slurm_free_node_info_msg(self._Node_ptr) self._Node_ptr = NULL else: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) @@ -3576,7 +3491,7 @@ def slurm_update_node(dict node_dict): errCode = slurm.slurm_update_node(&node_msg) if errCode != slurm.SLURM_SUCCESS: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) return errCode @@ -4049,8 +3964,8 @@ cdef class trigger: while slurm.slurm_set_trigger(&trigger_set): slurm.slurm_perror('slurm_set_trigger') # EAGAIN - if slurm.slurm_get_errno() != 11: - errCode = slurm.slurm_get_errno() + if slurm_get_errno() != 11: + errCode = slurm_get_errno() return errCode p_time.sleep(5) @@ -4208,7 +4123,7 @@ cdef class reservation: &new_reserve_info_ptr) if errCode == slurm.SLURM_SUCCESS: slurm.slurm_free_reservation_info_msg(self._Res_ptr) - elif slurm.slurm_get_errno() == 1900: # SLURM_NO_CHANGE_IN_DATA + elif slurm_get_errno() == 1900: # SLURM_NO_CHANGE_IN_DATA errCode = 0 new_reserve_info_ptr = self._Res_ptr else: @@ -4219,7 +4134,7 @@ cdef class reservation: self._Res_ptr = new_reserve_info_ptr self._lastUpdate = self._Res_ptr.last_update else: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) return errCode @@ -4408,7 +4323,7 @@ def slurm_create_reservation(dict reservation_dict={}): resID = stringOrNone(resid, '') free(resid) else: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) return resID @@ -4493,7 +4408,7 @@ def slurm_update_reservation(dict reservation_dict={}): errCode = slurm.slurm_update_reservation(&resv_msg) if errCode != 0: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) return errCode @@ -4521,7 +4436,7 @@ def slurm_delete_reservation(ResID): cdef int errCode = slurm.slurm_delete_reservation(&resv_msg) if errCode != 0: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) return errCode @@ -4598,7 +4513,7 @@ cdef class topology: errCode = slurm.slurm_load_topo(&self._topo_info_ptr) if errCode != 0: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) return errCode @@ -4769,7 +4684,7 @@ cdef class statistics: self._buf = NULL return self._StatsDict else: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) def reset(self): @@ -4787,7 +4702,7 @@ cdef class statistics: if errCode == slurm.SLURM_SUCCESS: return errCode else: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) cpdef __rpc_num2string(self, uint16_t opcode): @@ -5094,7 +5009,7 @@ cdef class front_end: errCode = slurm.slurm_load_front_end(last_time, &self._FrontEndNode_ptr) if errCode != 0: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) return errCode @@ -5167,7 +5082,7 @@ cdef class qos: cdef: void *dbconn dict _QOSDict - slurm.List _QOSList + slurm.list_t *_QOSList def __cinit__(self): self.dbconn = NULL @@ -5190,10 +5105,10 @@ cdef class qos: slurm.slurmdb_qos_cond_t *new_qos_cond = NULL int apiError = 0 void* dbconn = slurm.slurmdb_connection_get(NULL) - slurm.List QOSList = slurm.slurmdb_qos_get(dbconn, new_qos_cond) + slurm.list_t *QOSList = slurm.slurmdb_qos_get(dbconn, new_qos_cond) if QOSList is NULL: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) else: self._QOSList = QOSList @@ -5230,7 +5145,7 @@ cdef class qos: cdef __get(self): cdef: - slurm.List qos_list = NULL + slurm.list_t *qos_list = NULL slurm.list_itr_t *iters = NULL int i = 0 int listNum = 0 @@ -5349,7 +5264,7 @@ cdef class slurmdb_jobs: int listNum = 0 int apiError = 0 dict J_dict = {} - slurm.List JOBSList + slurm.list_t *JOBSList slurm.list_itr_t *iters = NULL @@ -5389,20 +5304,20 @@ cdef class slurmdb_jobs: if starttime: self.job_cond.usage_start = slurm.slurm_parse_time(starttime, 1) - errno = slurm.slurm_get_errno() + errno = slurm_get_errno() if errno == slurm.ESLURM_INVALID_TIME_VALUE: raise ValueError(slurm.slurm_strerror(errno), errno) if endtime: self.job_cond.usage_end = slurm.slurm_parse_time(endtime, 1) - errno = slurm.slurm_get_errno() + errno = slurm_get_errno() if errno == slurm.ESLURM_INVALID_TIME_VALUE: raise ValueError(slurm.slurm_strerror(errno), errno) JOBSList = slurm.slurmdb_jobs_get(self.db_conn, self.job_cond) if JOBSList is NULL: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(slurm.slurm_strerror(apiError), apiError) listNum = slurm.slurm_list_count(JOBSList) @@ -5603,13 +5518,13 @@ cdef class slurmdb_reservations: (dict): Dictionary whose keys are the reservations ids """ cdef: - slurm.List reservation_list + slurm.list_t *reservation_list slurm.list_itr_t *iters = NULL slurm.slurmdb_reservation_rec_t *reservation int i = 0 int j = 0 int listNum - slurm.List _resvList + slurm.list_t *_resvList Reservation_dict = {} reservation_list = slurm.slurmdb_reservations_get(self.dbconn, self.reservation_cond) @@ -5712,7 +5627,7 @@ cdef class slurmdb_clusters: (dict): Dictionary whose keys are the clusters ids """ cdef: - slurm.List clusters_list + slurm.list_t *clusters_list slurm.list_itr_t *iters = NULL slurm.slurmdb_cluster_rec_t *cluster = NULL int rc = slurm.SLURM_SUCCESS @@ -5822,7 +5737,7 @@ cdef class slurmdb_events: (dict): Dictionary whose keys are the events ids """ cdef: - slurm.List event_list + slurm.list_t *event_list slurm.list_itr_t *iters = NULL slurm.slurmdb_event_rec_t *event = NULL int i = 0 @@ -5888,7 +5803,7 @@ cdef class slurmdb_reports: (dict): sreport information. """ cdef: - slurm.List slurmdb_report_cluster_list = NULL + slurm.list_t *slurmdb_report_cluster_list = NULL slurm.list_itr_t *itr = NULL slurm.list_itr_t *cluster_itr = NULL slurm.list_itr_t *tres_itr = NULL @@ -5902,7 +5817,7 @@ cdef class slurmdb_reports: int j slurm.slurmdb_init_cluster_cond(&cluster_cond, 0) - self.assoc_cond.with_sub_accts = 1 + self.assoc_cond.flags = slurm.ASSOC_COND_FLAG_SUB_ACCTS if starttime: self.assoc_cond.usage_start = slurm.slurm_parse_time(starttime, 1) @@ -5916,8 +5831,8 @@ cdef class slurmdb_reports: self.assoc_cond.usage_start = start_time self.assoc_cond.usage_end = end_time - self.assoc_cond.with_usage = 1 - self.assoc_cond.with_deleted = 1 + self.assoc_cond.flags |= slurm.ASSOC_COND_FLAG_WITH_USAGE + self.assoc_cond.flags |= slurm.ASSOC_COND_FLAG_WITH_DELETED slurmdb_report_cluster_list = slurm.slurmdb_report_cluster_account_by_user( self.db_conn, self.assoc_cond @@ -5981,7 +5896,7 @@ def get_last_slurm_error(): Returns: (int): Slurm error number and the associated error string """ - rc = slurm.slurm_get_errno() + rc = slurm_get_errno() if rc == 0: return (rc, 'Success') @@ -6668,7 +6583,7 @@ cdef class licenses: self._msg = NULL return all_licenses else: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) def get(self): @@ -6705,5 +6620,5 @@ cdef class licenses: self._msg = NULL return self._licDict else: - apiError = slurm.slurm_get_errno() + apiError = slurm_get_errno() raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) diff --git a/pyslurm/pydefines/slurm_defines.pxi b/pyslurm/pydefines/slurm_defines.pxi index fe9b1ae1..01e29465 100644 --- a/pyslurm/pydefines/slurm_defines.pxi +++ b/pyslurm/pydefines/slurm_defines.pxi @@ -285,7 +285,6 @@ DEBUG_FLAG_NET_RAW = slurm.DEBUG_FLAG_NET_RAW DEBUG_FLAG_NO_CONF_HASH = slurm.DEBUG_FLAG_NO_CONF_HASH DEBUG_FLAG_GRES = slurm.DEBUG_FLAG_GRES DEBUG_FLAG_DATA = slurm.DEBUG_FLAG_DATA -DEBUG_FLAG_WORKQ = slurm.DEBUG_FLAG_WORKQ DEBUG_FLAG_NET = slurm.DEBUG_FLAG_NET DEBUG_FLAG_PRIO = slurm.DEBUG_FLAG_PRIO DEBUG_FLAG_BACKFILL = slurm.DEBUG_FLAG_BACKFILL diff --git a/pyslurm/pydefines/slurm_enums.pxi b/pyslurm/pydefines/slurm_enums.pxi index 41106623..d813ef6e 100644 --- a/pyslurm/pydefines/slurm_enums.pxi +++ b/pyslurm/pydefines/slurm_enums.pxi @@ -383,7 +383,6 @@ CPU_BIND_TO_CORES = slurm.CPU_BIND_TO_CORES CPU_BIND_TO_SOCKETS = slurm.CPU_BIND_TO_SOCKETS CPU_BIND_TO_LDOMS = slurm.CPU_BIND_TO_LDOMS CPU_BIND_NONE = slurm.CPU_BIND_NONE -CPU_BIND_RANK = slurm.CPU_BIND_RANK CPU_BIND_MAP = slurm.CPU_BIND_MAP CPU_BIND_MASK = slurm.CPU_BIND_MASK CPU_BIND_LDRANK = slurm.CPU_BIND_LDRANK diff --git a/pyslurm/pydefines/slurm_errno_enums.pxi b/pyslurm/pydefines/slurm_errno_enums.pxi index 4cfdabe5..b31e0802 100644 --- a/pyslurm/pydefines/slurm_errno_enums.pxi +++ b/pyslurm/pydefines/slurm_errno_enums.pxi @@ -111,7 +111,6 @@ ESLURM_INVALID_MCS_LABEL = slurm.ESLURM_INVALID_MCS_LABEL ESLURM_BURST_BUFFER_WAIT = slurm.ESLURM_BURST_BUFFER_WAIT ESLURM_PARTITION_DOWN = slurm.ESLURM_PARTITION_DOWN ESLURM_DUPLICATE_GRES = slurm.ESLURM_DUPLICATE_GRES -ESLURM_JOB_SETTING_DB_INX = slurm.ESLURM_JOB_SETTING_DB_INX ESLURM_RSV_ALREADY_STARTED = slurm.ESLURM_RSV_ALREADY_STARTED ESLURM_SUBMISSIONS_DISABLED = slurm.ESLURM_SUBMISSIONS_DISABLED ESLURM_NOT_HET_JOB = slurm.ESLURM_NOT_HET_JOB From ed63421131eb97d646a43bd856ca401553c46843 Mon Sep 17 00:00:00 2001 From: Toni Harzendorf Date: Mon, 9 Dec 2024 07:40:44 +0100 Subject: [PATCH 08/11] retrieving the batch-script works now. --- pyslurm/slurm/extra.pxi | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/pyslurm/slurm/extra.pxi b/pyslurm/slurm/extra.pxi index 55c68210..bab83890 100644 --- a/pyslurm/slurm/extra.pxi +++ b/pyslurm/slurm/extra.pxi @@ -5,7 +5,7 @@ # For example: to communicate with the slurmctld directly in order # to retrieve the actual batch-script as a string. # -# https://github.com/SchedMD/slurm/blob/slurm-24-05-3-1/src/common/persist_conn.h#L53 +# https://github.com/SchedMD/slurm/blob/slurm-24-11-0-1/src/common/persist_conn.h#L53 ctypedef enum persist_conn_type_t: PERSIST_TYPE_NONE = 0 PERSIST_TYPE_DBD @@ -14,7 +14,7 @@ ctypedef enum persist_conn_type_t: PERSIST_TYPE_HA_DBD PERSIST_TYPE_ACCT_UPDATE -# https://github.com/SchedMD/slurm/blob/slurm-24-05-3-1/src/common/persist_conn.h#L62 +# https://github.com/SchedMD/slurm/blob/slurm-24-11-0-1/src/common/persist_conn.h#L62 ctypedef struct persist_msg_t: void *conn void *data @@ -24,7 +24,7 @@ ctypedef int (*_persist_conn_t_callback_proc)(void *arg, persist_msg_t *msg, buf ctypedef void (*_persist_conn_t_callback_fini)(void *arg) -# https://github.com/SchedMD/slurm/blob/slurm-24-05-3-1/src/common/persist_conn.h#L68 +# https://github.com/SchedMD/slurm/blob/slurm-24-11-0-1/src/common/persist_conn.h#L68 ctypedef struct persist_conn_t: void *auth_cred uid_t auth_uid @@ -49,7 +49,7 @@ ctypedef struct persist_conn_t: slurm_trigger_callbacks_t trigger_callbacks uint16_t version -# https://github.com/SchedMD/slurm/blob/slurm-24-05-3-1/src/common/pack.h#L68 +# https://github.com/SchedMD/slurm/blob/slurm-24-11-0-1/src/common/pack.h#L68 ctypedef struct buf_t: uint32_t magic char *head @@ -58,11 +58,11 @@ ctypedef struct buf_t: bool mmaped bool shadow -# https://github.com/SchedMD/slurm/blob/slurm-24-05-3-1/src/common/slurm_protocol_defs.h#L731 +# https://github.com/SchedMD/slurm/blob/slurm-24-11-0-1/src/common/slurm_protocol_defs.h#L761 ctypedef struct return_code_msg_t: uint32_t return_code -# https://github.com/SchedMD/slurm/blob/slurm-24-05-3-1/src/common/slurm_protocol_defs.h#L405 +# https://github.com/SchedMD/slurm/blob/slurm-24-11-0-1/src/common/slurm_protocol_defs.h#L432 ctypedef struct job_id_msg_t: uint32_t job_id uint16_t show_flags @@ -75,7 +75,7 @@ ctypedef enum slurm_msg_type_t: RESPONSE_BATCH_SCRIPT = 2052 RESPONSE_SLURM_RC = 8001 -# https://github.com/SchedMD/slurm/blob/slurm-24-05-3-1/src/common/slurm_protocol_defs.h#L231 +# https://github.com/SchedMD/slurm/blob/slurm-24-11-0-1/src/common/slurm_protocol_defs.h#L240 ctypedef struct forward_t: slurm_node_alias_addrs_t alias_addrs uint16_t cnt @@ -83,8 +83,9 @@ ctypedef struct forward_t: char *nodelist uint32_t timeout uint16_t tree_width + uint16_t tree_depth -# https://github.com/SchedMD/slurm/blob/slurm-24-05-3-1/src/common/slurm_protocol_defs.h#L254 +# https://github.com/SchedMD/slurm/blob/slurm-24-11-0-1/src/common/slurm_protocol_defs.h#L269 ctypedef struct forward_struct_t: slurm_node_alias_addrs_t *alias_addrs char *buf @@ -95,7 +96,15 @@ ctypedef struct forward_struct_t: list_t *ret_list uint32_t timeout -# https://github.com/SchedMD/slurm/blob/slurm-24-05-3-1/src/common/slurm_protocol_defs.h#L271 + +cdef extern from *: + """ + typedef struct conmgr_fd_s conmgr_fd_t; \ + """ + ctypedef struct conmgr_fd_t + + +# https://github.com/SchedMD/slurm/blob/slurm-24-11-0-1/src/common/slurm_protocol_defs.h#L286 ctypedef struct slurm_msg_t: slurm_addr_t address void *auth_cred @@ -109,6 +118,7 @@ ctypedef struct slurm_msg_t: buf_t *buffer persist_conn_t *conn int conn_fd + conmgr_fd_t *conmgr_fd void *data uint16_t flags uint8_t hash_index From 3dee8bca9c9bd801f461e6ce74305a2572d8b806 Mon Sep 17 00:00:00 2001 From: Toni Harzendorf Date: Tue, 17 Dec 2024 21:12:43 +0100 Subject: [PATCH 09/11] remove slurm_seterrno calls this API was removed from slurm --- pyslurm/deprecated.pyx | 9 --------- 1 file changed, 9 deletions(-) diff --git a/pyslurm/deprecated.pyx b/pyslurm/deprecated.pyx index 86ba2105..bbc1b84f 100644 --- a/pyslurm/deprecated.pyx +++ b/pyslurm/deprecated.pyx @@ -3079,15 +3079,6 @@ def slurm_strerror(int Errno=0): return "%s" % errMsg -def slurm_seterrno(int Errno=0): - """Set the slurm error number. - - Args: - Errno (int): slurm error number - """ - slurm.slurm_seterrno(Errno) - - def slurm_perror(char* Msg=''): """Print to standard error the supplied header. From 3f6c63d69fd3eb3dd87a6c3230ae7a4375d39e9a Mon Sep 17 00:00:00 2001 From: Toni Harzendorf Date: Mon, 30 Dec 2024 10:35:14 +0100 Subject: [PATCH 10/11] Update pyslurm.spec versions --- pyslurm.spec | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pyslurm.spec b/pyslurm.spec index 910b8dbf..a2c75c07 100644 --- a/pyslurm.spec +++ b/pyslurm.spec @@ -1,7 +1,7 @@ %define python3_pkgversion 3.11 Name: python-pyslurm -Version: 24.5.1 +Version: 24.11.0 %define rel 1 Release: %{rel}%{?dist} Summary: Python interface to Slurm @@ -15,8 +15,8 @@ BuildRequires: python%{python3_pkgversion}-wheel BuildRequires: python%{python3_pkgversion}-Cython BuildRequires: python%{python3_pkgversion}-packaging BuildRequires: python-rpm-macros -BuildRequires: slurm-devel >= 24.05.0 -BuildRequires: slurm >= 24.05.0 +BuildRequires: slurm-devel >= 24.11.0 +BuildRequires: slurm >= 24.11.0 Requires: python%{python3_pkgversion} %description From 96a092a651753150acf7a286c93a7612a0a3b7ff Mon Sep 17 00:00:00 2001 From: Toni Harzendorf Date: Mon, 30 Dec 2024 10:35:29 +0100 Subject: [PATCH 11/11] Update CHANGELOG --- CHANGELOG.md | 82 ++-------------------------------------------------- 1 file changed, 3 insertions(+), 79 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 42e5a5e3..4eff652e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased on the [24.5.x](https://github.com/PySlurm/pyslurm/tree/24.5.x) branch +## Unreleased on the [24.11.x](https://github.com/PySlurm/pyslurm/tree/24.11.x) branch ### Added @@ -16,84 +16,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - `pyslurm.db.QualityOfService` - `pyslurm.db.QualitiesOfService` -## [24.5.1](https://github.com/PySlurm/pyslurm/releases/tag/v24.5.1) - 2024-12-27 +## [24.11.0](https://github.com/PySlurm/pyslurm/releases/tag/v24.11.0) - 2024-12-30 ### Added -- Added `stats` attribute to both `pyslurm.Job`, `pyslurm.Jobs` and - `pyslurm.db.Jobs` -- Added `pids` attribute to `pyslurm.Job` which contains Process-IDs of the Job - organized by node-name -- Added `load_stats` method to `pyslurm.Job` and `pyslurm.Jobs` classes. - Together with the `stats` and `pids` attributes mentioned above, it is now - possible to fetch live statistics (like sstat) -- Switch to link with `libslurmfull.so` instead of `libslurm.so`
- This change really has no impact from a user perspective. Everything will - keep working the same, except that Slurms more internal library - `libslurmfull.so` is linked with (which is located alongside the plugins - inside the `slurm` directory, which itself is next to `libslurm.so`)
- Why the change? Because it will likely make development easier. It allows - access to more functions that might be needed in some places, without - completely having to implement them on our own. Implementing the - live-statistics feature, so basically `sstat`, is for example not possible - with `libslurm.so`
- You can keep providing the directory where `libslurm.so` resided as - `$SLURM_LIB_DIR` to pyslurm, and it will automatically find `libslurmfull.so` - from there. -- Added `run_time_remaining` and `elapsed_cpu_time` attributes to `pyslurm.JobStep` -- Added `run_time_remaining` attribute to `pyslurm.Job` - -### Fixed - -- Fixed `total_cpu_time`, `system_cpu_time` and `user_cpu_time` not getting - calculated correctly for Job statistics -- Actually make sure that `avg_cpu_time`, `min_cpu_time`, `total_cpu_time`, - `system_cpu_time` and `user_cpu_time` are integers, not float. - -### Changed - -- Breaking: rename `cpu_time` to `elapsed_cpu_time` in `pyslurm.Job` and - `pyslurm.Jobs` classes -- Breaking: rename attribute `alloc_cpus` to just `cpus` in `pyslurm.JobStep` -- Breaking: removed the following attributes from `pyslurm.db.Jobs`:
- * `consumed_energy` - * `disk_read` - * `disk_write` - * `page_faults` - * `resident_memory` - * `virtual_memory` - * `elapsed_cpu_time` - * `total_cpu_time` - * `user_cpu_time` - * `system_cpu_time` -- The removed attributes above are now all available within the `stats` - attribute, which is of type `pyslurm.db.JobStatistics` -- Renamed the original class of `pyslurm.db.JobStatistics` to - `pyslurm.db.JobStepStatistics`.
- All this class contains is really mostly applicable only to Steps, but - doesn't fully apply at the Job Level.
- Therefore, the new `pyslurm.db.JobStatistics` class only contains all - statistics that make sense at the Job-level. -- return `1` as a value for the `cpus` attribute in `pyslurm.db.Job` when there - is no value set from Slurm's side. - -### Removed - -- Removed `pyslurm.version()` function. Should use `__version__` attribute directly. -- Removed `--slurm-lib` and `--slurm-inc` parameters to `setup.py`.
- `SLURM_LIB_DIR` and `SLURM_INCLUDE_DIR` environment variables should be used instead. - -## [24.5.0](https://github.com/PySlurm/pyslurm/releases/tag/v24.5.0) - 2024-11-16 - -### Added - -- Support for Slurm 24.5.x -- add `power_down_on_idle` attribute to `pyslurm.Partition` class - -### Changed - -- bump minimum Cython version to 0.29.37 - -### Removed - -- Removed `power_options` from `JobSubmitDescription` +- Support for Slurm 24.11.x