summaryrefslogtreecommitdiffstats
path: root/cobbler/api.py
diff options
context:
space:
mode:
authorMichael DeHaan <mdehaan@redhat.com>2009-01-21 14:16:10 -0500
committerMichael DeHaan <mdehaan@redhat.com>2009-01-21 14:16:10 -0500
commit11193120d70635124d74811f8549bfaa05241115 (patch)
treea294a5a4bfcaa504900f35a7d509fe61ff5101a7 /cobbler/api.py
parent16e0af1a1d048cd77ed5a3d2843d84ed19b32e8b (diff)
downloadcobbler-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.py43
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)