mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -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={}):
|
def generate_env(d={}):
|
||||||
default = dict(
|
default = dict(
|
||||||
server_context = True,
|
server_context = False,
|
||||||
query_dns = True,
|
query_dns = True,
|
||||||
verbose = False,
|
verbose = False,
|
||||||
servers = LazyIter(get_servers),
|
servers = LazyIter(get_servers),
|
||||||
|
@ -541,8 +541,10 @@ class Command(plugable.Plugin):
|
|||||||
print ' kw =', kw
|
print ' kw =', kw
|
||||||
|
|
||||||
def forward(self, *args, **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):
|
def __call__(self, *args, **kw):
|
||||||
|
@ -25,6 +25,7 @@ Lightwieght XML-RPC client using Python standard library xmlrpclib.
|
|||||||
|
|
||||||
import xmlrpclib
|
import xmlrpclib
|
||||||
from ipalib.backend import Backend
|
from ipalib.backend import Backend
|
||||||
|
from ipalib.util import xmlrpc_marshal
|
||||||
from ipalib import api
|
from ipalib import api
|
||||||
|
|
||||||
class xmlrpc(Backend):
|
class xmlrpc(Backend):
|
||||||
@ -36,4 +37,13 @@ class xmlrpc(Backend):
|
|||||||
# FIXME: The server uri should come from self.api.env.server_uri
|
# FIXME: The server uri should come from self.api.env.server_uri
|
||||||
return xmlrpclib.ServerProxy('http://localhost:8080', allow_none=True)
|
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)
|
api.register(xmlrpc)
|
||||||
|
@ -26,9 +26,11 @@ The server will run at http://localhost:8080
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
from SimpleXMLRPCServer import SimpleXMLRPCServer
|
from SimpleXMLRPCServer import SimpleXMLRPCServer
|
||||||
|
from ipalib.util import xmlrpc_unmarshal
|
||||||
from ipalib import api
|
from ipalib import api
|
||||||
from ipalib import load_plugins
|
from ipalib import load_plugins
|
||||||
|
|
||||||
|
api.env.server_context = True
|
||||||
api.finalize()
|
api.finalize()
|
||||||
|
|
||||||
class Dispatch(object):
|
class Dispatch(object):
|
||||||
@ -36,15 +38,12 @@ class Dispatch(object):
|
|||||||
self.__cmd = cmd
|
self.__cmd = cmd
|
||||||
|
|
||||||
def __call__(self, *params):
|
def __call__(self, *params):
|
||||||
if len(params) > 0:
|
print 'dispatch: %s%r' % (self.__cmd.name, params)
|
||||||
kw = params[0]
|
(args, kw) = xmlrpc_unmarshal(*params)
|
||||||
else:
|
return self.__cmd(*args, **kw)
|
||||||
kw = {}
|
|
||||||
args = params[1:]
|
|
||||||
return cmd(*args, **kw)
|
|
||||||
|
|
||||||
|
|
||||||
server = SimpleXMLRPCServer(('localhost', 8080))
|
server = SimpleXMLRPCServer(('localhost', 8080), allow_none=True)
|
||||||
server.register_introspection_functions()
|
server.register_introspection_functions()
|
||||||
for cmd in api.Command():
|
for cmd in api.Command():
|
||||||
server.register_function(Dispatch(cmd), cmd.name)
|
server.register_function(Dispatch(cmd), cmd.name)
|
||||||
|
Loading…
Reference in New Issue
Block a user