Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 21 additions & 6 deletions pyslurm/core/job/job.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ from pyslurm.utils.helpers import (
_get_exit_code,
cpu_freq_int_to_str,
)
from pyslurm.utils.helpers cimport init_step_id
from pyslurm.slurm cimport slurm_step_id_t


cdef class Jobs(MultiClusterMap):
Expand Down Expand Up @@ -287,8 +289,10 @@ cdef class Job:
job_info_msg_t *info = NULL
Job wrap = None

cdef slurm_step_id_t step_id = init_step_id()
step_id.job_id = JobID
try:
verify_rpc(slurm_load_job(&info, job_id, slurm.SHOW_DETAIL))
verify_rpc(slurm_load_job(&info, step_id, slurm.SHOW_DETAIL))

if info and info.record_count:
wrap = Job.from_ptr(&info.job_array[0])
Expand Down Expand Up @@ -384,7 +388,10 @@ cdef class Job:
flags |= slurm.KILL_HURRY

sig = signal_to_num(signal)
slurm_kill_job(self.id, sig, flags)

cdef slurm_step_id_t step_id = init_step_id()
step_id.job_id = self.id
slurm_kill_job(step_id, sig, flags)

# Ignore errors when the Job is already done or when SIGKILL was
# specified and the job id is already purged from slurmctlds memory.
Expand Down Expand Up @@ -426,7 +433,9 @@ cdef class Job:
# _slurm_rpc_suspend it should return ESLURM_INVALID_JOB_ID, but
# returns -1
# https://github.com/SchedMD/slurm/blob/master/src/slurmctld/proc_req.c#L4693
verify_rpc(slurm_suspend(self.id))
cdef slurm_step_id_t step_id = init_step_id()
step_id.job_id = self.id
verify_rpc(slurm_suspend(step_id))

def unsuspend(self):
"""Unsuspend a currently suspended Job.
Expand All @@ -441,7 +450,9 @@ cdef class Job:
>>> pyslurm.Job(9999).unsuspend()
"""
# Same problem as described in suspend()
verify_rpc(slurm_resume(self.id))
cdef slurm_step_id_t step_id = init_step_id()
step_id.job_id = self.id
verify_rpc(slurm_resume(step_id))

def modify(self, JobSubmitDescription changes):
"""Modify a Job.
Expand Down Expand Up @@ -537,7 +548,9 @@ cdef class Job:
if hold:
flags |= slurm.JOB_REQUEUE_HOLD

verify_rpc(slurm_requeue(self.id, flags))
cdef slurm_step_id_t step_id = init_step_id()
step_id.job_id = self.id
verify_rpc(slurm_requeue(step_id, flags))

def notify(self, msg):
"""Sends a message to the Jobs stdout.
Expand All @@ -556,7 +569,9 @@ cdef class Job:
>>> import pyslurm
>>> pyslurm.Job(9999).notify("Hello Friends!")
"""
verify_rpc(slurm_notify_job(self.id, msg))
cdef slurm_step_id_t step_id = init_step_id()
step_id.job_id = self.id
verify_rpc(slurm_notify_job(step_id, msg))

def load_stats(self):
"""Load realtime statistics for a Job and its steps.
Expand Down
2 changes: 1 addition & 1 deletion pyslurm/core/slurmctld/config.pxd
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ from pyslurm cimport slurm
from pyslurm.slurm cimport (
slurm_conf_t,
slurm_load_ctl_conf,
slurm_free_ctl_conf,
slurm_free_conf,
slurm_preempt_mode_string,
slurm_accounting_enforce_string,
slurm_sprint_cpu_bind_type,
Expand Down
2 changes: 1 addition & 1 deletion pyslurm/core/slurmctld/config.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@ cdef class Config:
"Use slurmctld.Config.load() to get an instance.")

def __dealloc__(self):
slurm_free_ctl_conf(self.ptr)
slurm_free_conf(self.ptr)
self.ptr = NULL

@staticmethod
Expand Down
32 changes: 20 additions & 12 deletions pyslurm/deprecated.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,8 @@ cdef extern from "alps_cray.h" nogil:
import builtins as __builtin__

from pyslurm cimport slurm
from pyslurm.slurm cimport xmalloc
from pyslurm.slurm cimport slurm_step_id_t, xmalloc
from pyslurm.utils.helpers cimport init_step_id
import pyslurm.core.job

