docker-nodepupper/nodepupper/nodeops.py

46 lines
1.0 KiB
Python
Raw Normal View History

2018-10-08 22:31:05 -07:00
import ZODB
import ZODB.FileStorage
import persistent
import persistent.list
import persistent.mapping
import BTrees.OOBTree
def plist():
return persistent.list.PersistentList()
def pmap():
return persistent.mapping.PersistentMapping()
class NObject(persistent.Persistent):
def __init__(self, fqdn, body):
self.fqdn = fqdn
self.parents = plist()
self.classes = pmap()
self.body = body
class NClass(persistent.Persistent):
def __init__(self, name):
self.name = name
class NClassAttachment(persistent.Persistent):
def __init__(self, cls, conf):
self.cls = cls
self.conf = conf
class NodeOps(object):
def __init__(self, db_path):
self.storage = ZODB.FileStorage.FileStorage(db_path)
self.db = ZODB.DB(self.storage)
with self.db.transaction() as c:
if "nodes" not in c.root():
c.root.nodes = BTrees.OOBTree.BTree()
if "classes" not in c.root():
c.root.classes = BTrees.OOBTree.BTree()