summaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
authorChris St. Pierre <chris.a.st.pierre@gmail.com>2013-08-09 11:19:47 -0400
committerChris St. Pierre <chris.a.st.pierre@gmail.com>2013-08-09 11:46:16 -0400
commit6fedc7a28b21cab6be173ab8ef82113697ab170b (patch)
tree7b1515bec5f9ea2c1f8546ad7ecb685f9ba2a2d5 /src/lib
parent86ebb3260c9e1bc77d2f69257576bcbabeba4097 (diff)
downloadbcfg2-6fedc7a28b21cab6be173ab8ef82113697ab170b.tar.gz
bcfg2-6fedc7a28b21cab6be173ab8ef82113697ab170b.tar.bz2
bcfg2-6fedc7a28b21cab6be173ab8ef82113697ab170b.zip
Options: fix parsing of ComponentActions and other finalizable actions
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/Bcfg2/Options/Actions.py2
-rw-r--r--src/lib/Bcfg2/Options/Options.py7
-rw-r--r--src/lib/Bcfg2/Options/Parser.py8
3 files changed, 8 insertions, 9 deletions
diff --git a/src/lib/Bcfg2/Options/Actions.py b/src/lib/Bcfg2/Options/Actions.py
index cb83f3ae7..7a30d9623 100644
--- a/src/lib/Bcfg2/Options/Actions.py
+++ b/src/lib/Bcfg2/Options/Actions.py
@@ -145,7 +145,7 @@ class ComponentAction(argparse.Action):
else:
result = self._load_component(values)
self._final = True
- setattr(namespace, self.dest, values)
+ setattr(namespace, self.dest, result)
class ConfigFileAction(argparse.Action):
diff --git a/src/lib/Bcfg2/Options/Options.py b/src/lib/Bcfg2/Options/Options.py
index 18e5cc75d..ca0261907 100644
--- a/src/lib/Bcfg2/Options/Options.py
+++ b/src/lib/Bcfg2/Options/Options.py
@@ -148,7 +148,7 @@ class Option(object):
:class:`Bcfg2.Options.OptionGroup` """
return [self]
- def finalize(self):
+ def finalize(self, namespace):
""" Finalize the default value for this option. This is used
with actions (such as :class:`Bcfg2.Options.ComponentAction`)
that allow you to specify a default in a different format than
@@ -157,9 +157,8 @@ class Option(object):
not given on the command line or in the config file) to store
the appropriate default value in the appropriate format."""
for parser, action in self.actions.items():
- if parser is not None:
- if hasattr(action, "finalize"):
- action.finalize(parser, parser.namespace)
+ if hasattr(action, "finalize"):
+ action.finalize(parser, namespace)
def from_config(self, cfp):
""" Get the value of this option from the given
diff --git a/src/lib/Bcfg2/Options/Parser.py b/src/lib/Bcfg2/Options/Parser.py
index 6414cf98e..b956ca089 100644
--- a/src/lib/Bcfg2/Options/Parser.py
+++ b/src/lib/Bcfg2/Options/Parser.py
@@ -138,26 +138,26 @@ class Parser(argparse.ArgumentParser):
def _finalize(self):
for opt in self.option_list[:]:
- opt.finalize()
+ opt.finalize(self.namespace)
def _reset_namespace(self):
self.parsed = False
for attr in dir(self.namespace):
if (not attr.startswith("_") and
attr not in ['uri', 'version', 'name'] and
- attr not in self.config_files):
+ attr not in self._config_files):
delattr(self.namespace, attr)
def add_config_file(self, dest, cfile):
""" Add a config file, which triggers a full reparse of all
options. """
- if dest not in self.config_files:
+ if dest not in self._config_files:
self._reset_namespace()
self._cfp.read([cfile])
self._defaults_set = []
self._set_defaults()
self._parse_config_options()
- self.config_files.append(dest)
+ self._config_files.append(dest)
def reparse(self, argv=None):
""" Reparse options after they have already been parsed.