[Freeipa-devel] Issues inizializing api

Simo Sorce simo at redhat.com
Tue Jun 30 10:29:10 UTC 2015


On Tue, 2015-06-30 at 11:47 +0200, Jan Cholasta wrote:
> Dne 27.6.2015 v 00:21 Simo Sorce napsal(a):
> > If I try to create a custom api with something like:
> > myapi = create_api(mode=None)
> > myapi.finalize()
> >
> > I get back a stacktrace in the aci plugin.
> >
> > The aci plugin assumes the general 'api' has been already inizialized
> > and dereferences directly api.env.container_user and other stuff.
> >
> > Do I always have to api.finalize() before creating new api objects ?
> > Is there a way to load only the env (all I am really interested in)
> > without loading any plugin ?
> 
> The bootstrap method initializes env:
> 
> myapi = create_api(mode=None)
> myapi.bootstrap()
> 

That's not what I am saying.

What I am saying is that if you *do not* finalize "api", then when you
try to finalize any other myownapi thing you built via create_api() it
blows up, because (at least) the aci module references directly "api",
but "api" is not finalized yet and does not have the env attributes the
aci plugin tries to use.


Try this:

python
> from ipalib import api, create_api
> myapi = create_api()
> myapi.finalize()

This ^^^ breaks.

However if you do:
> from ipalib import api, create_api
> myapi = create_api()
> api.finalize()
> myapi.finalize()

This works, as "api" has been finalized.

Simo.

-- 
Simo Sorce * Red Hat, Inc * New York




More information about the Freeipa-devel mailing list