Subject: Re: [HTCondor-users] Directing jobs to certain nodes.
> From: Paul E Tader <ptader@xxxxxxxx> > Date: 12/21/2015 03:32 PM >
> Hello everyone,
>
> We want to send jobs to a subset of our nodes. Only these jobs should
run
> on these nodes. Iâve read though the docs and tried several variations
of
> the configuration below but I still canât get my jobs to run only
on the
> re-configured nodes.
>
> # condor_version
> $CondorVersion: 8.2.8 Aug 03 2015 $
> $CondorPlatform: X86_64-CentOS_6.6 $
>
> In our nodes configuration:
> IsDESNode = True
> STARTD_ATTRS = IsDESNode, $(STARTD_ATTRS)
> STARTD_EXPRS = $(STARTD_EXPRS)
> START = ($(START))
>
> # condor_config_val -dump |grep -i des
> IsDESNode = True
>
> âand in my submit file
> +IsDESNode = True
> +Requirements = (IsDESNode =?= True)
>
> The jobs runs, but on other nodes. Any incorrect syntax or missing?
> Thanks for any help or tips.
>
> Paul
Hi Paul!
At first glance, the "requirements" line
should not have a plus sign in front of it.
The plus sign syntax creates a job classad attribute
by that name, as you know, but having the plus sign in front of requirements
converts it from a submit description directive which is processed by condor_submit
into an attribute definition, which may be causing things to get a bit
confused - the requirements _expression_ from the submission gets reworked
a bit to add the architecture and opsys, among other things.
In addition, you're defining both a MY.IsDESNode attribute
and a TARGET.IsDESNode attribute, but you're not distinguishing between
them in your requirements _expression_, so when the job runs on a non-DES
node, it's assuming that your "MY.IsDESNode" definition from
the submit description is what you're talking about, and it's always true,
so the job will run anywhere.
You don't need to define STARTD_EXPRS, that's legacy.
What you want to do is distinguish between the job
and the node. Assert "IsDESNode" in your machine ClassAds, and
"IsDESJob" in your submit description for the job ClassAds. That
way you can achieve your aim of insuring that these jobs only run on those
nodes: the job's requirements _expression_ will require that the node advertise
IsDESNode.
Next, in order to insure that those machines ONLY
run DES jobs and nothing else, if you want that, you can add "&&
IsDESJob" to the START _expression_ - thus those nodes would only accept
jobs which advertised that attribute.