summaryrefslogtreecommitdiffstats
path: root/src/lib/Bcfg2/Server/Plugins/Ohai.py
diff options
context:
space:
mode:
authorChris St. Pierre <chris.a.st.pierre@gmail.com>2013-03-26 22:12:20 -0400
committerChris St. Pierre <chris.a.st.pierre@gmail.com>2013-03-26 22:12:20 -0400
commitbc35aa70ab8794b73019d90a41eb252fbb80ff52 (patch)
tree3cce934901374c67c1f56d5841643028dc058ae6 /src/lib/Bcfg2/Server/Plugins/Ohai.py
parent0fae9849fd7047c299468fd6728db56d6861ee12 (diff)
downloadbcfg2-bc35aa70ab8794b73019d90a41eb252fbb80ff52.tar.gz
bcfg2-bc35aa70ab8794b73019d90a41eb252fbb80ff52.tar.bz2
bcfg2-bc35aa70ab8794b73019d90a41eb252fbb80ff52.zip
testsuite: fixed more unit test stuff
Diffstat (limited to 'src/lib/Bcfg2/Server/Plugins/Ohai.py')
-rw-r--r--src/lib/Bcfg2/Server/Plugins/Ohai.py23
1 files changed, 20 insertions, 3 deletions
diff --git a/src/lib/Bcfg2/Server/Plugins/Ohai.py b/src/lib/Bcfg2/Server/Plugins/Ohai.py
index a88c245bd..8a1b07ac8 100644
--- a/src/lib/Bcfg2/Server/Plugins/Ohai.py
+++ b/src/lib/Bcfg2/Server/Plugins/Ohai.py
@@ -2,8 +2,10 @@
operating system using ohai
(http://wiki.opscode.com/display/chef/Ohai) """
-import lxml.etree
import os
+import sys
+import glob
+import lxml.etree
import Bcfg2.Server.Plugin
try:
@@ -31,22 +33,37 @@ class OhaiCache(object):
self.dirname = dirname
self.cache = dict()
+ def itempath(self, item):
+ return os.path.join(self.dirname, "%s.json" % item)
+
def __setitem__(self, item, value):
if value is None:
# simply return if the client returned nothing
return
self.cache[item] = json.loads(value)
- open("%s/%s.json" % (self.dirname, item), 'w').write(value)
+ open(self.itempath(item), 'w').write(value)
def __getitem__(self, item):
if item not in self.cache:
try:
- data = open("%s/%s.json" % (self.dirname, item)).read()
+ data = open(self.itempath(item)).read()
except:
raise KeyError(item)
self.cache[item] = json.loads(data)
return self.cache[item]
+ def __delitem__(self, item):
+ if item in self.cache:
+ del self.cache[item]
+ try:
+ os.unlink(self.itempath(item))
+ except:
+ raise IndexError("Could not unlink %s: %s" % (self.itempath(item),
+ sys.exc_info()[1]))
+
+ def __len__(self):
+ return len(glob.glob(self.itempath('*')))
+
def __iter__(self):
data = list(self.cache.keys())
data.extend([x[:-5] for x in os.listdir(self.dirname)])