dbcheck: only fix replPropertyMetaData if we included it in the search
authorAndrew Tridgell <tridge@samba.org>
Wed, 13 Jul 2011 00:12:48 +0000 (10:12 +1000)
committerAndrew Tridgell <tridge@samba.org>
Wed, 13 Jul 2011 10:51:05 +0000 (12:51 +0200)
if we didn't find a replPropertyMetaData attribute at all then don't
try fixing it

Pair-Programmed-With: Amitay Isaacs <amitay@gmail.com>

source4/scripting/python/samba/dbchecker.py

index a352c509fd7147bc90be4a0fb63202d96c0647e6..8de1d26775a603dd2fbbf44671f6362cbcf62dd0 100644 (file)
@@ -417,6 +417,7 @@ class dbcheck(object):
         error_count = 0
         list_attrs_from_md = []
         list_attrs_seen = []
+        got_repl_property_meta_data = False
 
         for attrname in obj:
             if attrname == 'dn':
@@ -424,6 +425,7 @@ class dbcheck(object):
 
             if str(attrname).lower() == 'replpropertymetadata':
                 list_attrs_from_md = self.process_metadata(obj[attrname])
+                got_repl_property_meta_data = True
                 continue
 
 
@@ -463,17 +465,18 @@ class dbcheck(object):
                     break
 
         show_dn = True
-        for att in list_attrs_seen:
-            if not att in list_attrs_from_md:
-                if show_dn:
-                    self.report("On object %s" % dn)
-                    show_dn = False
-                error_count += 1
-                self.report("ERROR: Attribute %s not present in replication metadata" % att)
-                if not self.confirm_all("Fix missing replPropertyMetaData element '%s'" % att, 'fix_all_metadata'):
-                    self.report("Not fixing missing replPropertyMetaData element '%s'" % att)
-                    continue
-                self.fix_metadata(dn, att)
+        if got_repl_property_meta_data:
+            for att in list_attrs_seen:
+                if not att in list_attrs_from_md:
+                    if show_dn:
+                        self.report("On object %s" % dn)
+                        show_dn = False
+                    error_count += 1
+                    self.report("ERROR: Attribute %s not present in replication metadata" % att)
+                    if not self.confirm_all("Fix missing replPropertyMetaData element '%s'" % att, 'fix_all_metadata'):
+                        self.report("Not fixing missing replPropertyMetaData element '%s'" % att)
+                        continue
+                    self.fix_metadata(dn, att)
 
         return error_count