[Freeipa-users] Extending attributes

Petr Vobornik pvoborni at redhat.com
Fri Apr 8 07:50:34 UTC 2016


On 04/07/2016 11:57 PM, Steve Huston wrote:
> Finding very little on the Interwebs about this, I wonder if I'm the
> only person who's trying to add things to FreeIPA and doing UI and
> backend plugins!
> 
> The back story, I'm coming from an OpenLDAP deployment which I need to
> update for various reasons and decided to look at options.   FreeIPA
> looks great, and I'm using 4.2.0-15 from the RHEL7 distribution
> (technically Springdale Linux, our in-house rebuild).  Since one of
> the sticky parts of management of hosts and users for myself and
> others has been all the LDAP details (which I and one other use
> ldapmodify for, but some of the admin assistants who create accounts
> use a custom-made PHP that makes it slightly prettier but harder to
> maintain), I'm trying to get everything into a pretty interface that
> anyone can use and means a single window for making these changes.
> 
> I'm ditching our custom LDAP schema since the attributes can be
> handled by other included schema elements, though I am adding the
> Puppet schema which was easily imported and I even wrote the glue to
> make that work.  One of the things I wanted to add is to a host
> record, the 'owner' field, which should be the owner of a machine -
> this gets pulled into puppet for some fanciness down the road, as well
> as used for some accounting information.
> 
> What I have currently works, but it's not how I originally wrote it:
> http://www.astro.princeton.edu/~huston/astrocustom/
> 
> The way I wanted it, the javascript part (which worked fine) pushed
> the name field, with type 'entity_select', other_entity: 'user',
> other_field: 'uid'.  This gave a nice drop-down of all the users, and
> submitted the UID to the back-end.  I quickly realized when I tried to
> submit a host that it was barfing because LDAP wants a DN, so I looked
> at how 'manager' is done for users and tried to replicate it.  The
> Python to do that is shown in astrocustom-new.py.html in the above
> directory.  I know that didn't work, but I forget which version of
> that not working that is - at some point I stopped checking them into
> version control and bashed on the server until I gave up.
> 
> Can someone help me figure out what I'm doing here?  :D  Part of it
> I'm sure is my limited Python knowledge, and the fact that I'm
> applying concepts I learned long ago from programming languages
> classes to a language I don't really use based on seeing how some
> parts work and trying to make them work elsewhere.  Alternatively, if
> there's more than just the FreeIPA33-extending-freeipa.pdf
> presentation to go on for making plugins (and
> pvoborni.fedorapeople.org/plugins for UI work) I'd love to have a
> pointer to it to read more.  There's some other UI things I'd tried
> doing before which failed (such as removing some of the items from the
> stageuser details page, which the people who will create stageusers
> won't need to see and shouldn't be messing with) but that's another
> thread, which might not need to be opened if there's another trove of
> information on this that I just haven't found yet.
> 
> Thanks for reading this far.  Cookies are on the way.
> 

I didn't examine it thoroughly. But basically: IPA management framework
does "cn" -> "dn" conversion in pre_callback (host-add, host-mod). But
then it needs to do the reverse on post_callback (host-add, host-mod,
host-show, maybe also host-find)

Given that manager field was your example, you can also look at
"convert_manager" method which does the "dn" -> "cn" conversion. And how
it is called in post_callback/how are post_callbacks defined.

Apart from that, I don't see what is wrong. How does it behave?
-- 
Petr Vobornik




More information about the Freeipa-users mailing list