summaryrefslogtreecommitdiffstats
path: root/ipapython
diff options
context:
space:
mode:
authorRob Crittenden <rcritten@redhat.com>2010-08-31 16:59:27 -0400
committerRob Crittenden <rcritten@redhat.com>2010-08-31 16:59:27 -0400
commitd0ea0bb63891babd1c5778df2e291b527c8e927c (patch)
treeecbc0c15a5e86da0fc4b7c049ebe2a0c420f516f /ipapython
parente05400dad83adabe09e57e9eb04b718c01019e32 (diff)
downloadfreeipa-d0ea0bb63891babd1c5778df2e291b527c8e927c.tar.gz
freeipa-d0ea0bb63891babd1c5778df2e291b527c8e927c.tar.xz
freeipa-d0ea0bb63891babd1c5778df2e291b527c8e927c.zip
Changes to fix compatibility with Fedora 14
Fedora 14 introduced the following incompatiblities: - the kerberos binaries moved from /usr/kerberos/[s]/bin to /usr/[s]bin - the xmlrpclib in Python 2.7 is not fully backwards compatible to 2.6 Also, when moving the installed host service principals: - don't assume that krbticketflags is set - allow multiple values for krbextradata ticket 155
Diffstat (limited to 'ipapython')
-rw-r--r--ipapython/ipautil.py8
-rw-r--r--ipapython/nsslib.py11
2 files changed, 14 insertions, 5 deletions
diff --git a/ipapython/ipautil.py b/ipapython/ipautil.py
index 3f8bba902..4d07bb626 100644
--- a/ipapython/ipautil.py
+++ b/ipapython/ipautil.py
@@ -89,7 +89,7 @@ def write_tmp_file(txt):
return fd
-def run(args, stdin=None, raiseonerr=True, nolog=()):
+def run(args, stdin=None, raiseonerr=True, nolog=(), env=None):
"""
Execute a command and return stdin, stdout and the process return code.
@@ -113,11 +113,13 @@ def run(args, stdin=None, raiseonerr=True, nolog=()):
If an value isn't found in the list it is silently ignored.
"""
+ if env is None:
+ env={"PATH": "/bin:/sbin:/usr/kerberos/bin:/usr/kerberos/sbin:/usr/bin:/usr/sbin"}
if stdin:
- p = subprocess.Popen(args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=True)
+ p = subprocess.Popen(args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=True, env=env)
stdout,stderr = p.communicate(stdin)
else:
- p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=True)
+ p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=True, env=env)
stdout,stderr = p.communicate()
# The command and its output may include passwords that we don't want
diff --git a/ipapython/nsslib.py b/ipapython/nsslib.py
index f7891768f..9593dd1c4 100644
--- a/ipapython/nsslib.py
+++ b/ipapython/nsslib.py
@@ -18,6 +18,7 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
+import sys
import httplib
import getpass
import logging
@@ -161,7 +162,7 @@ class NSSConnection(httplib.HTTPConnection):
logging.debug("connect: %s", net_addr)
self.sock.connect(net_addr)
- def endheaders(self):
+ def endheaders(self, message=None):
"""
Explicitly close the connection if an error is returned after the
headers are sent. This will likely mean the initial SSL handshake
@@ -170,7 +171,13 @@ class NSSConnection(httplib.HTTPConnection):
"""
try:
# FIXME: httplib uses old-style classes so super doesn't work
- httplib.HTTPConnection.endheaders(self)
+ # Python 2.7 changed the API for endheaders. This is an attempt
+ # to work across versions
+ (major, minor, micro, releaselevel, serial) = sys.version_info
+ if major == 2 and minor < 7:
+ httplib.HTTPConnection.endheaders(self)
+ else:
+ httplib.HTTPConnection.endheaders(self, message)
except NSPRError, e:
self.close()
raise e