path: root/ipalib/
diff options
authorRob Crittenden <>2011-01-19 11:24:31 -0500
committerSimo Sorce <>2011-01-28 18:49:17 -0500
commit359d54e741877f04b0773fb0955041eee7ec0054 (patch)
tree8a1c69754da14a502d809330e2f8f7831ff0c16b /ipalib/
parentfd1d0857b5b559425668f38d85a7d607d0f35767 (diff)
Don't perform some API self-tests in production mode for performance reasons
The API does a fair number of self tests and locking to assure that the registered commands are consistent and will work. This does not need to be done on a production system and adds additional overhead causing somewhere between a 30 and 50% decrease in performance. Because makeapi is executed when a build is done ensure that it is executed in developer mode to ensure that the framework is ok. ticket 751
Diffstat (limited to 'ipalib/')
1 files changed, 10 insertions, 5 deletions
diff --git a/ipalib/ b/ipalib/
index 264bb68..82bd522 100644
--- a/ipalib/
+++ b/ipalib/
@@ -207,6 +207,8 @@ class Plugin(ReadOnly):
def finalize(self):
+ if self.env.mode == 'production':
+ return
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():
- assert p.instance.api is self
+ if self.env.mode != 'production':
+ assert p.instance.api is self
for p in plugins.itervalues():
- 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',