Requirementsexpression 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
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
HAS_MY_SOFTWARE configuration variable defined, the job's
expression will not evaluate to
Undefined, preventing the job from