diff options
author | Michael DeHaan <mdehaan@redhat.com> | 2009-01-21 14:16:10 -0500 |
---|---|---|
committer | Michael DeHaan <mdehaan@redhat.com> | 2009-01-21 14:16:10 -0500 |
commit | 11193120d70635124d74811f8549bfaa05241115 (patch) | |
tree | a294a5a4bfcaa504900f35a7d509fe61ff5101a7 /cobbler/api.py | |
parent | 16e0af1a1d048cd77ed5a3d2843d84ed19b32e8b (diff) | |
download | cobbler-11193120d70635124d74811f8549bfaa05241115.tar.gz cobbler-11193120d70635124d74811f8549bfaa05241115.tar.xz cobbler-11193120d70635124d74811f8549bfaa05241115.zip |
The beginings of a caching implementation for cobblerd to make the webapp/XMLRPC much faster.
Diffstat (limited to 'cobbler/api.py')
-rw-r--r-- | cobbler/api.py | 43 |
1 files changed, 33 insertions, 10 deletions
diff --git a/cobbler/api.py b/cobbler/api.py index f4178239..36edafd3 100644 --- a/cobbler/api.py +++ b/cobbler/api.py @@ -49,6 +49,7 @@ import time import random import os import yaml +import xmlrpclib ERROR = 100 INFO = 10 @@ -90,14 +91,17 @@ class BootAPI: # perms_ok is False return + # FIMXE: conslidate into 1 server instance + self.logger_remote = self.__setup_logger("remote") self.selinux_enabled = utils.is_selinux_enabled() self.dist = utils.check_dist() self.os_version = utils.os_release() self.acl_engine = acls.AclEngine() - + BootAPI.__has_loaded = True + module_loader.load_modules() self._config = config.Config(self) @@ -118,7 +122,8 @@ class BootAPI: self.pxegen = pxegen.PXEGen(self._config) self.logger.debug("API handle initialized") self.perms_ok = True - + + def __setup_logger(self,name): return utils.setup_logger(name, **self.log_settings) @@ -142,6 +147,20 @@ class BootAPI: return False return True + def _internal_cache_update(self, collection_type, name, remove=False): + """ + Update cobblerd so it won't have to ever reload the config, once started. + """ + # FIXME: take value from settings, use raw port + self.server_normal = xmlrpclib.Server("http://127.0.0.1/cobbler_api") + self.server_rw = xmlrpclib.Server("http://127.0.0.1/cobbler_api_rw") + if not remove: + self.server_normal.internal_cache_update(collection_type, name) + self.server_rw.internal_cache_update(collection_type, name) + else: + self.server_normal.internal_cache_remove(collection_type, name) + self.server_rw.internal_cache_remove(collection_type, name) + def last_modified_time(self): """ Returns the time of the last modification to cobbler, made by any @@ -273,7 +292,6 @@ class BootAPI: else: self.log("remove_distro",ref) return self._config.distros().remove(ref, recursive=recursive) - def remove_profile(self,ref, recursive=False): if type(ref) != str: @@ -349,27 +367,32 @@ class BootAPI: def add_distro(self, ref, check_for_duplicate_names=False): self.log("add_distro",[ref.name]) - return self._config.distros().add(ref,save=True,check_for_duplicate_names=check_for_duplicate_names) + rc = self._config.distros().add(ref,save=True,check_for_duplicate_names=check_for_duplicate_names) + return rc def add_profile(self, ref, check_for_duplicate_names=False): self.log("add_profile",[ref.name]) - return self._config.profiles().add(ref,save=True,check_for_duplicate_names=check_for_duplicate_names) + rc = self._config.profiles().add(ref,save=True,check_for_duplicate_names=check_for_duplicate_names) + return rc def add_system(self, ref, check_for_duplicate_names=False, check_for_duplicate_netinfo=False): self.log("add_system",[ref.name]) - return self._config.systems().add(ref,save=True,check_for_duplicate_names=check_for_duplicate_names,check_for_duplicate_netinfo=check_for_duplicate_netinfo) + rc = self._config.systems().add(ref,save=True,check_for_duplicate_names=check_for_duplicate_names,check_for_duplicate_netinfo=check_for_duplicate_netinfo) + return rc def add_repo(self, ref, check_for_duplicate_names=False): self.log("add_repo",[ref.name]) - return self._config.repos().add(ref,save=True,check_for_duplicate_names=check_for_duplicate_names) - + rc = self._config.repos().add(ref,save=True,check_for_duplicate_names=check_for_duplicate_names) + return rc + def add_image(self, ref, check_for_duplicate_names=False): self.log("add_image",[ref.name]) - return self._config.images().add(ref,save=True,check_for_duplicate_names=check_for_duplicate_names) + rc = self._config.images().add(ref,save=True,check_for_duplicate_names=check_for_duplicate_names) + return rc def find_distro(self, name=None, return_list=False, no_errors=False, **kargs): return self._config.distros().find(name=name, return_list=return_list, no_errors=no_errors, **kargs) - + def find_profile(self, name=None, return_list=False, no_errors=False, **kargs): return self._config.profiles().find(name=name, return_list=return_list, no_errors=no_errors, **kargs) |