summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael DeHaan <mdehaan@mdehaan.rdu.redhat.com>2007-06-22 18:45:45 -0400
committerMichael DeHaan <mdehaan@mdehaan.rdu.redhat.com>2007-06-22 18:45:45 -0400
commited59c9218b327dfdd38ec14e3e91d78c89cdfaec (patch)
tree8c1611007823150392c9d00aca710d10be082d85
parent72e85883c0307c0a289440629c7d659d10b28589 (diff)
downloadthird_party-cobbler-ed59c9218b327dfdd38ec14e3e91d78c89cdfaec.tar.gz
third_party-cobbler-ed59c9218b327dfdd38ec14e3e91d78c89cdfaec.tar.xz
third_party-cobbler-ed59c9218b327dfdd38ec14e3e91d78c89cdfaec.zip
updating cobblerd to use API rather than YAML deserialization.
(find is case agnostic, etc)
-rw-r--r--cobbler/cobblerd.py85
-rw-r--r--cobbler/serializer.py2
2 files changed, 21 insertions, 66 deletions
diff --git a/cobbler/cobblerd.py b/cobbler/cobblerd.py
index b83c629..20e157c 100644
--- a/cobbler/cobblerd.py
+++ b/cobbler/cobblerd.py
@@ -15,38 +15,14 @@ import time
import os
import SimpleXMLRPCServer
import yaml # Howell Clark version
-
+import glob
import api as cobbler_api
+import utils
from rhpl.translate import _, N_, textdomain, utf8
-
-import logging
-
-# hack to make xmlrpclib tolerate None:
-# http://www.thescripts.com/forum/thread499321.html
import xmlrpclib
-# WARNING: Dirty hack below.
-# Replace the dumps() function in xmlrpclib with one that by default
-# handles None, so SimpleXMLRPCServer can return None.
-#class _xmldumps(object):
-# def __init__(self, dumps):
-# self.__dumps = (dumps,)
-# def __call__(self, *args, **kwargs):
-# kwargs.setdefault('allow_none', 1)
-# return self.__dumps[0](*args, **kwargs)
-#xmlrpclib.dumps = _xmldumps(xmlrpclib.dumps)
-
-log = logging.getLogger('cobblerd')
-level = logging.ERROR
-def main():
- log.setLevel(level)
- ch = logging.FileHandler("/var/log/cobbler/cobblerd.log")
- ch.setLevel(level)
- #create formatter
- formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
- ch.setFormatter(formatter)
- log.addHandler(ch)
+def main():
bootapi = cobbler_api.BootAPI()
settings = bootapi.settings()
@@ -107,8 +83,6 @@ class CobblerXMLRPCInterface:
return cmp(a["name"],b["name"])
def __get_all(self,collection):
- log.debug("get_all...")
- log.debug(collection)
data = collection.to_datastruct()
data.sort(self.__sorter)
return self.fix_none(data)
@@ -126,9 +100,6 @@ class CobblerXMLRPCInterface:
if name is None:
return self.fix_none({})
name = name.lower()
- log.debug("get_specific...")
- log.debug(collection)
- log.debug(name)
item = collection.find(name)
if item is None:
return self.fix_none({})
@@ -147,41 +118,29 @@ class CobblerXMLRPCInterface:
def get_repo(self,name):
return self.__get_specific(self.api.repos(),name)
- def __get_for_koan(self,dir,name):
- if name is None:
- return self.fix_none({})
- name = name.lower()
- log.debug("get_for_koan ...")
- log.debug(dir)
- log.debug(name)
- path = os.path.join("/var/www/cobbler/", dir, name)
- if not os.path.exists(path):
- return self.fix_none({})
- fd = open(path)
- data = fd.read()
- datastruct = yaml.load(data).next()
- fd.close()
- return self.fix_none(datastruct)
-
def get_distro_for_koan(self,name):
- return self.__get_for_koan("distros",name)
+ obj = cobbler_api.distros().find(name)
+ if obj is not None:
+ return self.fix_none(utils.blender(True, obj))
+ return self.fix_none({})
def get_profile_for_koan(self,name):
- return self.__get_for_koan("profiles",name)
+ obj = self.api.profiles().find(name)
+ if obj is not None:
+ return self.fix_none(utils.blender(True, obj))
+ return self.fix_none({})
def get_system_for_koan(self,name):
- name = self.fix_system_name(name)
- return self.__get_for_koan("systems",name)
+ obj = self.api.systems().find(name)
+ if obj is not None:
+ return self.fix_none(utils.blender(True, obj))
+ return self.fix_none({})
- def fix_system_name(self,name):
- # convert pxeified name entries to cobbler format
- if name is None:
- return None
- name = name.lower()
- if name.startswith("01-"):
- name = name[3:]
- name = name.replace("-",":")
- return name
+ def get_repo_for_koan(self,name):
+ obj = self.api.repos().find(name)
+ if obj is not None:
+ return self.fix_none(utils.blender(True, obj))
+ return self.fix_none({})
def fix_none(self,data,recurse=False):
"""
@@ -199,10 +158,6 @@ class CobblerXMLRPCInterface:
for key in data.keys():
data[key] = self.fix_none(data[key],recurse=True)
- if not recurse:
- log.debug("returning...")
- log.debug(data)
-
return data
diff --git a/cobbler/serializer.py b/cobbler/serializer.py
index 39cb982..d35bdb1 100644
--- a/cobbler/serializer.py
+++ b/cobbler/serializer.py
@@ -37,7 +37,7 @@ def serialize(obj):
os.makedirs(dirname)
# evidentally this doesn't throw exceptions.
except OSError, ose:
- raise CX(_("Need permissions to write to %s") % os.path.dirname(dirname))
+ pass
try:
fd = open(filename,"w+")
except IOError, ioe3: