[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Condor-users] How to check NEGOTIATOR_PRE_JOB_RANK?





Steffen Grunewald wrote:

On Wed, Jun 27, 2007 at 09:07:53AM -0500, Dan Bradley wrote:
This expression is internal to the negotiator, so it is not visible as part of the machine ClassAd. The best way I can think of to check the expression would be to evaluate it in a condor_status query. Example:

condor_status -f "%g\n" '-Memory'

This works (although it's lacking a key to distinguish between the machines).
condor_status -f "%s " Name -f "%g\n" '-Memory'

NEGOTIATOR_PRE_JOB_RANK = - Memory
yes
NEGOTIATOR_PRE_JOB_RANK = ( -1 * Memory )
yes
NEGOTIATOR_PRE_JOB_RANK = ( -1 * MEMORY )
yes
NEGOTIATOR_PRE_JOB_RANK = - $(Memory)
No, because $(...) is a macro substitution operator, so $(Memory) says to insert the value of a configuration macro named Memory when the negotiator is reading the configuration file. Instead, you want to refer to the Memory attribute of the machine ClassAd (equivalently TARGET.Memory).

I'm still a bit confused 8( but to summarize:
- if I refer to ClassAd attributes, I don't have to write $(...)
- upper/lower case doesn't matter
- TARGET may be used as a prefix to distinguish between machine and
	job classAds - MY.Memory would refer to the job Requirement.
If MY.Memory would be defined, Memory without a prefix would return that value? Then only ( - TARGET.Memory ) would be ultimately safe :-(
Yes to all of your summary statements above. The difference between macro expansion within the configuration file and references to ClassAd attributes in ClassAd expressions is confusing. Just remember that macro substitution via $(...) happens immediately when Condor is reading the configuration file on startup or reconfig, whereas evaulation of ClassAd attributes happens later, whenever the expression is evaluated in the context of some ClassAd.

--Dan