s4 upgradeprovision: add more attrbutes the ignore list
authorMatthieu Patou <mat@matws.net>
Thu, 12 Aug 2010 13:28:28 +0000 (17:28 +0400)
committerMatthieu Patou <mat@matws.net>
Thu, 19 Aug 2010 11:59:05 +0000 (15:59 +0400)
Also format in a pretty way the int64 ranges

source4/scripting/bin/upgradeprovision
source4/scripting/python/samba/upgradehelpers.py

index fe339e00b7c86cc2d32248fa1a0570d113e36d7d..857b0b3a510a2438010a06ed7d4f702e132f3347 100755 (executable)
@@ -60,6 +60,7 @@ from samba.upgradehelpers import (dn_sort, get_paths, newprovision,
                                  delta_update_basesamdb, update_policyids,
                                  update_machine_account_password,
                                  search_constructed_attrs_stored,
+                                 int64range2str,
                                  increment_calculated_keyversion_number)
 
 replace=2**FLAG_MOD_REPLACE
@@ -107,6 +108,7 @@ hashOverwrittenAtt = {  "prefixMap": replace, "systemMayContain": replace,
                         "wellKnownObjects":replace, "privilege":never,
                         "defaultSecurityDescriptor": replace,
                         "rIDAvailablePool": never,
+                        "rIDNextRID": add, "rIDUsedPool": never,
                         "defaultSecurityDescriptor": replace + add,
                         "isMemberOfPartialAttributeSet": delete,
                         "attributeDisplayNames": replace + add}
@@ -411,7 +413,13 @@ def dump_denied_change(dn, att, flagtxt, current, reference):
 
     message(CHANGE, "dn= " + str(dn)+" " + att+" with flag " + flagtxt
                 +" is not allowed to be changed/removed, I discard this change")
-    if att != "objectSid" :
+    if att == "objectSid" :
+        message(CHANGE, "old : %s" % ndr_unpack(security.dom_sid, current[0]))
+        message(CHANGE, "new : %s" % ndr_unpack(security.dom_sid, reference[0]))
+    elif att == "rIDPreviousAllocationPool" or att == "rIDAllocationPool":
+        message(CHANGE, "old : %s" % int64range2str(current[0]))
+        message(CHANGE, "new : %s" % int64range2str(reference[0]))
+    else:
         i = 0
         for e in range(0, len(current)):
             message(CHANGE, "old %d : %s" % (i, str(current[e])))
@@ -421,10 +429,6 @@ def dump_denied_change(dn, att, flagtxt, current, reference):
             for e in range(0, len(reference)):
                 message(CHANGE, "new %d : %s" % (i, str(reference[e])))
                 i+=1
-    else:
-        message(CHANGE, "old : %s" % ndr_unpack(security.dom_sid, current[0]))
-        message(CHANGE, "new : %s" % ndr_unpack(security.dom_sid, reference[0]))
-
 
 def handle_special_add(samdb, dn, names):
     """Handle special operation (like remove) on some object needed during
index a588a84346fc541f60839fcf7c7ae7246d0cf9fc..7b09d4a4413159ef7360664ccf469d7253badbd0 100755 (executable)
@@ -886,3 +886,14 @@ def search_constructed_attrs_stored(samdb, rootdn, attrs):
                     hashAtt[att][str(ent.dn).lower()] = str(ent[att])
 
     return hashAtt
+
+def int64range2str(value):
+    """Display the int64 range stored in value as xxx-yyy
+
+    :param value: The int64 range
+    :return: A string of the representation of the range
+    """
+
+    lvalue = long(value)
+    str = "%d-%d" % (lvalue&0xFFFFFFFF, lvalue>>32)
+    return str