summaryrefslogtreecommitdiffstats
path: root/src/lib/Bcfg2/Server/Plugins/DBMetadata.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/Bcfg2/Server/Plugins/DBMetadata.py')
-rw-r--r--src/lib/Bcfg2/Server/Plugins/DBMetadata.py128
1 files changed, 0 insertions, 128 deletions
diff --git a/src/lib/Bcfg2/Server/Plugins/DBMetadata.py b/src/lib/Bcfg2/Server/Plugins/DBMetadata.py
deleted file mode 100644
index 16a6e0dcc..000000000
--- a/src/lib/Bcfg2/Server/Plugins/DBMetadata.py
+++ /dev/null
@@ -1,128 +0,0 @@
-import os
-import sys
-from UserDict import DictMixin
-from django.db import models
-import Bcfg2.Server.Lint
-import Bcfg2.Server.Plugin
-from Bcfg2.Server.Plugins.Metadata import *
-
-class MetadataClientModel(models.Model,
- Bcfg2.Server.Plugin.PluginDatabaseModel):
- hostname = models.CharField(max_length=255, primary_key=True)
- version = models.CharField(max_length=31, null=True)
-
-
-class ClientVersions(DictMixin):
- def __getitem__(self, key):
- try:
- return MetadataClientModel.objects.get(hostname=key).version
- except MetadataClientModel.DoesNotExist:
- raise KeyError(key)
-
- def __setitem__(self, key, value):
- client = MetadataClientModel.objects.get_or_create(hostname=key)[0]
- client.version = value
- client.save()
-
- def keys(self):
- return [c.hostname for c in MetadataClientModel.objects.all()]
-
- def __contains__(self, key):
- try:
- client = MetadataClientModel.objects.get(hostname=key)
- return True
- except MetadataClientModel.DoesNotExist:
- return False
-
-
-class DBMetadata(Metadata, Bcfg2.Server.Plugin.DatabaseBacked):
- __files__ = ["groups.xml"]
- experimental = True
- conflicts = ['Metadata']
-
- def __init__(self, core, datastore, watch_clients=True):
- Metadata.__init__(self, core, datastore, watch_clients=watch_clients)
- Bcfg2.Server.Plugin.DatabaseBacked.__init__(self)
- if os.path.exists(os.path.join(self.data, "clients.xml")):
- self.logger.warning("DBMetadata: clients.xml found, parsing in "
- "compatibility mode")
- self._handle_file("clients.xml")
- self.versions = ClientVersions()
-
- def add_group(self, group_name, attribs):
- msg = "DBMetadata does not support adding groups"
- self.logger.error(msg)
- raise Bcfg2.Server.Plugin.PluginExecutionError(msg)
-
- def add_bundle(self, bundle_name):
- msg = "DBMetadata does not support adding bundles"
- self.logger.error(msg)
- raise Bcfg2.Server.Plugin.PluginExecutionError(msg)
-
- def add_client(self, client_name):
- """Add client to clients database."""
- client = MetadataClientModel(hostname=client_name)
- client.save()
- self.clients = self.list_clients()
- return client
-
- def update_group(self, group_name, attribs):
- msg = "DBMetadata does not support updating groups"
- self.logger.error(msg)
- raise Bcfg2.Server.Plugin.PluginExecutionError(msg)
-
- def update_bundle(self, bundle_name):
- msg = "DBMetadata does not support updating bundles"
- self.logger.error(msg)
- raise Bcfg2.Server.Plugin.PluginExecutionError(msg)
-
- def update_client(self, client_name, attribs):
- msg = "DBMetadata does not support updating clients"
- self.logger.error(msg)
- raise Bcfg2.Server.Plugin.PluginExecutionError(msg)
-
- def list_clients(self):
- """ List all clients in client database """
- return set([c.hostname for c in MetadataClientModel.objects.all()])
-
- def remove_group(self, group_name, attribs):
- msg = "DBMetadata does not support removing groups"
- self.logger.error(msg)
- raise Bcfg2.Server.Plugin.PluginExecutionError(msg)
-
- def remove_bundle(self, bundle_name):
- msg = "DBMetadata does not support removing bundles"
- self.logger.error(msg)
- raise Bcfg2.Server.Plugin.PluginExecutionError(msg)
-
- def remove_client(self, client_name):
- """Remove a client"""
- try:
- client = MetadataClientModel.objects.get(hostname=client_name)
- except MetadataClientModel.DoesNotExist:
- msg = "Client %s does not exist" % client_name
- self.logger.warning(msg)
- raise MetadataConsistencyError(msg)
- client.delete()
- self.clients = self.list_clients()
-
- def _set_profile(self, client, profile, addresspair):
- if client not in self.clients:
- # adding a new client
- self.add_client(client)
- if client not in self.clientgroups:
- self.clientgroups[client] = [profile]
- else:
- msg = "DBMetadata does not support asserting client profiles"
- self.logger.error(msg)
- raise Bcfg2.Server.Plugin.PluginExecutionError(msg)
-
- def _handle_clients_xml_event(self, event):
- # clients.xml is parsed and the options specified in it are
- # understood, but it does _not_ assert client existence.
- Metadata._handle_clients_xml_event(self, event)
- self.clients = self.list_clients()
-
-
-class DBMetadataLint(MetadataLint):
- pass