include "pydefines/slurm_errno_defines.pxi"
Expand Down Expand Up @@ -343,26 +344,26 @@ def get_controllers():
(tuple): Name of primary controller, Name of backup controllers
"""
cdef:
slurm.slurm_conf_t *slurm_ctl_conf_ptr = NULL
slurm.slurm_conf_t *slurm_conf_ptr = NULL
slurm.time_t Time = <slurm.time_t>NULL
int apiError = 0
int errCode = slurm.slurm_load_ctl_conf(Time, &slurm_ctl_conf_ptr)
int errCode = slurm.slurm_load_ctl_conf(Time, &slurm_conf_ptr)
uint32_t length = 0

if errCode != 0:
apiError = slurm_get_errno()
raise ValueError(stringOrNone(slurm.slurm_strerror(apiError), ''), apiError)

control_machs = []
if slurm_ctl_conf_ptr is not NULL:
if slurm_conf_ptr is not NULL:

if slurm_ctl_conf_ptr.control_machine is not NULL:
length = slurm_ctl_conf_ptr.control_cnt
if slurm_conf_ptr.control_machine is not NULL:
length = slurm_conf_ptr.control_cnt
for index in range(length):
primary = stringOrNone(slurm_ctl_conf_ptr.control_machine[index], '')
primary = stringOrNone(slurm_conf_ptr.control_machine[index], '')
control_machs.append(primary)

slurm.slurm_free_ctl_conf(slurm_ctl_conf_ptr)
slurm.slurm_free_conf(slurm_conf_ptr)

return control_machs

Expand Down Expand Up @@ -447,8 +448,10 @@ cpdef long slurm_get_rem_time(uint32_t JobID=0) except? -1:
Returns:
int: Remaining time in seconds or -1 on error
"""
cdef slurm_step_id_t step_id = init_step_id()
step_id.job_id = JobID
cdef int apiError = 0
cdef long errCode = slurm.slurm_get_rem_time(JobID)
cdef long errCode = slurm.slurm_get_rem_time(step_id)

if errCode != 0:
apiError = slurm_get_errno()
Expand All @@ -466,9 +469,11 @@ cpdef time_t slurm_get_end_time(uint32_t JobID=0) except? -1:
Returns:
int: Remaining time in seconds or -1 on error
"""
cdef slurm_step_id_t step_id = init_step_id()
step_id.job_id = JobID
cdef time_t EndTime = -1
cdef int apiError = 0
cdef int errCode = slurm.slurm_get_end_time(JobID, &EndTime)
cdef int errCode = slurm.slurm_get_end_time(step_id, &EndTime)

if errCode != 0:
apiError = slurm_get_errno()
Expand All @@ -487,7 +492,9 @@ cpdef int slurm_job_node_ready(uint32_t JobID=0) except? -1:
int: Node ready code.
"""
cdef int apiError = 0
cdef int errCode = slurm.slurm_job_node_ready(JobID)
cdef slurm_step_id_t step_id = init_step_id()
step_id.job_id = JobID
cdef int errCode = slurm.slurm_job_node_ready(step_id)

return errCode

Expand All @@ -504,7 +511,8 @@ def slurm_pid2jobid(uint32_t JobPID=0):
cdef:
uint32_t JobID = 0
int apiError = 0
int errCode = slurm.slurm_pid2jobid(JobPID, &JobID)
slurm_step_id_t step_id = init_step_id()
int errCode = slurm.slurm_pid2jobid(JobPID, &step_id)

if errCode != 0:
apiError = slurm_get_errno()
Expand Down
2 changes: 1 addition & 1 deletion pyslurm/pydefines/slurm_errno_enums.pxi
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ ESLURM_JOB_MISSING_REQUIRED_PARTITION_GROUP = slurm.ESLURM_JOB_MISSING_REQUIRED_
ESLURM_REQUESTED_NODES_NOT_IN_PARTITION = slurm.ESLURM_REQUESTED_NODES_NOT_IN_PARTITION
ESLURM_TOO_MANY_REQUESTED_CPUS = slurm.ESLURM_TOO_MANY_REQUESTED_CPUS
ESLURM_INVALID_NODE_COUNT = slurm.ESLURM_INVALID_NODE_COUNT
ESLURM_ERROR_ON_DESC_TO_RECORD_COPY = slurm.ESLURM_ERROR_ON_DESC_TO_RECORD_COPY
ESLURM_MAX_JOB_COUNT = slurm.ESLURM_MAX_JOB_COUNT
ESLURM_JOB_MISSING_SIZE_SPECIFICATION = slurm.ESLURM_JOB_MISSING_SIZE_SPECIFICATION
ESLURM_JOB_SCRIPT_MISSING = slurm.ESLURM_JOB_SCRIPT_MISSING
ESLURM_USER_ID_MISSING = slurm.ESLURM_USER_ID_MISSING
Expand Down
1 change: 1 addition & 0 deletions pyslurm/slurm/extra.pxi
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,7 @@ ctypedef struct job_resources:
uint32_t next_step_node_inx
uint32_t nhosts
bitstr_t *node_bitmap
uint32_t *node_ranks
uint32_t node_req
char *nodes
uint32_t ncpus
Expand Down
30 changes: 15 additions & 15 deletions pyslurm/slurm/slurm.h.pxi
Original file line number Diff line number Diff line change
Expand Up @@ -2632,7 +2632,7 @@ cdef extern from "slurm/slurm.h":
kill_jobs_resp_job_t* job_responses
uint32_t jobs_cnt

int slurm_kill_job(uint32_t job_id, uint16_t signal, uint16_t flags)
int slurm_kill_job(slurm_step_id_t job_id, uint16_t signal, uint16_t flags)

