summaryrefslogtreecommitdiffstats
path: root/src/lib/Server/Plugin.py
diff options
context:
space:
mode:
authorNarayan Desai <desai@mcs.anl.gov>2006-01-25 16:48:06 +0000
committerNarayan Desai <desai@mcs.anl.gov>2006-01-25 16:48:06 +0000
commite3759d2a2e5fdb0e0a7f7dfa4f8244fdbb3ffe92 (patch)
tree31d523f4849b2a3232f92c2142cdd35b96beb5e1 /src/lib/Server/Plugin.py
parentedca0b698637c3fd0a70af7e4752a46afca938d3 (diff)
downloadbcfg2-e3759d2a2e5fdb0e0a7f7dfa4f8244fdbb3ffe92.tar.gz
bcfg2-e3759d2a2e5fdb0e0a7f7dfa4f8244fdbb3ffe92.tar.bz2
bcfg2-e3759d2a2e5fdb0e0a7f7dfa4f8244fdbb3ffe92.zip
Introduce the new logging infrastructure and convert the server (and bcfg2-info) over to using it
git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@1717 ce84e21b-d406-0410-9b95-82705330c041
Diffstat (limited to 'src/lib/Server/Plugin.py')
-rw-r--r--src/lib/Server/Plugin.py37
1 files changed, 16 insertions, 21 deletions
diff --git a/src/lib/Server/Plugin.py b/src/lib/Server/Plugin.py
index 890084c98..be4d7ba23 100644
--- a/src/lib/Server/Plugin.py
+++ b/src/lib/Server/Plugin.py
@@ -1,13 +1,12 @@
'''This module provides the baseclass for Bcfg2 Server Plugins'''
__revision__ = '$Revision$'
-import lxml.etree
-import os
-import stat
-import syslog
+import logging, lxml.etree, os, stat
from lxml.etree import XML, XMLSyntaxError
+logger = logging.getLogger('Bcfg2.Plugin')
+
class PluginInitError(Exception):
'''Error raised in cases of Plugin initialization errors'''
pass
@@ -38,10 +37,7 @@ class Plugin(object):
self.Entries = {}
self.core = core
self.data = "%s/%s" % (datastore, self.__name__)
-
- def LogError(self, msg):
- '''Log error message tagged with Plugin name'''
- syslog.syslog(syslog.LOG_ERR, "%s: %s" % (self.__name__, msg))
+ self.logger = logging.getLogger('Bcfg2.Plugins.%s' % (self.__name__))
def BuildStructures(self, metadata):
'''Build a set of structures tailored to the client metadata'''
@@ -77,13 +73,13 @@ class FileBacked(object):
try:
self.mtime = os.stat(self.name)[stat.ST_MTIME]
except OSError:
- syslog.syslog(syslog.LOG_ERR, "Failed to stat file %s" % (self.name))
+ logger.error("Failed to stat file %s" % (self.name))
try:
self.data = file(self.name).read()
self.Index()
except IOError:
- syslog.syslog(syslog.LOG_ERR, "Failed to read file %s" % (self.name))
+ logger.error("Failed to read file %s" % (self.name))
def Index(self):
'''Update local data structures based on current file state'''
@@ -110,9 +106,9 @@ class DirectoryBacked(object):
def AddEntry(self, name):
'''Add new entry to data structures upon file creation'''
if name == '':
- syslog.syslog(syslog.LOG_INFO, "got add for empty name")
+ logger.info("got add for empty name")
elif self.entries.has_key(name):
- syslog.syslog(syslog.LOG_INFO, "got multiple adds for %s" % name)
+ logger.info("got multiple adds for %s" % name)
else:
if ((name[-1] == '~') or (name[:2] == '.#') or (name[-4:] == '.swp') or (name in ['SCCS', '.svn'])):
return
@@ -123,7 +119,7 @@ class DirectoryBacked(object):
'''Propagate fam events to underlying objects'''
action = event.code2str()
if event.filename == '':
- syslog.syslog(syslog.LOG_INFO, "Got event for blank filename")
+ logger.info("Got event for blank filename")
return
if action == 'exists':
if event.filename != self.name:
@@ -155,7 +151,7 @@ class XMLFileBacked(FileBacked):
try:
xdata = XML(self.data)
except XMLSyntaxError:
- syslog.syslog(syslog.LOG_ERR, "Failed to parse %s"%(self.name))
+ logger.error("Failed to parse %s"%(self.name))
return
self.label = xdata.attrib[self.__identifier__]
self.entries = xdata.getchildren()
@@ -180,7 +176,7 @@ class StructFile(XMLFileBacked):
try:
xdata = lxml.etree.XML(self.data)
except lxml.etree.XMLSyntaxError:
- syslog.syslog(syslog.LOG_ERR, "Failed to parse file %s" % self.name)
+ logger.error("Failed to parse file %s" % self.name)
return
self.fragments = {}
work = {lambda x:True: xdata.getchildren()}
@@ -255,8 +251,7 @@ class XMLSrc(XMLFileBacked):
if self.cache == None or self.cache[0] != metadata:
cache = (metadata, {})
if self.pnode == None:
- syslog.syslog(syslog.LOG_ERR,
- "Cache method called early for %s; forcing data load" % (self.name))
+ logger.error("Cache method called early for %s; forcing data load" % (self.name))
self.HandleEvent()
return
self.pnode.Match(metadata, cache[1])
@@ -274,7 +269,7 @@ class XMLPrioDir(Plugin, DirectoryBacked):
try:
DirectoryBacked.__init__(self, self.data, self.core.fam)
except OSError:
- self.LogError("Failed to load %s indices" % (self.__element__.lower()))
+ self.logger.error("Failed to load %s indices" % (self.__element__.lower()))
raise PluginInitError
def HandleEvent(self, event):
@@ -289,7 +284,7 @@ class XMLPrioDir(Plugin, DirectoryBacked):
[src.Cache(metadata) for src in self.entries.values()]
name = entry.get('name')
if not src.cache:
- self.LogError("Called before data loaded")
+ self.logger.error("Called before data loaded")
raise PluginExecutionError
matching = [src for src in self.entries.values()
if src.cache[1].has_key(name)]
@@ -300,8 +295,8 @@ class XMLPrioDir(Plugin, DirectoryBacked):
else:
prio = [int(src.priority) for src in matching]
if prio.count(max(prio)) > 1:
- self.LogError("Found multiple %s sources with same priority for %s, pkg %s" %
- (self.__element__.lower(), metadata.hostname, entry.get('name')))
+ self.logger.error("Found multiple %s sources with same priority for %s, pkg %s" %
+ (self.__element__.lower(), metadata.hostname, entry.get('name')))
raise PluginExecutionError
index = prio.index(max(prio))