Best way to add an implementation specific schema model?

Michael Ströder michael at stroeder.com
Thu Nov 12 19:44:37 CET 2009


Chris Dukes wrote:
> I have to work with IBM Directory Server on a regular basis, and that
> includes some nasty schema analysis for moving some history local schema
> modifications to new versions of the product.
> I was able to use ldap.schema to simplify most of the nastiness.
> 
> However, IBM extends the schema with the additional attribute
> IBMAttributetypes, which describes chracteristics of how attributes will
> be stored in the backend.
> 
> IBM was polite enough to document the grammar for this new attribute and
> I'll be attempting to create an IBMAttributetype class to hold these.

I vaguely remember coming across these proprietary IBM schema attributes. I
wonder why they did not add their specific things to normal
AttributeTypeDescription like other directory vendors did. Oh, well...

Could you please refer to docs of the grammar?

> Now, should I just add the new class to ldap.schema.models and submit a
> patch once done?  Or should a long term approach of being able to
> indicate the addition of server specific extensions be contemplated?

I already thought about this when looking at vendor-specific extensions for
AttributeTypeDescription for Novell eDirectory and OpenLDAP.

Here are some remarks:

1. ldap.schema is somewhat experimental although quite robust in recent
deployments. The API is still undocumented mainly because I would be willing
to change it if someone comes up with good ideas how to improve it.

2. Lib/ldap/schema/models.py is very closely modeled after RFC 4512. If the
IBM grammar loosely follows what's in that RFC 4512 you have a good chance to
derive from these classes and extend them by setting class attribute
token_defaults according to what's needed.

3. There's ldap.schema.subentry.SCHEMA_CLASS_MAPPING which maps subschema
subentry attribute types to Python schema classes in ldap.schema.models. So
you have to somewhat register the IBM-specific attributes there.

Curious to hear about how to proceed with that.

Ciao, Michael.




More information about the python-ldap mailing list