int slurm_kill_job_step(slurm_step_id_t* step_id, uint16_t signal, uint16_t flags)

Expand Down Expand Up @@ -2666,15 +2666,15 @@ cdef extern from "slurm/slurm.h":

long slurm_api_version()

int slurm_load_ctl_conf(time_t update_time, slurm_conf_t** slurm_ctl_conf_ptr)
int slurm_load_ctl_conf(time_t update_time, slurm_conf_t** slurm_conf_ptr)

void slurm_free_ctl_conf(slurm_conf_t* slurm_ctl_conf_ptr)
void slurm_free_conf(slurm_conf_t* slurm_conf_ptr)

void slurm_print_ctl_conf(FILE* out, slurm_conf_t* slurm_ctl_conf_ptr)
void slurm_print_ctl_conf(FILE* out, slurm_conf_t* slurm_conf_ptr)

void slurm_write_ctl_conf(slurm_conf_t* slurm_ctl_conf_ptr, node_info_msg_t* node_info_ptr, partition_info_msg_t* part_info_ptr)
void slurm_write_ctl_conf(slurm_conf_t* slurm_conf_ptr, node_info_msg_t* node_info_ptr, partition_info_msg_t* part_info_ptr)

void* slurm_ctl_conf_2_key_pairs(slurm_conf_t* slurm_ctl_conf_ptr)
void* slurm_ctl_conf_2_key_pairs(slurm_conf_t* slurm_conf_ptr)

void slurm_print_key_pairs(FILE* out, void* key_pairs, char* title)

Expand All @@ -2698,7 +2698,7 @@ cdef extern from "slurm/slurm.h":

void slurm_free_priority_factors_response_msg(priority_factors_response_msg_t* factors_resp)

int slurm_get_end_time(uint32_t jobid, time_t* end_time_ptr)
int slurm_get_end_time(slurm_step_id_t jobid, time_t* end_time_ptr)

void slurm_get_job_stderr(char* buf, int buf_size, job_info_t* job_ptr)

Expand All @@ -2710,11 +2710,11 @@ cdef extern from "slurm/slurm.h":

char* slurm_expand_job_stdio_fields(char* path, job_info_t* job)

long slurm_get_rem_time(uint32_t jobid)
long slurm_get_rem_time(slurm_step_id_t jobid)

int slurm_job_node_ready(uint32_t job_id)
int slurm_job_node_ready(slurm_step_id_t job_id)

int slurm_load_job(job_info_msg_t** resp, uint32_t job_id, uint16_t show_flags)
int slurm_load_job(job_info_msg_t** resp, slurm_step_id_t job_id, uint16_t show_flags)

int slurm_load_job_sluid(job_info_msg_t** resp, sluid_t sluid, uint16_t show_flags)

Expand All @@ -2726,9 +2726,9 @@ cdef extern from "slurm/slurm.h":

int slurm_load_job_state(int job_id_count, slurm_selected_step_t* job_ids, job_state_response_msg_t** jsr_pptr)

int slurm_notify_job(uint32_t job_id, char* message)
int slurm_notify_job(slurm_step_id_t job_id, char* message)

int slurm_pid2jobid(pid_t job_pid, uint32_t* job_id_ptr)
int slurm_pid2jobid(pid_t job_pid, slurm_step_id_t* job_id_ptr)

int slurm_update_job(job_desc_msg_t* job_msg)

Expand Down Expand Up @@ -2880,17 +2880,17 @@ cdef extern from "slurm/slurm.h":

int slurm_update_suspend_exc_states(char* states, update_mode_t mode)

int slurm_suspend(uint32_t job_id)
int slurm_suspend(slurm_step_id_t job_id)

int slurm_suspend2(char* job_id, job_array_resp_msg_t** resp)

int slurm_resume(uint32_t job_id)
int slurm_resume(slurm_step_id_t job_id)

int slurm_resume2(char* job_id, job_array_resp_msg_t** resp)

void slurm_free_job_array_resp(job_array_resp_msg_t* resp)

int slurm_requeue(uint32_t job_id, uint32_t flags)
int slurm_requeue(slurm_step_id_t job_id, uint32_t flags)

int slurm_requeue2(char* job_id, uint32_t flags, job_array_resp_msg_t** resp)

Expand Down
2 changes: 1 addition & 1 deletion pyslurm/slurm/slurm_errno.h.pxi
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ cdef extern from "slurm/slurm_errno.h":
ESLURM_REQUESTED_NODES_NOT_IN_PARTITION
ESLURM_TOO_MANY_REQUESTED_CPUS
ESLURM_INVALID_NODE_COUNT
ESLURM_ERROR_ON_DESC_TO_RECORD_COPY
ESLURM_MAX_JOB_COUNT
ESLURM_JOB_MISSING_SIZE_SPECIFICATION
ESLURM_JOB_SCRIPT_MISSING
ESLURM_USER_ID_MISSING
Expand Down
2 changes: 1 addition & 1 deletion pyslurm/version.py
Original file line number Diff line number Diff line change
Expand Up @@ -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__ = "25.11.2"
__version__ = "26.5.0"
Loading