[Freeipa-users] call implemented methods via xml-rpc

Rob Crittenden rcritten at redhat.com
Wed Apr 21 17:41:28 UTC 2010


ALAHYANE Rachid wrote:
> Ok so, my end goal is to use the ipa methods with xml-rpc as following,
> 
>  *  ipaServer : my ipa server, used to authenticate users and serves 
> response for xml-rpc calls from rpcServer
>  *  rpcServer : this host is my xml-rpc server, I installed freeipa 
> libraires on it, and an apache server with mod_python and mod_auth_kerb. 
> This hosts will be used as a client ipa, It is for these reasons that i 
> used `account.py` from within apache.
>  * myClient : this host is the one which will make the rpc calls to 
> rpcServer.
> 
> NB : 'account.py' is called by xmlrpchandler (it is my python handler) 
> when getUserInfos is called by myclient .

Can you set LogLevel debug on the rpcServer web server and see if you 
get a backtrace (or look in /var/log/httpd/error_log, you may already 
have one).

What is strange is that this code works fine standalone. Can you show us 
all the code in your xmlrpchandler?

BTW, your English is fine :-)

rob

> 
> 
> Example :
> myClient calls the remote.account.getUserInfos(u'admin'), rpcServer (in 
> mode client) intercepts this call and forwards it to the ipaServer. This 
> last one sends the response to rpcServer (via xml-rpc) and then 
> rpcServer responds to myClient.
> 
> 
> this is my configurations :
> 
> == On rpcServer ==
> --------- httpd conf ------------
> <Files "xmlrpc">
>   ## python conf                                                         
>                                                                         
>                                 
>   # ....
>   SetHandler python-program
>   PythonHandler xmlrpchandler
>   PythonDebug on
> </Files>
> ------------------------------------
> 
> the handler xmlrpchandler calls the following method when the client 
> requests for the remote method getUserInfos().
> 
> --------- account.py ------------
> def getUserInfos(user_name, env=None):
> 
>     from ipalib import api
> 
>     api.bootstrap_with_global_options(context='webservices')
>     api.finalize()
>     # mode Server is False. I am not on the server ipa
>     api.Backend.xmlclient.connect()
>     return api.Command.user_show(user_name)  
> ------------------------------------
> 
> 
> == On myClient ==
> When I call  this method from my client, I get this exception : 
> 
> ------------------------------------
> <Fault 2: "remote.account.getUserInfos: <type 
> 'exceptions.StandardError'>: API.bootstrap() already called">
> ------------------------------------
> 
> 
> I hope that is clearer now, despite my bad English ;)
> 
> 
> ---
> Meilleures salutations / Best Regards
> 
> Rachid ALAHYANE
> 
> 
> 




More information about the Freeipa-users mailing list