The Job Scheduling Executor takes the information gained from all previous optimizers and makes a scheduling decision for the jobs.

Subsequent to this jobs are added into a Task Queue and pilot agents can be submitted.

All issues preventing the successful resolution of a site candidate are discovered here where all information is available.

This Executor will fail affected jobs meaningfully.

class DIRAC.WorkloadManagementSystem.Executor.JobScheduling.JobScheduling

Bases: DIRAC.WorkloadManagementSystem.Executor.Base.OptimizerExecutor.OptimizerExecutor

The specific Optimizer must provide the following methods: - optimizeJob() - the main method called for each job and it can provide: - initializeOptimizer() before each execution cycle

class JobLog(log, jid)
class LogWrap(log, jid, funcName)
__init__(log, jid, funcName)
__init__(log, jid)

x.__init__(…) initializes x; see help(type(x)) for signature

classmethod ex_enabled()
classmethod ex_getExtraArguments()
classmethod ex_getMind()
classmethod ex_getOption(optName, defaultValue=None)
classmethod ex_getProperty(optName)
classmethod ex_optimizerName()
classmethod ex_setMind(mindName, **extraArgs)
classmethod ex_setOption(optName, value)
classmethod ex_setProperty(optName, value)
fastTrackDispatch(jid, jobState)
classmethod initialize()
classmethod initializeOptimizer()

Initialization of the optimizer.

optimizeJob(jid, jobState)
  1. Banned sites are removed from the destination list.
  2. Get input files
  3. Production jobs are sent directly to TQ
  4. Check if staging is necessary
processTask(jid, jobState)
storeOptimizerParam(name, value)