Projet

Général

Profil

0001-synchronize-log-details-on-entries-changes.patch

Benjamin Renard, 14 juin 2022 11:34

Télécharger (2,23 ko)

Voir les différences:

Subject: [PATCH 1/3] synchronize: log details on entries changes

 src/ldaptools/synchronize.py | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)
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
-