diff options
-rwxr-xr-x | install/tools/ipa-replica-install | 1 | ||||
-rwxr-xr-x | install/tools/ipa-server-install | 1 | ||||
-rw-r--r-- | ipalib/config.py | 3 | ||||
-rw-r--r-- | ipalib/frontend.py | 7 | ||||
-rw-r--r-- | ipalib/plugable.py | 15 | ||||
-rwxr-xr-x | makeapi | 1 |
6 files changed, 20 insertions, 8 deletions
diff --git a/install/tools/ipa-replica-install b/install/tools/ipa-replica-install index 717d25f05..3eb41daae 100755 --- a/install/tools/ipa-replica-install +++ b/install/tools/ipa-replica-install @@ -387,6 +387,7 @@ def main(): if ipautil.file_exists(config.dir + "/cacert.p12"): fd.write("enable_ra=True\n") fd.write("ra_plugin=dogtag\n") + fd.write("mode=production\n") fd.close() api.bootstrap(in_server=True) diff --git a/install/tools/ipa-server-install b/install/tools/ipa-server-install index f1cab63f6..c07f6fc3e 100755 --- a/install/tools/ipa-server-install +++ b/install/tools/ipa-server-install @@ -683,6 +683,7 @@ def main(): fd.write("enable_ra=True\n") if not options.selfsign: fd.write("ra_plugin=dogtag\n") + fd.write("mode=production\n") fd.close() api.bootstrap(**cfg) diff --git a/ipalib/config.py b/ipalib/config.py index ec86d9e1b..888785a26 100644 --- a/ipalib/config.py +++ b/ipalib/config.py @@ -467,6 +467,9 @@ class Env(object): else: self.in_tree = False + if self.in_tree and 'mode' not in self: + self.mode = 'developer' + # Set dot_ipa: if 'dot_ipa' not in self: self.dot_ipa = self._join('home', '.ipa') diff --git a/ipalib/frontend.py b/ipalib/frontend.py index 58fd4d640..cf78d441f 100644 --- a/ipalib/frontend.py +++ b/ipalib/frontend.py @@ -351,9 +351,10 @@ class HasParam(Plugin): self._filter_param_by_context(name, env), sort=False ) - check = getattr(self, 'check_' + name, None) - if callable(check): - check(namespace) + if self.env.mode != 'production': + check = getattr(self, 'check_' + name, None) + if callable(check): + check(namespace) setattr(self, name, namespace) diff --git a/ipalib/plugable.py b/ipalib/plugable.py index 264bb68cf..82bd52283 100644 --- a/ipalib/plugable.py +++ b/ipalib/plugable.py @@ -207,6 +207,8 @@ class Plugin(ReadOnly): def finalize(self): """ """ + if self.env.mode == 'production': + return lock(self) def set_api(self, api): @@ -601,19 +603,22 @@ class API(DictProxy): namespace = NameSpace( plugin_iter(base, (magic[k] for k in magic)) ) - assert not ( - name in self.__d or hasattr(self, name) - ) + if self.env.mode != 'production': + assert not ( + name in self.__d or hasattr(self, name) + ) self.__d[name] = namespace object.__setattr__(self, name, namespace) for p in plugins.itervalues(): p.instance.set_api(self) - assert p.instance.api is self + if self.env.mode != 'production': + assert p.instance.api is self for p in plugins.itervalues(): p.instance.finalize() - assert islocked(p.instance) is True + if self.env.mode != 'production': + assert islocked(p.instance) is True object.__setattr__(self, '_API__finalized', True) tuple(PluginInfo(p) for p in plugins.itervalues()) object.__setattr__(self, 'plugins', @@ -210,6 +210,7 @@ def main(): verbose=0, validate_api=True, enable_ra=True, + mode='developer', ) api.bootstrap(**cfg) |