Requirements
expression of the job so that it only matches those machines. Knowing ahead of time is problematic and difficult to maintain as the pool changes. A better solution uses this two-step process.
First, each machine that has the special software installed needs to advertise its availability in its machine ClassAd. Second, the job identifies in its submit description file that it requires a machine that has the special software.
A machine advertises the presence of special software in its local configuration file, as in this example:
HAS_MY_SOFTWARE = True
Also, if STARTD_ATTRS
is already defined in that file, add
HAS_MY_SOFTWARE
to the list. If STARTD_ATTRS
is not already in
that local configuration file, add the line:
STARTD_ATTRS = HAS_MY_SOFTWARE, $(STARTD_ATTRS)
For this configuration change to take effect, the condor_startd on that machine
needs to be reconfigured. Use condor_reconfig -startd
. Each machine with
the configuration change must be reconfigured.
Double check that this has been correctly implemented by running the condor_status command:
condor_status -constraint HAS_MY_SOFTWARE
Jobs that need to run on the machines with the special software installedadd a Requirements
command to their submit description file:
Requirements = (HAS_MY_SOFTWARE =?= True)
Be sure to use =?= instead of ==, so that if a machine does not have
the HAS_MY_SOFTWARE
configuration variable defined, the job's Requirements
expression will not evaluate to Undefined
, preventing the job from
running anywhere.