diff options
-rw-r--r-- | doc/1.0-roadmap | 15 | ||||
-rw-r--r-- | src/lib/Server/Plugins/Properties.py | 30 | ||||
-rw-r--r-- | src/lib/Server/Plugins/__init__.py | 6 |
3 files changed, 46 insertions, 5 deletions
diff --git a/doc/1.0-roadmap b/doc/1.0-roadmap index 6a7e9e70a..1bd0b9df2 100644 --- a/doc/1.0-roadmap +++ b/doc/1.0-roadmap @@ -7,6 +7,7 @@ server. ** Done *** Build a comprehensive server plugin architecture *** make out of tree plugins work +*** properties switch to connector plugin ** Left *** Version Control Backend *** Fix the POSIX path problem @@ -17,9 +18,19 @@ server. **** Performance * Other Goals -** properties switch to connector plugin ** ticket triage - ** bind failure annotations ** plugin self-bootstrap (get out of bcfg2-admin init) ** core plugin filtering (for bcfg2-admin & co) + +* Pie in the sky +** Rework XMLRPC interfaces + +* User visible changes +** Properties +*** switched over to a connector interface +*** now supports multiple file of XML +*** data available as metadata.Properties[filename] +** Probes +*** switched over to a connector interface +*** data available as metadata.Probes diff --git a/src/lib/Server/Plugins/Properties.py b/src/lib/Server/Plugins/Properties.py new file mode 100644 index 000000000..61e80bfe3 --- /dev/null +++ b/src/lib/Server/Plugins/Properties.py @@ -0,0 +1,30 @@ +import copy, lxml.etree +import Bcfg2.Server.Plugin + +class Properties(Bcfg2.Server.Plugin.XMLFileBacked): + '''Class for properties files''' + def Index(self): + '''Build data into an xml object''' + try: + self.data = lxml.etree.XML(self.data) + except lxml.etree.XMLSyntaxError: + logger.error("Failed to parse %s" % self.name) + +class PropDirectoryBacked(Bcfg2.Server.Plugin.DirectoryBacked): + __child__ = Properties + +class Properties(Bcfg2.Server.Plugin.Plugin, + Bcfg2.Server.Plugin.Connector): + '''The properties plugin maps property files into client metadata instances''' + name = 'Properties' + version = '$Revision: $' + experimental = True + + + def __init__(self, core, datastore): + Bcfg2.Server.Plugin.Plugin.__init__(self, core, datastore) + Bcfg2.Server.Plugin.Connector.__init__(self) + self.store = PropDirectoryBacked(self.data, core.fam) + + def get_additional_metadata(self, _): + return ((), copy.deepcopy(self.store.entries)) diff --git a/src/lib/Server/Plugins/__init__.py b/src/lib/Server/Plugins/__init__.py index 8fcb34fc6..1e5c122c8 100644 --- a/src/lib/Server/Plugins/__init__.py +++ b/src/lib/Server/Plugins/__init__.py @@ -2,6 +2,6 @@ __revision__ = '$Revision$' __all__ = ['Account', 'Base', 'Bundler', 'Cfg', 'Decisions', 'GBundler', - 'Hostbase', 'Metadata', 'NagiosGen', 'Packages', 'Probes', - 'Pkgmgr', 'Rules', 'SSHbase', 'Statistics', 'Svcmgr', 'TCheetah', - 'SGenshi', 'TGenshi', 'Vhost'] + 'Hostbase', 'Metadata', 'NagiosGen', 'Packages', 'Properties', + 'Probes', 'Pkgmgr', 'Rules', 'SSHbase', 'Statistics', 'Svcmgr', + 'TCheetah', 'SGenshi', 'TGenshi', 'Vhost'] |