summaryrefslogtreecommitdiffstats
path: root/src/lib/Bcfg2/Options.py
diff options
context:
space:
mode:
authorChris St. Pierre <chris.a.st.pierre@gmail.com>2013-03-21 14:35:04 -0400
committerChris St. Pierre <chris.a.st.pierre@gmail.com>2013-03-21 14:35:04 -0400
commit38f99b402d3118e2c26ff42d72ddf9b666adac13 (patch)
tree705d18bed66337192816325facb1733280291ff5 /src/lib/Bcfg2/Options.py
parenta3f2a731bbef5d9c2033eed23432aa7792d47989 (diff)
parent71d7285c405bd639f1f9f2642ea8fb567b97caec (diff)
downloadbcfg2-38f99b402d3118e2c26ff42d72ddf9b666adac13.tar.gz
bcfg2-38f99b402d3118e2c26ff42d72ddf9b666adac13.tar.bz2
bcfg2-38f99b402d3118e2c26ff42d72ddf9b666adac13.zip
Merge branch '1.3.2' into maint
Conflicts: src/lib/Bcfg2/Client/Tools/__init__.py src/sbin/bcfg2-test testsuite/Testsrc/Testlib/TestClient/TestTools/TestPOSIX/Test__init.py testsuite/Testsrc/Testlib/TestClient/TestTools/TestPOSIXUsers.py testsuite/Testsrc/test_code_checks.py
Diffstat (limited to 'src/lib/Bcfg2/Options.py')
-rw-r--r--src/lib/Bcfg2/Options.py61
1 files changed, 58 insertions, 3 deletions
diff --git a/src/lib/Bcfg2/Options.py b/src/lib/Bcfg2/Options.py
index 5f079f0b4..7c91ca3cc 100644
--- a/src/lib/Bcfg2/Options.py
+++ b/src/lib/Bcfg2/Options.py
@@ -334,6 +334,22 @@ def get_bool(val):
raise ValueError("Not a boolean value", val)
+def get_int(val):
+ """ given a string value of an integer configuration option,
+ return an actual int """
+ return int(val)
+
+
+def get_timeout(val):
+ """ convert the timeout value into a float or None """
+ if val is None:
+ return val
+ timeout = float(val) # pass ValueError up the stack
+ if timeout <= 0:
+ return None
+ return timeout
+
+
def get_size(value):
""" Given a number of bytes in a human-readable format (e.g.,
'512m', '2g'), get the absolute number of bytes as an integer """
@@ -582,6 +598,11 @@ SERVER_UMASK = \
default='0077',
odesc='<Server umask>',
cf=('server', 'umask'))
+SERVER_AUTHENTICATION = \
+ Option('Default client authentication method',
+ default='cert+password',
+ odesc='{cert|bootstrap|cert+password}',
+ cf=('communication', 'authentication'))
# database options
DB_ENGINE = \
@@ -805,10 +826,20 @@ CLIENT_EXIT_ON_PROBE_FAILURE = \
long_arg=True,
cf=('client', 'exit_on_probe_failure'),
cook=get_bool)
+CLIENT_PROBE_TIMEOUT = \
+ Option("Timeout when running client probes",
+ default=None,
+ cf=('client', 'probe_timeout'),
+ cook=get_timeout)
+CLIENT_COMMAND_TIMEOUT = \
+ Option("Timeout when client runs other external commands (not probes)",
+ default=None,
+ cf=('client', 'command_timeout'),
+ cook=get_timeout)
# bcfg2-test and bcfg2-lint options
TEST_NOSEOPTS = \
- Option('Options to pass to nosetests',
+ Option('Options to pass to nosetests. Only honored with --children 0',
default=[],
cmd='--nose-options',
odesc='<opts>',
@@ -823,6 +854,21 @@ TEST_IGNORE = \
cf=('bcfg2_test', 'ignore_entries'),
cook=list_split,
long_arg=True)
+TEST_CHILDREN = \
+ Option('Spawn this number of children for bcfg2-test (python 2.6+)',
+ default=0,
+ cmd='--children',
+ odesc='<children>',
+ cf=('bcfg2_test', 'children'),
+ cook=get_int,
+ long_arg=True)
+TEST_XUNIT = \
+ Option('Output an XUnit result file with --children',
+ default=None,
+ cmd='--xunit',
+ odesc='<xunit file>',
+ cf=('bcfg2_test', 'xunit'),
+ long_arg=True)
LINT_CONFIG = \
Option('Specify bcfg2-lint configuration file',
default='/etc/bcfg2-lint.conf',
@@ -1117,7 +1163,8 @@ SERVER_COMMON_OPTIONS = dict(repo=SERVER_REPOSITORY,
protocol=SERVER_PROTOCOL,
web_configfile=WEB_CFILE,
backend=SERVER_BACKEND,
- vcs_root=SERVER_VCS_ROOT)
+ vcs_root=SERVER_VCS_ROOT,
+ authentication=SERVER_AUTHENTICATION)
CRYPT_OPTIONS = dict(encrypt=ENCRYPT,
decrypt=DECRYPT,
@@ -1195,7 +1242,9 @@ CLIENT_COMMON_OPTIONS = \
serverCN=CLIENT_SCNS,
timeout=CLIENT_TIMEOUT,
decision_list=CLIENT_DECISION_LIST,
- probe_exit=CLIENT_EXIT_ON_PROBE_FAILURE)
+ probe_exit=CLIENT_EXIT_ON_PROBE_FAILURE,
+ probe_timeout=CLIENT_PROBE_TIMEOUT,
+ command_timeout=CLIENT_COMMAND_TIMEOUT)
CLIENT_COMMON_OPTIONS.update(DRIVER_OPTIONS)
CLIENT_COMMON_OPTIONS.update(CLI_COMMON_OPTIONS)
@@ -1214,6 +1263,12 @@ DATABASE_COMMON_OPTIONS = dict(web_configfile=WEB_CFILE,
REPORTING_COMMON_OPTIONS = dict(reporting_file_limit=REPORTING_FILE_LIMIT,
reporting_transport=REPORTING_TRANSPORT)
+TEST_COMMON_OPTIONS = dict(noseopts=TEST_NOSEOPTS,
+ test_ignore=TEST_IGNORE,
+ children=TEST_CHILDREN,
+ xunit=TEST_XUNIT,
+ validate=CFG_VALIDATION)
+
class OptionParser(OptionSet):
"""