So many questions come up when reading your reply. I also done some troubleshooting.
1. Not a question, but a observation: set debug=true, still not helpful
2. Still open question from my last post, do I need the "change type modify, add:
attributeTypes, add: objectClasses" inside my schema, is it doing something or should
I remove it again?
Side note: About your reply, I'm not a python dev and I absolutely don't know the
application so best preconditions to probably do every mistake possible.
Nevertheless, according to "instead of that, simply use
add_missing_object_class()", the one you are talking about is a class, my plugins are
not, different structure, so I can't say what's here important/ needed.
3. you mentioned my "usermod_precallback" function, what about the
"useradd_precallback" above, there is an append too, should this be refactored
as well with "add_missing_object_class"?
4. Speaking of "add_missing_object_class(ldap, u'ipacertmapobject', dn)"
what's the u'... before the objectClass doing, meaning?
5. And what about the statements after the first useradd and second usermod callbacks:
"user.user_add.register_pre_callback(useradd_precallback)" and
"user.user_mod.register_pre_callback(usermod_precallback)", do they stay, after
your proposed refactoring or do they have to be removed?
Another observation:
I've setup a VM where I installed freeIPA, so I don't have to deal with the
read-only container and images. I started to create the files one by one. So created
"postfixbook.js", "mailenabled.js" and "mailenabled.py",
strangely no error, I could create a user, I could click on the Mail enabled checkbox and
save successfully. Ldapsearch showed even that it was correctly set for that user. The
only issue so far, the checkbox in the UI is always unchecked, so entering a user with
checked mail enabled, when I check it, I can't save, FreeIpa sees that nothing has
changed, then when I uncheck, now I can save. So simply on entering the details view, this
checkbox element isn't set according to the stored value, it's simply always
unchecked. This was done with the "old" unguarded appends, so it seems, this is
working.
I then added the second file pairs "mailalias.js" and "mailalias.py".
Now I had this weird behaviour, couldn't create user anymore, couldn't save the
mail alias. I then discovered that "mailenabled.py" had
"entry["objectclass"].append("postfixbookmailaccount")"
whereas "mailalias.py" had
"entry["objectclass"].append("postfixbookMailaccount")" with
a capital "M". BTW the same typo was in "mailsieverulesource". So how
should I know when to use lowercase or camelCase?
For example in the pdf:
https://www.freeipa.org/images/5/5b/FreeIPA33-extending-freeipa.pdf
"objectclasses" is sometimes written lowercased and sometimes camelCased
"objectClasses". When I look into my schema, the objectClasses name is even
written as "PostfixBookMailAccount". In the schema one attributeType is written
as "mailEnabled", in the "mailenabled.js" and
"mailenabled.py" files everywhere is "mailenabled" lowercased. In your
(abbra freeIpa user status) repo the same with "inetuserstatus" in the .py and
.js files whereas "inetUserStatus" in the schema.
So I'm totally confused when to use what, it feels totally wrong, feels like a big
mess.