[Freeipa-devel] [PATCH] Add interface for baseldap plugins to register additional callbacks.

John Dennis jdennis at redhat.com
Thu Mar 4 16:39:16 UTC 2010


On 03/04/2010 10:15 AM, Pavel Zůna wrote:
> This is somewhat of a tech-preview patch. It works, but the whole
> concept might need some more work/thinking done.
>
> It adds another way to extend plugins without resorting to the
> versioning system.
>
> Until now, every baseldap command had two callbacks. The pre-callback
> called before data was passed to python-ldap and the post-callback
> called after.
>
> This patch introduces class methods, that enable the registration of new
> pre/post callbacks. It supports top level functions as well, so you
> don't have to touch the original class at all.
>
> It works likes this:
>
> from ipalib.plugins.user import user_show
>
> def test_callback(inst, ldap, dn, attrs_list, *keys, **options):
> inst.log.info('hello callback world!')
> attrs_list = ['uid'] # only retrieve the user name
> return dn
>
> user_show.register_pre_callback(test_callback)
>
> The original callbacks defined in the class are always called first.

I don't see any problem with this approach, plus it seems advantageous 
to have a list of callbacks as opposed to a single callback. FWIW this 
is how some of the frameworks I'm familiar with (e.g. GTK2) work.

-- 
John Dennis <jdennis at redhat.com>

Looking to carve out IT costs?
www.redhat.com/carveoutcosts/




More information about the Freeipa-devel mailing list