The method by which condor_configurations file parameters are to be added into HTCondor has changed. -There is a file called =src/condor_c++_util/param_info.in= and in it are definitions like this: +There is a file called =src/condor_utils/param_info.in= and in it are definitions like this: {verbatim} [SCHEDD] @@ -9,56 +9,52 @@ version=0.0.0 range=.* state=default -type=string +type=path is_macro=false reconfig=true customization=seldom friendly_name=Schedd usage=Where are the binaries for these daemons? -url=http://research.cs.wisc.edu/htcondor/manual/current/3_3Configuration.html tags=master,master id=552 {endverbatim} -It is strongly recommended to copy the above and use it as a template. +Nearly all of the fields are optional, several are not currently used, but may be in the future. + +The attributes that you really need to care about are *default, win32_default, type, friendly_name*, and *tags*. {subsection: Required fields} The parameter name in square brackets marks the beginning of an entry. -*: *type* - The type. Valid values are: bool, double, int, long, path, string +*: *default* - The default value. (ex. $(SBIN)/condor_master, 10, false), default may have no value, but the default keyword is required. -{subsection: Strongly recommended fields} +{subsection: optional, but recommended fields} -The attributes that you really need to care about are *default, type, usage, friendly_name*, *url*, and *tags*. +*: *win32_default* - default value for Windows, if this is not specified, *default* is the default value for all platforms -*: *default* - The default value. (ex. $(SBIN)/condor_master, 10, false) +*: *type* - The type. Valid values are: bool, double, int, long, path, string. path is like string, but / will be changed to \ for Windows. type defaults to STRING. -*: *friendly_name* - A more human friendly version of the parameter name. May just be the parameter name with underscores changed to spaces and in mixed case. (ex. Filesystem Domain) +*: *friendly_name* - A more human friendly version of the parameter name *: *usage* - Brief information on how to set the paramter. (ex. to specify that each machine has its own file system, Log files) (The current entries are wildly inconsistent. -*: *url* - Link to the matching documentation in the manual. You can leave this as the default pointing to the general configuration section. - *: *tags* - Comma separated (NO SPACES) list of tags to identify the setting. If the setting is only relevant for a particular program or daemon, list that daemon here, minus any condor_ prefix (ex. schedd, submit). -*: *customization* - How often is it changed by users? seldom, often, or always. Also "const", for things which should never be changed (HOUR, MINUTE). One setting uses "NORMAL", no idea. - -*: *reconfig* - true or false. If true, the value can be changed with condor_reconfig; otherwise it will only be respected on daemon restart. (TODO: check) +*: *customization* - How often is it changed by users? const, normal, seldom, expert, devel. default is SELDOM. +**: const - things which should never be changed (HOUR, MINUTE). +**: normal - customization is likely, (LOCAL_DIR) +**: seldom - customization is unlikely, and default value should be shown to non-expert users (MASTER_LOG) +**: expert - customization is unlikely, and default value should be hidden from non-expert users. +**: devel - customization at developer request only, all evidence of this param is burn-before-reading. -{subsection: Optional fields} +*: *reconfig* - true or false. If true, the value can be changed with condor_reconfig; otherwise it will only be respected on daemon restart. (TODO: check). default is TRUE -*: *range* - for type=int and type=double is a pair of comma separated values indicating the minimum and maximum allowed values. You can omit the second number to indicate INT_MAX or DBL_MAX respectively. (ex range=.*; range=1024,; range=1,1000000000) (<- TODO ".*" suggests regular expressions are allowed?) +*: *range* - for type=int, long or double this is a pair of comma separated values indicating the minimum and maximum allowed values. You can omit the second number to indicate INT_MAX or DBL_MAX respectively. (ex range=1024,; range=1,1000000000), default is type_MIN, type_MAX. ignore range=.* this is vestigial, range has no meaning for non-numeric params *: *aliases* - List(?) of other parameter names which are essentially identical to this use, generally used for backward compatibility. (ex aliases=GROUP_DYNAMIC_MACH_CONSTRAINT) -*: *id* - Unused? (TODO check) Just copy it from the template for now. - -*: *state* - TODO No idea. Exclusively used as "state=default" for now. - -*: *is_macro* - TODO No idea. overwhelmingly is_macro=false, but a few set it to true. - -*: *version* - (TODO Check) the version the setting was added. 0.0.0 if you don't know. +*: *version* - (Future) the version the setting was added. defaults is 7.1.0 {subsection: Further discussion} @@ -69,8 +65,8 @@ Be aware that the default is internally implemented as a string, so if you enter double numbers or what not for those types of params that are, you may lose precision when it passed through the strtod() function. Also, there are no interpolations or substitutions in the default. What you see is exactly what you get. This includes trailing spaces. You may *NOT* add variables that: -1: requires a runtime, or nonimmediate, default, like =NUM_CPUS=. You *CAN* however, make a default which is an expression based upon another configuration file parameter. -1: follow a pattern like *_FOOBAR that you cannot specify all cases to. (You'd write A_FOOBAR, B_FOOBAR, C_FOOBAR as individual cases of the above snippet). (<- TODO: Does this work at all?) +1: requires a runtime, or nonimmediate, default, like =NUM_CPUS=. You *CAN* however, make a default which is an expression based upon another configuration file parameter. And you can reference the detected params, OPSYS, ARCH, etc. +1: follow a pattern like *_FOOBAR that you cannot specify all cases to. (You'd write A_FOOBAR, B_FOOBAR, C_FOOBAR as individual cases of the above snippet). (future work may allow this) Currently, the =param()= system does not =EXCEPT= when an entry is not in the default table. It is our hope and dream that one day all of our entries will be in the default table and =EXCEPT= will be the default case. Of course, there is an interface into param() which doesn't except no matter what, to implement those features which param() things at runtime picked out of another config file entry.