From 838fbf56829cd15182e73e3820a453037afbea38 Mon Sep 17 00:00:00 2001 From: "Chris St. Pierre" Date: Tue, 31 Jul 2012 09:50:19 -0400 Subject: py3k fix: UserDict -> MutableMapping --- src/lib/Bcfg2/Server/Plugins/Metadata.py | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) (limited to 'src/lib/Bcfg2/Server/Plugins/Metadata.py') diff --git a/src/lib/Bcfg2/Server/Plugins/Metadata.py b/src/lib/Bcfg2/Server/Plugins/Metadata.py index 07659b62a..e7be7c227 100644 --- a/src/lib/Bcfg2/Server/Plugins/Metadata.py +++ b/src/lib/Bcfg2/Server/Plugins/Metadata.py @@ -14,7 +14,7 @@ import Bcfg2.Server import Bcfg2.Server.Lint import Bcfg2.Server.Plugin import Bcfg2.Server.FileMonitor -from UserDict import DictMixin +from Bcfg2.Bcfg2Py3k import MutableMapping from Bcfg2.version import Bcfg2VersionInfo try: @@ -39,7 +39,7 @@ if has_django: hostname = models.CharField(max_length=255, primary_key=True) version = models.CharField(max_length=31, null=True) - class ClientVersions(DictMixin): + class ClientVersions(MutableMapping): def __getitem__(self, key): try: return MetadataClientModel.objects.get(hostname=key).version @@ -51,6 +51,25 @@ if has_django: client.version = value client.save() + def __delitem__(self, key): + # UserDict didn't require __delitem__, but MutableMapping + # does. we don't want deleting a client version record to + # delete the client, so we just set the version to None, + # which is kinda like deleting it, but not really. + try: + client = MetadataClientModel.objects.get(hostname=key) + except MetadataClientModel.DoesNotExist: + raise KeyError(key) + client.version = None + client.save() + + def __len__(self): + return MetadataClientModel.objects.count() + + def __iter__(self): + for client in MetadataClientModel.objects.all(): + yield client.hostname + def keys(self): return [c.hostname for c in MetadataClientModel.objects.all()] @@ -446,7 +465,6 @@ class Metadata(Bcfg2.Server.Plugin.Plugin, def add_client(self, client_name, attribs=None): """Add client to clients.xml.""" - print "add_client(%s, attribs=%s)" % (client_name, attribs) if attribs is None: attribs = dict() if self._use_db: -- cgit v1.2.3-1-g7c22