[Freeipa-devel] Issues inizializing api

Alexander Bokovoy abokovoy at redhat.com
Tue Jun 30 12:03:01 UTC 2015



----- Original Message -----
> Dne 30.6.2015 v 12:29 Simo Sorce napsal(a):
> > 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.
> 
> I see. Unfortunately, this is a limitation that has not been removed yet
> - there is a lot of old code that references ipalib.api directly which
> needs to be fixed.
On the other hand, I need to reference ipalib.api from the code that would be running from both within the framework's plugin and outside it -- ipaserver/dcerpc.py has a number of objects and functions which need this.
Removing ability to use ipalib.api singleton would mean I need to create wrappers to pass its instance in.

-- 
/ Alexander Bokovoy




More information about the Freeipa-devel mailing list