xmlchangeΒΆ
xmlchange is a script in CIMEROOT/scripts/Tools.
$ ./xmlchange --help
usage: xmlchange [-h] [-d] [-v] [-s] [--caseroot CASEROOT] [--append]
[--subgroup SUBGROUP] [--id ID] [--val VAL] [--file FILE]
[--delimiter DELIMITER] [--dryrun] [--noecho] [-f]
[-loglevel LOGLEVEL]
[listofsettings]
Allows changing variables in env_*xml files via a command-line interface.
This provides two main benefits over editing the xml files by hand:
- Settings are checked immediately for validity
- Settings are echoed to the CaseStatus file, providing a "paper trail" of
changes made by the user.
Examples:
To set a single variable:
./xmlchange REST_N=4
To set multiple variables at once:
./xmlchange REST_OPTION=ndays,REST_N=4
Alternative syntax (no longer recommended, but supported for backwards
compatibility; only works for a single variable at a time):
./xmlchange --id REST_N --val 4
Several xml variables that have settings for each component have somewhat special treatment.
The variables that this currently applies to are:
NTASKS, NTHRDS, ROOTPE, PIO_TYPENAME, PIO_STRIDE, PIO_NUMTASKS
For example, to set the number of tasks for all components to 16, use:
./xmlchange NTASKS=16
To set just the number of tasks for the atm component, use:
./xmlchange NTASKS_ATM=16
The CIME case xml variables are grouped together in xml elements <group></group>.
This is done to associate together xml variables with common features.
Most variables are only associated with one group. However, in env_batch.xml,
there are also xml variables that are associated with each potential batch job.
For these variables, the '--subgroup' option may be used to specify a particular
group for which the variable's value will be adjusted.
As an example, in env_batch.xml, the xml variables JOB_QUEUE and JOB_WALLCLOCK_TIME
appear in each of the batch job groups (defined in config_batch.xml):
<group id="case.run">
<group id="case.st_archive">
<group id="case.test">
To set the variable JOB_WALLCLOCK_TIME only for case.run:
./xmlchange JOB_WALLCLOCK_TIME=0:30 --subgroup case.run
To set the variable JOB_WALLCLOCK_TIME for all jobs:
./xmlchange JOB_WALLCLOCK_TIME=0:30
positional arguments:
listofsettings Comma-separated list of settings in the form: var1=value,var2=value,...
optional arguments:
-h, --help show this help message and exit
-d, --debug Print debug information (very verbose) to file /Users/sacks/cime/scripts/Tools/xmlchange.log
-v, --verbose Add additional context (time and file) to log messages
-s, --silent Print only warnings and error messages
--caseroot CASEROOT Case directory to change.
Default is current directory.
--append, -append Append to the existing value rather than overwriting it.
--subgroup SUBGROUP, -subgroup SUBGROUP
Apply to this subgroup only.
--id ID, -id ID The variable to set.
(Used in the alternative --id var --val value form, rather than
the recommended var=value form.)
--val VAL, -val VAL The value to set.
(Used in the alternative --id var --val value form, rather than
the recommended var=value form.)
--file FILE, -file FILE
XML file to edit.
Generally not needed, but can be specified to ensure that only the
expected file is being changed. (If a variable is not found in this file,
an error will be generated.)
--delimiter DELIMITER, -delimiter DELIMITER
Delimiter string in listofvalues.
Default is ','.
--dryrun, -dryrun Parse settings and print key-value pairs, but don't actually change anything.
--noecho, -noecho Do not update CaseStatus with this change.
This option is mainly meant to be used by cime scripts: the 'paper trail' in
CaseStatus is meant to show changes made by the user, so we generally don't
want this to be contaminated by changes made automatically by cime scripts.
-f, --force Ignore typing checks and store value.
-loglevel LOGLEVEL Ignored, only for backwards compatibility.