r19258: Don't delete the contents of the partitions twice, and in particular
authorAndrew Bartlett <abartlet@samba.org>
Fri, 13 Oct 2006 01:35:52 +0000 (01:35 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 19:20:58 +0000 (14:20 -0500)
don't delete their contents until we have specified the new partition
locations.

However, preserve the important part of tridge's change, that is to
ensure that no database index is present when the mass delete occours.
In my testing, it is best to leave the index until the provision is
compleated.

Andrew Bartlett
(This used to be commit 962219df7dc53ce6f6889f4b71ee19850c7ff7b5)

source4/scripting/libjs/provision.js
source4/setup/provision_index.ldif [new file with mode: 0644]
source4/setup/provision_init.ldif

index e020cc41bde861e85b01e9973c50b0a02a378f42..2dc6bb522b53b4442eba46b8c23610f0c9ba52d5 100644 (file)
@@ -157,25 +157,8 @@ function ldb_delete(ldb)
 */
 function ldb_erase(ldb)
 {
 */
 function ldb_erase(ldb)
 {
-       var attrs = new Array("namingContexts");
        var res;
 
        var res;
 
-       /* delete within each naming context - this copes with existing partitions */
-       res = ldb.search("objectClass=*", "", ldb.SCOPE_BASE, attrs);
-       if (typeof(res) != "undefined") {
-               if (res.length > 0) {
-                       var names = res[0].namingContexts;
-                       for (i=0;i<names.length;i++) {
-                               attrs = new Array("dn");
-                               res = ldb.search("(objectclass=*)", names[i], ldb.SCOPE_SUBTREE, attrs);
-                               var j;
-                               for (j=0;j<res.length;j++) {
-                                       ldb.del(res[j].dn);
-                               }
-                       }
-               }
-       }
-
        /* delete the specials */
        ldb.del("@INDEXLIST");
        ldb.del("@ATTRIBUTES");
        /* delete the specials */
        ldb.del("@INDEXLIST");
        ldb.del("@ATTRIBUTES");
@@ -528,6 +511,9 @@ function provision(subobj, message, blank, paths, session_info, credentials)
        setup_add_ldif("provision.ldif", info, samdb, false);
 
        if (blank != false) {
        setup_add_ldif("provision.ldif", info, samdb, false);
 
        if (blank != false) {
+               message("Setting up sam.ldb index\n");
+               setup_add_ldif("provision_index.ldif", info, samdb, false);
+
                var commit_ok = samdb.transaction_commit();
                if (!commit_ok) {
                        info.message("ldb commit failed: " + samdb.errstring() + "\n");
                var commit_ok = samdb.transaction_commit();
                if (!commit_ok) {
                        info.message("ldb commit failed: " + samdb.errstring() + "\n");
@@ -543,6 +529,9 @@ function provision(subobj, message, blank, paths, session_info, credentials)
                return false;
        }
 
                return false;
        }
 
+       message("Setting up sam.ldb index\n");
+       setup_add_ldif("provision_index.ldif", info, samdb, false);
+
        var commit_ok = samdb.transaction_commit();
        if (!commit_ok) {
                info.message("samdb commit failed: " + samdb.errstring() + "\n");
        var commit_ok = samdb.transaction_commit();
        if (!commit_ok) {
                info.message("samdb commit failed: " + samdb.errstring() + "\n");
diff --git a/source4/setup/provision_index.ldif b/source4/setup/provision_index.ldif
new file mode 100644 (file)
index 0000000..2dd2e7d
--- /dev/null
@@ -0,0 +1,16 @@
+dn: @INDEXLIST
+@IDXATTR: name
+@IDXATTR: sAMAccountName
+@IDXATTR: objectSid
+@IDXATTR: objectCategory
+@IDXATTR: member
+@IDXATTR: uidNumber
+@IDXATTR: gidNumber
+@IDXATTR: unixName
+@IDXATTR: privilege
+@IDXATTR: nCName
+@IDXATTR: lDAPDisplayName
+@IDXATTR: subClassOf
+@IDXATTR: dnsRoot
+@IDXATTR: nETBIOSName
+
index 8f4258ae1b0c2edf8ca3126125c3399606ab41bd..a3eb60ab94c7c391700dd04c3b726391e39533b2 100644 (file)
@@ -1,19 +1,3 @@
-dn: @INDEXLIST
-@IDXATTR: name
-@IDXATTR: sAMAccountName
-@IDXATTR: objectSid
-@IDXATTR: objectCategory
-@IDXATTR: member
-@IDXATTR: uidNumber
-@IDXATTR: gidNumber
-@IDXATTR: unixName
-@IDXATTR: privilege
-@IDXATTR: nCName
-@IDXATTR: lDAPDisplayName
-@IDXATTR: subClassOf
-@IDXATTR: dnsRoot
-@IDXATTR: nETBIOSName
-
 dn: @ATTRIBUTES
 userPrincipalName: CASE_INSENSITIVE
 servicePrincipalName: CASE_INSENSITIVE
 dn: @ATTRIBUTES
 userPrincipalName: CASE_INSENSITIVE
 servicePrincipalName: CASE_INSENSITIVE