I'd also like to see syncrepl consumer extended to support other content
synchronization methods than LDAPsync so that slapd(8) can be a slave
of most any LDAP server. For instance, it would be great if one could
setup a consumer to use simple LDAP searches (using time stamps to
minimize
traffic) to suck data of some non-LDAPsync provider)... or suck entries
out of a changelog... or whatever.
Assuming that entryCSN and entryUUID are supported by an LDAP server,
a possible approach to generic slapd sync consumer is:
(1) Search for (&(original filter)(entryCSN<clientCookie)) asking only
entryUUID and entryCSN attributes
(2) Delete replica entries not returned by (1)
(3) Search for (&(original
filter)(entryCSN>clientCookie)(entryCSN=<maxCSN(1))
asking replicated attributes + entryUUID + entryCSN,
where maxCSN(1) is the maximum entryCSN returned in step (1)
(4) Update clientCookie to maxCSN(1)
As a result, replica is synchronized to the point maxCSN(1)
This in fact emulates the present mode LDAPsync operation without LDAPsync
support in the provider side.