summaryrefslogtreecommitdiffstats
path: root/src/lib/Bcfg2/Server
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/Bcfg2/Server')
-rw-r--r--src/lib/Bcfg2/Server/Core.py11
-rw-r--r--src/lib/Bcfg2/Server/Plugin.py2
-rw-r--r--src/lib/Bcfg2/Server/Plugins/SSHbase.py15
3 files changed, 20 insertions, 8 deletions
diff --git a/src/lib/Bcfg2/Server/Core.py b/src/lib/Bcfg2/Server/Core.py
index 4321c060b..0be28ee46 100644
--- a/src/lib/Bcfg2/Server/Core.py
+++ b/src/lib/Bcfg2/Server/Core.py
@@ -42,7 +42,10 @@ def sort_xml(node, key=None):
for child in node:
sort_xml(child, key)
- sorted_children = sorted(node, key=key)
+ try:
+ sorted_children = sorted(node, key=key)
+ except TypeError:
+ sorted_children = node
node[:] = sorted_children
@@ -239,12 +242,14 @@ class Core(Component):
continue
try:
self.Bind(entry, metadata)
- except PluginExecutionError, exc:
+ except PluginExecutionError:
+ exc = sys.exc_info()[1]
if 'failure' not in entry.attrib:
entry.set('failure', 'bind error: %s' % format_exc())
logger.error("Failed to bind entry: %s %s" % \
(entry.tag, entry.get('name')))
- except Exception, exc:
+ except Exception:
+ exc = sys.exc_info()[1]
if 'failure' not in entry.attrib:
entry.set('failure', 'bind error: %s' % format_exc())
logger.error("Unexpected failure in BindStructure: %s %s" \
diff --git a/src/lib/Bcfg2/Server/Plugin.py b/src/lib/Bcfg2/Server/Plugin.py
index 41314bbea..dc70a630f 100644
--- a/src/lib/Bcfg2/Server/Plugin.py
+++ b/src/lib/Bcfg2/Server/Plugin.py
@@ -945,6 +945,8 @@ class SpecificData(object):
return
try:
self.data = open(self.name).read()
+ except UnicodeDecodeError:
+ self.data = open(self.name, mode='rb').read()
except:
logger.error("Failed to read file %s" % self.name)
diff --git a/src/lib/Bcfg2/Server/Plugins/SSHbase.py b/src/lib/Bcfg2/Server/Plugins/SSHbase.py
index ac281ad1a..a1a29727f 100644
--- a/src/lib/Bcfg2/Server/Plugins/SSHbase.py
+++ b/src/lib/Bcfg2/Server/Plugins/SSHbase.py
@@ -1,4 +1,4 @@
-'''This module manages ssh key files for bcfg2'''
+"""This module manages ssh key files for bcfg2"""
import binascii
import re
@@ -19,10 +19,15 @@ logger = logging.getLogger(__name__)
class KeyData(Bcfg2.Server.Plugin.SpecificData):
def __init__(self, name, specific, encoding):
- Bcfg2.Server.Plugin.SpecificData.__init__(self, name, specific,
+ Bcfg2.Server.Plugin.SpecificData.__init__(self,
+ name,
+ specific,
encoding)
self.encoding = encoding
+ def __lt__(self, other):
+ return self.name < other.name
+
def bind_entry(self, entry, metadata):
entry.set('type', 'file')
if entry.get('encoding') == 'base64':
@@ -212,7 +217,7 @@ class SSHbase(Bcfg2.Server.Plugin.Plugin,
continue
skn.append("%s %s" % (','.join(hostnames),
- entry.data.decode().rstrip()))
+ entry.data.rstrip()))
self.__skn = "\n".join(skn) + "\n"
return self.__skn
@@ -323,8 +328,8 @@ class SSHbase(Bcfg2.Server.Plugin.Plugin,
pass
hostkeys.sort()
for hostkey in hostkeys:
- entry.text += "localhost,localhost.localdomain,127.0.0.1 %s" % (
- hostkey.data.decode())
+ entry.text += "localhost,localhost.localdomain,127.0.0.1 %s" % \
+ (hostkey.data)
self.entries[entry.get('name')].bind_info_to_entry(entry, metadata)
def build_hk(self, entry, metadata):