Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The change log consumer was written using Bill Thomson's "Shell Wrappers for Grouper".  If you are unfamiliar with the project, itleverages  scripting languages that compile to JVM bytecode to wrap the Grouper Shell.  For interactive sessions, this adds lots of extras found in modern REPLs like readline support and command history.  It also allows non-Java experts to make good use of the Grouper API from more familiar programming environments (e.g. Groovy, Clojure, Jython).  Lafayette's change log consumer runs as a daemon and tracks membership changes in Grouper.  It sends these changes to a custom provisioning process that batches the changes.  Batches are synced to the Lafayette LDAP DIT at 30 second intervals.

 

Architectural Update - July 2015

The message bus in the above diagram is no longer a future possibility-- it is now reality.  The change log consumer has been updated into separate parts.  One piece reads the change log from Grouper and writes the messages to an AMQP message exchange.  The messages are tagged with routing keys that are based on the provisioner type (at this point there is exactly one provisioner type-- LDAP).  The second piece is the provisioners that read messages from the queues and act on them.

Change Log Consumer

This piece is still implemented as a script using the GSH shell wrappers for Grouper (see above).  The main modification is that the messages are delivered to an AMQP exchange (RabbitMQ) rather than directly to the provisioner via custom protocol as above.

LDAP Provisioners

There are now 2 LDAP provisioners.  One provisions LDAP groups with user entires, and the other provisions LDAP users with Group entries.  Lafayette's LDAP DIT (OpenLDAP) is not configured to synchronize groups and users automatically, so parity is maintained via application code.  In this case, the same message is delivered to both provisioners so that LDAP accounts and groups have the same information.