The job should also require that it run on a whole-machine if this is a requirement.  The following example to be put in the submit file should be merged together with whatever other requirements the job may have.
 
 {code}
-Requirements = IsWholeMachineSlot
+Requirements = CAN_RUN_WHOLE_MACHINE
 {endcode}
 
 Then put the following in your Condor configuration file.  Make sure it either comes after the attributes to which this policy appends (such as START) or that you merge the definitions together.
@@ -45,8 +45,8 @@
 
 # ClassAd attribute that is True/False depending on whether this slot is
 # the whole-machine slot
-IsWholeMachineSlot = SlotID == $(WHOLE_MACHINE_SLOT)
-STARTD_EXPRS = $(STARTD_EXPRS) IsWholeMachineSlot
+CAN_RUN_WHOLE_MACHINE = SlotID == $(WHOLE_MACHINE_SLOT)
+STARTD_EXPRS = $(STARTD_EXPRS) CAN_RUN_WHOLE_MACHINE
 
 # advertise state of each slot as SlotX_State in ClassAds of all other slots
 STARTD_SLOT_EXPRS = $(STARTD_SLOT_EXPRS) State
@@ -82,12 +82,12 @@
 
 # Single-core jobs must run on single-core slots
 START_SINGLE_CORE_JOB = \
-  TARGET.RequiresWholeMachine =!= True && MY.IsWholeMachineSlot == False && \
+  TARGET.RequiresWholeMachine =!= True && MY.CAN_RUN_WHOLE_MACHINE == False && \
   $(WHOLE_MACHINE_SLOT_STATE) =!= "Claimed"
 
 # Whole-machine jobs must run on the whole-machine slot
 START_WHOLE_MACHINE_JOB = \
-  TARGET.RequiresWholeMachine =?= True && MY.IsWholeMachineSlot
+  TARGET.RequiresWholeMachine =?= True && MY.CAN_RUN_WHOLE_MACHINE
 
 START = ($(START)) && ( \
   ($(START_SINGLE_CORE_JOB)) || \
@@ -95,7 +95,7 @@
 
 # Suspend the whole-machine job until single-core jobs finish.
 SUSPEND = ($(SUSPEND)) || ( \
-  MY.IsWholeMachineSlot && ($(SINGLE_CORE_SLOTS_CLAIMED)) )
+  MY.CAN_RUN_WHOLE_MACHINE && ($(SINGLE_CORE_SLOTS_CLAIMED)) )
 
 CONTINUE = ( $(SUSPEND) =!= True )
 
@@ -108,14 +108,14 @@
 {code}
 # Suspend single-core jobs while the whole-machine job runs
 SUSPEND = ($(SUSPEND)) || ( \
-  MY.IsWholeMachineSlot =!= True && $(WHOLE_MACHINE_SLOT_STATE) =?= "Claimed" )
+  MY.CAN_RUN_WHOLE_MACHINE =!= True && $(WHOLE_MACHINE_SLOT_STATE) =?= "Claimed" )
 {endcode}
 
 Another possible policy is to suspend the whole machine job if there are any single core jobs but to kick the single-core jobs off if they take too long to finish.  Starting with the original example policy, this can be achieved by adding the following to the configuration:
 
 {code}
 PREEMPT = ($(PREEMPT)) || ( \
-  MY.IsWholeMachineSlot =!= True && $(WHOLE_MACHINE_SLOT_STATE) =?= "Claimed" )
+  MY.CAN_RUN_WHOLE_MACHINE =!= True && $(WHOLE_MACHINE_SLOT_STATE) =?= "Claimed" )
 
 # When a job is preempted, let it run for up to a day before killing it
 MaxJobRetirementTime = 24*3600
@@ -150,7 +150,7 @@
 To filter out the whole-machine slot, one could use a constraint such as the following:
 
 {code}
-condor_status -constraint 'IsWholeMachineSlot =!= True'
+condor_status -constraint 'CAN_RUN_WHOLE_MACHINE =!= True'
 {endcode}
 
 When the whole-machine slot is claimed, the other slots will appear in the Owner state, because they are configured to not start any new jobs while the whole-machine slot is claimed.  Again, we could make them appear as Unclaimed by changing the =IsOwner= expression, but the Owner state serves as a useful reminder that these slots are reserved during this time, and it has the side-effect of forcing timely updates of the slot ad to the collector.