Page History

Turn Off History

The naive way to do this is to know, a-priori, which machines have the software, and constrain the requirements expression so that your job only matches those machines. This is often problematic and hard to maintain. A better solution involves a two-step process.

First, you need to tell the machines to report that they have special software installed, and second, you need to tell the jobs to require machines that have that software.

To tell the machines to report the presence of special software, first add a parameter to their configuration files like so:

HAS_MY_SOFTWARE = True

And then, if there are already STARTD_ATTRS defined in that file, add HAS_MY_SOFTWARE to them, or, if not, add the line:

STARTD_ATTRS = HAS_MY_SOFTWARE, $(STARTD_ATTRS)

Note For these changes to take effect, each condor_startd you update needs to be reconfigured with condor_reconfig -startd.

You can double-check that this has been correctly added by running the condor_status command:

condor_status -constraint HAS_MY_SOFTWARE

Next, to tell your jobs to only run on machines that have this software, add a requirements statement to their submit files like so:

Requirements = (HAS_MY_SOFTWARE =?= True)

Note Be sure to use ? instead of == so that if a machine doesn't have the HAS_MY_SOFTWARE parameter defined, the job's Requirements expression will not evaluate to ``undefined'', preventing it from running anywhere!