diff options
author | Michael DeHaan <mdehaan@redhat.com> | 2007-12-12 16:12:02 -0500 |
---|---|---|
committer | Michael DeHaan <mdehaan@redhat.com> | 2007-12-12 16:12:02 -0500 |
commit | 67c3916d2993fae45e2d2c0a2de10542883426bc (patch) | |
tree | dacf4af843b6299b99001a2d57050c676059d5e1 /cobbler/api.py | |
parent | f21d59c43bd9d5101ef1fadd979b85eb63e124b2 (diff) | |
download | third_party-cobbler-67c3916d2993fae45e2d2c0a2de10542883426bc.tar.gz third_party-cobbler-67c3916d2993fae45e2d2c0a2de10542883426bc.tar.xz third_party-cobbler-67c3916d2993fae45e2d2c0a2de10542883426bc.zip |
Performance tweaking and benchmarks.
Diffstat (limited to 'cobbler/api.py')
-rw-r--r-- | cobbler/api.py | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/cobbler/api.py b/cobbler/api.py index 0830342..d44fc73 100644 --- a/cobbler/api.py +++ b/cobbler/api.py @@ -25,23 +25,32 @@ import action_validate import sub_process import module_loader import logging +import os +import fcntl ERROR = 100 INFO = 10 DEBUG = 5 +# notes on locking: +# BootAPI is a singleton object +# the XMLRPC variants allow 1 simultaneous request +# therefore we flock on /var/lib/cobbler/settings for now +# on a request by request basis. + class BootAPI: + __shared_state = {} - has_loaded = False + __has_loaded = False def __init__(self): """ Constructor """ - self.__dict__ = self.__shared_state - if not BootAPI.has_loaded: + self.__dict__ = BootAPI.__shared_state + if not BootAPI.__has_loaded: # NOTE: we do not log all API actions, because # a simple CLI invocation may call adds and such @@ -52,7 +61,7 @@ class BootAPI: self.logger = self.__setup_logger("api") self.logger_remote = self.__setup_logger("remote") - BootAPI.has_loaded = True + BootAPI.__has_loaded = True module_loader.load_modules() self._config = config.Config(self) self.deserialize() @@ -202,7 +211,7 @@ class BootAPI: cobbler_repo.set_mirror(url) cobbler_repo.set_name(auto_name) print "auto adding: %s (%s)" % (auto_name, url) - self._config.repos().add(cobbler_repo,with_copy=True) + self._config.repos().add(cobbler_repo,save=True) print "run cobbler reposync to apply changes" return True |