0001-synchronize-log-details-on-entries-changes.patch
src/ldaptools/synchronize.py | ||
---|---|---|
181 | 181 |
except ldap.NO_SUCH_OBJECT: |
182 | 182 |
return [] |
183 | 183 | |
184 |
def _log_changes(self, dn, old_entry, new_entry): |
|
185 |
''' Log changes on entry ''' |
|
186 |
new_attrs = to_dict_of_set(bytes2str_entry(old_entry)) |
|
187 |
old_attrs = to_dict_of_set(bytes2str_entry(new_entry)) |
|
188 | ||
189 |
for attr in new_attrs: |
|
190 |
if attr not in old_attrs: |
|
191 |
self.logger.debug( |
|
192 |
'%s: attribute %s added ("%s")', |
|
193 |
dn, attr, |
|
194 |
'", "'.join(new_attrs[attr]) |
|
195 |
) |
|
196 |
elif new_attrs[attr] != old_attrs[attr]: |
|
197 |
self.logger.debug( |
|
198 |
'%s: attribute %s modified ("%s" -> "%s")', |
|
199 |
dn, attr, |
|
200 |
'", "'.join(old_attrs[attr]), |
|
201 |
'", "'.join(new_attrs[attr]) |
|
202 |
) |
|
203 | ||
204 |
for attr in old_attrs: |
|
205 |
if attr not in new_attrs: |
|
206 |
self.logger.debug( |
|
207 |
'%s: attribute %s deleted ("%s")', |
|
208 |
dn, attr, |
|
209 |
'", "'.join(old_attrs[attr]) |
|
210 |
) |
|
211 | ||
184 | 212 |
def build_actions_for_entries(self, entries): |
185 | 213 |
seen_dn = self.seen_dn |
186 | 214 |
renamed_dn = self.renamed_dn |
... | ... | |
226 | 254 |
self.rename(new_out_dn, target_dn) |
227 | 255 |
renamed_dn[str2dn(new_out_dn)] = str2dn(target_dn) |
228 | 256 |
if to_dict_of_set(out_entry) != to_dict_of_set(bytes2str_entry(entry)): |
257 |
self._log_changes(target_dn, entry, out_entry) |
|
229 | 258 |
new_entry = {} |
230 | 259 |
for attribute in self.attributes: |
231 | 260 |
if attribute in to_dict_of_set(entry): |
232 |
- |