summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris St. Pierre <chris.a.st.pierre@gmail.com>2014-07-15 10:54:55 -0400
committerChris St. Pierre <chris.a.st.pierre@gmail.com>2014-07-15 10:54:55 -0400
commit16bb58a7110daeb479fdf41e5c67f45dc3502fc5 (patch)
treee2d4da726b6ed0a37187d57d5d9367bc30a4d33b
parent1f3f4c79fb4bb0684a000c169774c7b62816ff5a (diff)
parentc76fb188215208fcfc5af9027f16447855a6f064 (diff)
downloadbcfg2-16bb58a7110daeb479fdf41e5c67f45dc3502fc5.tar.gz
bcfg2-16bb58a7110daeb479fdf41e5c67f45dc3502fc5.tar.bz2
bcfg2-16bb58a7110daeb479fdf41e5c67f45dc3502fc5.zip
Merge pull request #180 from fennm/default-fam_blocking-to-true
Default fam blocking to true
-rw-r--r--doc/man/bcfg2-server.txt5
-rw-r--r--doc/man/bcfg2.conf.txt2
-rw-r--r--man/bcfg2-server.87
-rw-r--r--man/bcfg2.conf.52
-rw-r--r--src/lib/Bcfg2/Options/Options.py29
-rw-r--r--src/lib/Bcfg2/Server/Core.py3
6 files changed, 36 insertions, 12 deletions
diff --git a/doc/man/bcfg2-server.txt b/doc/man/bcfg2-server.txt
index 3f8f3ea21..f85964ae7 100644
--- a/doc/man/bcfg2-server.txt
+++ b/doc/man/bcfg2-server.txt
@@ -11,7 +11,7 @@ Synopsis
**bcfg2-server** [-d] [-v] [-C *configfile*] [-D *pidfile*] [-E
*encoding*] [-Q *repo path*] [-S *server url*] [-o *logfile*] [-x
-*password*] [--ssl-key=\ *ssl key*]
+*password*] [--ssl-key=\ *ssl key*] [--no-fam-blocking]
Description
-----------
@@ -33,8 +33,9 @@ Options
-v Run in verbose mode.
-h Print usage information.
--ssl-key=key Specify the path to the SSL key.
+--no-fam-blocking Synonym for fam_blocking = False in bcfg2.conf
See Also
--------
-:manpage:`bcfg2(1)`, :manpage:`bcfg2-lint(8)`
+:manpage:`bcfg2(1)`, :manpage:`bcfg2-lint(8)`, :manpage:`bcfg2.conf(5)`
diff --git a/doc/man/bcfg2.conf.txt b/doc/man/bcfg2.conf.txt
index 36776b5cb..9e5da3eb9 100644
--- a/doc/man/bcfg2.conf.txt
+++ b/doc/man/bcfg2.conf.txt
@@ -49,7 +49,7 @@ fam_blocking
Whether the server should block at startup until the file monitor
backend has processed all events. This can cause a slower startup,
but ensure that all files are recognized before the first client
- is handled.
+ is handled. Defaults to True.
ignore_files
A comma-separated list of globs that should be ignored by the file
diff --git a/man/bcfg2-server.8 b/man/bcfg2-server.8
index dcec03252..60fe58a30 100644
--- a/man/bcfg2-server.8
+++ b/man/bcfg2-server.8
@@ -34,7 +34,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.sp
\fBbcfg2\-server\fP [\-d] [\-v] [\-C \fIconfigfile\fP] [\-D \fIpidfile\fP] [\-E
\fIencoding\fP] [\-Q \fIrepo path\fP] [\-S \fIserver url\fP] [\-o \fIlogfile\fP] [\-x
-\fIpassword\fP] [\-\-ssl\-key=\fIssl key\fP]
+\fIpassword\fP] [\-\-ssl\-key=\fIssl key\fP] [\-\-no\-fam\-blocking]
.SH DESCRIPTION
.sp
\fBbcfg2\-server\fP is the daemon component of Bcfg2 which serves
@@ -70,9 +70,12 @@ Print usage information.
.TP
.BI \-\-ssl\-key\fB= key
Specify the path to the SSL key.
+.TP
+.BI \-\-no\-fam\-blocking
+Synonym for fam_blocking = False in bcfg2.conf
.UNINDENT
.SH SEE ALSO
.sp
-\fIbcfg2(1)\fP, \fIbcfg2\-lint(8)\fP
+\fIbcfg2(1)\fP, \fIbcfg2\-lint(8)\fP, \fIbcfg2.conf(5)\fP
.\" Generated by docutils manpage writer.
.
diff --git a/man/bcfg2.conf.5 b/man/bcfg2.conf.5
index b9642b334..851f5527d 100644
--- a/man/bcfg2.conf.5
+++ b/man/bcfg2.conf.5
@@ -79,7 +79,7 @@ pseudo
Whether the server should block at startup until the file monitor
backend has processed all events. This can cause a slower startup,
but ensure that all files are recognized before the first client
-is handled.
+is handled. Defaults to True.
.TP
.B ignore_files
A comma\-separated list of globs that should be ignored by the file
diff --git a/src/lib/Bcfg2/Options/Options.py b/src/lib/Bcfg2/Options/Options.py
index 11388fb4d..3874f810d 100644
--- a/src/lib/Bcfg2/Options/Options.py
+++ b/src/lib/Bcfg2/Options/Options.py
@@ -306,6 +306,26 @@ class PathOption(Option):
Option.__init__(self, *args, **kwargs)
+class _BooleanOptionAction(argparse.Action):
+ """ BooleanOptionAction sets a boolean value in the following ways:
+ - if None is passed, store the default
+ - if the option_string is not None, then the option was passed on the
+ command line, thus store the opposite of the default (this is the
+ argparse store_true and store_false behavior)
+ - if a boolean value is passed, use that
+
+ Defined here instead of :mod:`Bcfg2.Options.Actions` because otherwise
+ there is a circular import Options -> Actions -> Parser -> Options """
+
+ def __call__(self, parser, namespace, values, option_string=None):
+ if values is None:
+ setattr(namespace, self.dest, self.default)
+ elif option_string is not None:
+ setattr(namespace, self.dest, not self.default)
+ else:
+ setattr(namespace, self.dest, bool(values))
+
+
class BooleanOption(Option):
""" Shortcut for boolean options. The default is False, but this
can easily be overridden:
@@ -317,11 +337,10 @@ class BooleanOption(Option):
"--dwim", default=True, help="Do What I Mean")]
"""
def __init__(self, *args, **kwargs):
- if 'default' in kwargs and kwargs['default']:
- kwargs.setdefault('action', 'store_false')
- else:
- kwargs.setdefault('action', 'store_true')
- kwargs.setdefault('default', False)
+ kwargs.setdefault('action', _BooleanOptionAction)
+ kwargs.setdefault('nargs', 0)
+ kwargs.setdefault('default', False)
+
Option.__init__(self, *args, **kwargs)
diff --git a/src/lib/Bcfg2/Server/Core.py b/src/lib/Bcfg2/Server/Core.py
index 544f417b4..a2f9499f2 100644
--- a/src/lib/Bcfg2/Server/Core.py
+++ b/src/lib/Bcfg2/Server/Core.py
@@ -131,7 +131,8 @@ class Core(object):
Bcfg2.Options.Common.repository,
Bcfg2.Options.Common.filemonitor,
Bcfg2.Options.BooleanOption(
- cf=('server', 'fam_blocking'), default=False,
+ "--no-fam-blocking", cf=('server', 'fam_blocking'),
+ dest="fam_blocking", default=True,
help='FAM blocks on startup until all events are processed'),
Bcfg2.Options.BooleanOption(
cf=('logging', 'performance'), dest="perflog",