Source code for glideinwms.lib.condorManager

# SPDX-FileCopyrightText: 2009 Fermi Research Alliance, LLC
# SPDX-License-Identifier: Apache-2.0

"""This module implements functions that will act on Condor
"""

import re

from . import condorExe, condorMonitor


##############################################
# Helper functions
[docs] def pool2str(pool_name): if pool_name is not None: return "-pool %s " % pool_name else: return ""
[docs] def schedd2str(schedd_name): if schedd_name is not None: return "-name %s " % schedd_name else: return ""
[docs] def cached_exe_cmd(cmd, arg_str, schedd_name, pool_name, schedd_lookup_cache): if schedd_lookup_cache is None: schedd_lookup_cache = condorMonitor.NoneScheddCache() schedd_str, env = schedd_lookup_cache.getScheddId(schedd_name, pool_name) opts = f"{pool2str(pool_name)}{schedd_str}{arg_str}" return condorExe.exe_cmd(cmd, opts, env=env)
############################################## # # Submit a new job, given a submit file # Works only when a single cluster is created # # returns ClusterId #
[docs] def condorSubmitOne( submit_file, schedd_name=None, pool_name=None, schedd_lookup_cache=condorMonitor.local_schedd_cache ): outstr = cached_exe_cmd("condor_submit", submit_file, schedd_name, pool_name, schedd_lookup_cache) # extract 'submitted to cluster xxx.' part j = re.search(r"submitted to cluster [0-9]+\.", " ".join(outstr)) sstr = j.string[j.start(0) : j.end(0)] # extract the number j = re.search(r"[0-9]+", sstr) idstr = j.string[j.start(0) : j.end(0)] return int(idstr)
############################################## # # Remove a set of jobs from the queue #
[docs] def condorRemove( constraint, schedd_name=None, pool_name=None, do_forcex=False, schedd_lookup_cache=condorMonitor.local_schedd_cache ): opts = "-constraint '%s' " % constraint if do_forcex: opts += "-forcex " return cached_exe_cmd("condor_rm", opts, schedd_name, pool_name, schedd_lookup_cache)
############################################## # # Remove a job from the queue #
[docs] def condorRemoveOne( cluster_or_uname, schedd_name=None, pool_name=None, do_forcex=False, schedd_lookup_cache=condorMonitor.local_schedd_cache, ): opts = "%s " % cluster_or_uname if do_forcex: opts += "-forcex " return cached_exe_cmd("condor_rm", opts, schedd_name, pool_name, schedd_lookup_cache)
############################################## # # Hold a set of jobs from the queue #
[docs] def condorHold(constraint, schedd_name=None, pool_name=None, schedd_lookup_cache=condorMonitor.local_schedd_cache): opts = "-constraint '%s' " % constraint return cached_exe_cmd("condor_hold", opts, schedd_name, pool_name, schedd_lookup_cache)
############################################## # # Hold a job from the queue #
[docs] def condorHoldOne( cluster_or_uname, schedd_name=None, pool_name=None, schedd_lookup_cache=condorMonitor.local_schedd_cache ): opts = "%s " % cluster_or_uname return cached_exe_cmd("condor_hold", opts, schedd_name, pool_name, schedd_lookup_cache)
############################################## # # Release a set of jobs from the queue #
[docs] def condorRelease(constraint, schedd_name=None, pool_name=None, schedd_lookup_cache=condorMonitor.local_schedd_cache): opts = "-constraint '%s' " % constraint return cached_exe_cmd("condor_release", opts, schedd_name, pool_name, schedd_lookup_cache)
############################################## # # Release a job from the queue #
[docs] def condorReleaseOne( cluster_or_uname, schedd_name=None, pool_name=None, schedd_lookup_cache=condorMonitor.local_schedd_cache ): opts = "%s " % cluster_or_uname return cached_exe_cmd("condor_release", opts, schedd_name, pool_name, schedd_lookup_cache)
############################################## # # Issue a condor_reschedule #
[docs] def condorReschedule(schedd_name=None, pool_name=None, schedd_lookup_cache=condorMonitor.local_schedd_cache): cached_exe_cmd("condor_reschedule", "", schedd_name, pool_name, schedd_lookup_cache) return
############################################## # Helper functions of condorAdvertise
[docs] def usetcp2str(use_tcp): if use_tcp: return "-tcp " else: return ""
[docs] def ismulti2str(is_multi): if is_multi: return "-multiple " else: return ""
############################################## # # Remove a job from the queue #
[docs] def condorAdvertise(classad_fname, command, use_tcp=False, is_multi=False, pool_name=None): cmd_opts = f"{pool2str(pool_name)}{usetcp2str(use_tcp)}{ismulti2str(is_multi)}{command} {classad_fname}" return condorExe.exe_cmd_sbin("condor_advertise", cmd_opts)