summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChris St. Pierre <chris.a.st.pierre@gmail.com>2012-07-31 09:50:19 -0400
committerChris St. Pierre <chris.a.st.pierre@gmail.com>2012-07-31 09:50:19 -0400
commit838fbf56829cd15182e73e3820a453037afbea38 (patch)
treec548106547b2f3fe5d75b871b2fba01a0bf96e06 /src
parent111193ef96adb711b1b1b4859291c77197eb8ea8 (diff)
downloadbcfg2-838fbf56829cd15182e73e3820a453037afbea38.tar.gz
bcfg2-838fbf56829cd15182e73e3820a453037afbea38.tar.bz2
bcfg2-838fbf56829cd15182e73e3820a453037afbea38.zip
py3k fix: UserDict -> MutableMapping
Diffstat (limited to 'src')
-rw-r--r--src/lib/Bcfg2/Bcfg2Py3k.py5
-rw-r--r--src/lib/Bcfg2/Server/Plugins/Metadata.py24
-rw-r--r--src/lib/Bcfg2/Server/Plugins/Packages/Yum.py4
3 files changed, 28 insertions, 5 deletions
diff --git a/src/lib/Bcfg2/Bcfg2Py3k.py b/src/lib/Bcfg2/Bcfg2Py3k.py
index 3dc6fc6f0..7b0c6a2b5 100644
--- a/src/lib/Bcfg2/Bcfg2Py3k.py
+++ b/src/lib/Bcfg2/Bcfg2Py3k.py
@@ -92,3 +92,8 @@ if sys.hexversion >= 0x03000000:
from io import FileIO as file
else:
file = file
+
+try:
+ from collections import MutableMapping
+except ImportError:
+ from UserDict import DictMixin as MutableMapping
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:
diff --git a/src/lib/Bcfg2/Server/Plugins/Packages/Yum.py b/src/lib/Bcfg2/Server/Plugins/Packages/Yum.py
index 0e3c54ad8..779614dbb 100644
--- a/src/lib/Bcfg2/Server/Plugins/Packages/Yum.py
+++ b/src/lib/Bcfg2/Server/Plugins/Packages/Yum.py
@@ -8,10 +8,10 @@ import socket
import logging
import threading
import lxml.etree
-from UserDict import DictMixin
from subprocess import Popen, PIPE, STDOUT
import Bcfg2.Server.Plugin
-from Bcfg2.Bcfg2Py3k import StringIO, cPickle, HTTPError, URLError, ConfigParser, file
+from Bcfg2.Bcfg2Py3k import StringIO, cPickle, HTTPError, URLError, \
+ ConfigParser, file
from Bcfg2.Server.Plugins.Packages.Collection import Collection
from Bcfg2.Server.Plugins.Packages.Source import SourceInitError, Source, \
fetch_url