summaryrefslogtreecommitdiffstats
path: root/ipalib/rpc.py
diff options
context:
space:
mode:
authorJason Gerard DeRose <jderose@redhat.com>2009-01-23 12:51:48 -0700
committerRob Crittenden <rcritten@redhat.com>2009-02-03 15:29:02 -0500
commit0313f03277cf0b3e3b24019fd22734dab65d4860 (patch)
tree1143714800efee619cb6e6ec9927158f7c37c57f /ipalib/rpc.py
parent114b6b8577ca9585efe8914d5fdd739f208d6ba8 (diff)
downloadfreeipa-0313f03277cf0b3e3b24019fd22734dab65d4860.tar.gz
freeipa-0313f03277cf0b3e3b24019fd22734dab65d4860.tar.xz
freeipa-0313f03277cf0b3e3b24019fd22734dab65d4860.zip
Added ServiceError (KerberosError) and make rpc.KerbTransport raise it if appropriate
Diffstat (limited to 'ipalib/rpc.py')
-rw-r--r--ipalib/rpc.py9
1 files changed, 7 insertions, 2 deletions
diff --git a/ipalib/rpc.py b/ipalib/rpc.py
index 55f3ea954..9e7060d28 100644
--- a/ipalib/rpc.py
+++ b/ipalib/rpc.py
@@ -37,6 +37,7 @@ from xmlrpclib import Binary, Fault, dumps, loads, ServerProxy, SafeTransport
import kerberos
from ipalib.backend import Backend
from ipalib.errors2 import public_errors, PublicError, UnknownError, NetworkError
+from ipalib import errors2
from ipalib.request import context
@@ -178,7 +179,6 @@ class KerbTransport(SafeTransport):
"""
def get_host_info(self, host):
-
(host, extra_headers, x509) = SafeTransport.get_host_info(self, host)
# Set the remote host principal
@@ -192,7 +192,11 @@ class KerbTransport(SafeTransport):
try:
kerberos.authGSSClientStep(vc, "")
except kerberos.GSSError, e:
- raise e # FIXME: raise a PublicError
+ (major, minor) = e.args
+ if minor[1] == -1765328377:
+ raise errors2.ServiceError(service=service)
+ else:
+ raise e
extra_headers += [
('Authorization', 'negotiate %s' % kerberos.authGSSClientResponse(vc))
@@ -220,6 +224,7 @@ class xmlclient(Backend):
)
)
conn = ServerProxy(self.env.xmlrpc_uri,
+ transport=KerbTransport(),
allow_none=True,
encoding='UTF-8',
)