[Freeipa-devel] IPA Python API

Rob Crittenden rcritten at redhat.com
Tue Jun 16 20:17:19 UTC 2015


Drew Erny wrote:
> On 06/16/2015 02:29 PM, Drew Erny wrote:
>> Hi, All,
>>
>> I'm using the IPA Python API to write the Community Portal. Most of
>> the documentation for using the IPA Python API is targeted a plugin
>> authors, and this isn't a plugin for (what I think are) good reasons.
>> I'm doing
>>
>>     # in the main program
>>     import api from ipalib
>>     api.bootstrap(context="client")
>>     api.finalize()
>>     api.Backend.rpcclient.connect()
>>
>>     # and then, inside of a separate class
>>     api.Command.stageuser_add(...)
>>
>> Which is how doc/examples/python-api.py shows it.
>>
>> However, calling api.Command.stageuser_add(...) causes
>>     AttributeError: No context.rpcclient_... in thread 'Thread-1'
>>
>> I think this is probably related to the fact that I haven't configured
>> my program to connect to any particular IPA server, because before the
>> program errors out, it prints:
>>     ipa: INFO: Forwarding 'stageuser_add' to json server 'None'
>>
>> If the problem is the lack of a target server, as I suspect, how would
>> I configure the program to connect to a particular IPA server? If this
>> isn't caused by that, what could the causes be?
>>
> I think this may be a bug. Even after doing ipa-client-install and
> following exactly the guide outlined in this email
> (https://www.redhat.com/archives/freeipa-users/2012-June/msg00334.html)
> I still get the same error. I've poked around in the code around this,
> though, and if it is a bug then I might need help because it's WAY deep
> in the FreeIPA internals.
>
> Also, forgot to mention, all of the ellipses (...) in the code in the
> first email are elided code, not literal ellipses.
>

I wonder if it's detecting that you are in-tree so trying to use 
~/.ipa/default.conf.

This code:

from ipalib import api
api.bootstrap(context="client")
api.finalize()
api.Backend.rpcclient.connect()

# and then, inside of a separate class
print api.Command.user_show(u'admin')

produces this:

$ python derny.py
ipa: INFO: trying https://ipadev.greyoak.com/ipa/session/json
ipa: INFO: Forwarding 'user_show' to json server 
'https://ipadev.greyoak.com/ipa/session/json'
{u'result': {u'dn': u'uid=admin,cn=users,cn=accounts,dc=greyoak,dc=com', 
u'has_keytab': True, u'uid': (u'admin',), u'loginshell': 
(u'/bin/bash',), u'uidnumber': (u'590000000',), u'gidnumber': 
(u'590000000',), u'memberof_group': (u'admins', u'trust admins'), 
u'has_password': True, u'sn': (u'Administrator',), u'homedirectory': 
(u'/home/admin',), u'nsaccountlock': False}, u'value': u'admin', 
u'summary': None}

rob




More information about the Freeipa-devel mailing list