mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2024-12-23 15:40:01 -06:00
Backend.xmlrpc and simple-server.py now use the xmlrpc_marshal() and xmlrpc_unmarshal() functions respectively
This commit is contained in:
parent
d84e27f0d4
commit
3ffbaac64c
@ -23,7 +23,7 @@ DEFAULT_CONF='/etc/ipa/ipa.conf'
|
||||
|
||||
def generate_env(d={}):
|
||||
default = dict(
|
||||
server_context = True,
|
||||
server_context = False,
|
||||
query_dns = True,
|
||||
verbose = False,
|
||||
servers = LazyIter(get_servers),
|
||||
|
@ -541,8 +541,10 @@ class Command(plugable.Plugin):
|
||||
print ' kw =', kw
|
||||
|
||||
def forward(self, *args, **kw):
|
||||
xmlrpc_client = self.api.Backend.xmlrpc.get_client()
|
||||
return getattr(xmlrpc_client, self.name)(kw, *args)
|
||||
"""
|
||||
Forward call over XML-RPC.
|
||||
"""
|
||||
return self.api.Backend.xmlrpc.forward_call(self.name, *args, **kw)
|
||||
|
||||
|
||||
def __call__(self, *args, **kw):
|
||||
|
@ -25,6 +25,7 @@ Lightwieght XML-RPC client using Python standard library xmlrpclib.
|
||||
|
||||
import xmlrpclib
|
||||
from ipalib.backend import Backend
|
||||
from ipalib.util import xmlrpc_marshal
|
||||
from ipalib import api
|
||||
|
||||
class xmlrpc(Backend):
|
||||
@ -36,4 +37,13 @@ class xmlrpc(Backend):
|
||||
# FIXME: The server uri should come from self.api.env.server_uri
|
||||
return xmlrpclib.ServerProxy('http://localhost:8080', allow_none=True)
|
||||
|
||||
def forward_call(self, name, *args, **kw):
|
||||
"""
|
||||
Forward a call over XML-RPC to an IPA server.
|
||||
"""
|
||||
client = self.get_client()
|
||||
command = getattr(client, name)
|
||||
params = xmlrpc_marshal(*args, **kw)
|
||||
return command(*params)
|
||||
|
||||
api.register(xmlrpc)
|
||||
|
@ -26,9 +26,11 @@ The server will run at http://localhost:8080
|
||||
"""
|
||||
|
||||
from SimpleXMLRPCServer import SimpleXMLRPCServer
|
||||
from ipalib.util import xmlrpc_unmarshal
|
||||
from ipalib import api
|
||||
from ipalib import load_plugins
|
||||
|
||||
api.env.server_context = True
|
||||
api.finalize()
|
||||
|
||||
class Dispatch(object):
|
||||
@ -36,15 +38,12 @@ class Dispatch(object):
|
||||
self.__cmd = cmd
|
||||
|
||||
def __call__(self, *params):
|
||||
if len(params) > 0:
|
||||
kw = params[0]
|
||||
else:
|
||||
kw = {}
|
||||
args = params[1:]
|
||||
return cmd(*args, **kw)
|
||||
print 'dispatch: %s%r' % (self.__cmd.name, params)
|
||||
(args, kw) = xmlrpc_unmarshal(*params)
|
||||
return self.__cmd(*args, **kw)
|
||||
|
||||
|
||||
server = SimpleXMLRPCServer(('localhost', 8080))
|
||||
server = SimpleXMLRPCServer(('localhost', 8080), allow_none=True)
|
||||
server.register_introspection_functions()
|
||||
for cmd in api.Command():
|
||||
server.register_function(Dispatch(cmd), cmd.name)
|
||||
|
Loading…
Reference in New Issue
Block a user