r9793: Be more verbose, check for errors in upgrade script.
authorJelmer Vernooij <jelmer@samba.org>
Tue, 30 Aug 2005 12:27:53 +0000 (12:27 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:35:02 +0000 (13:35 -0500)
source/dsdb/samdb/ldb_modules/samba3sam.c
source/dsdb/samdb/ldb_modules/samldb.c
source/scripting/libjs/upgrade.js
source/setup/upgrade

index 444d7e8d12f6158a6a41dfc7b975c282ccae96c5..02c72818111b3ac45f8d6d65e1e0513075d2dc57 100644 (file)
@@ -2,24 +2,6 @@
    ldb database library - Samba3 SAM compatibility backend
 
    Copyright (C) Jelmer Vernooij 2005
-
-     ** NOTE! The following LGPL license applies to the ldb
-     ** library. This does NOT imply that all of Samba is released
-     ** under the LGPL
-   
-   This library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2 of the License, or (at your option) any later version.
-
-   This library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with this library; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */
 
 #include "includes.h"
@@ -67,6 +49,8 @@ static struct ldb_val convert_sid_rid(struct ldb_map_context *map, TALLOC_CTX *c
 {
        printf("Converting SID TO RID *\n");
 
+       /* FIXME */
+
        return ldb_val_dup(ctx, val);
 }
 
@@ -74,6 +58,8 @@ static struct ldb_val convert_rid_sid(struct ldb_map_context *map, TALLOC_CTX *c
 {
        printf("Converting RID TO SID *\n");
 
+       /* FIXME */
+
        return ldb_val_dup(ctx, val);
 }
 
@@ -81,6 +67,8 @@ static struct ldb_val convert_unix_id2name(struct ldb_map_context *map, TALLOC_C
 {
        printf("Converting UNIX ID to name\n");
 
+       /* FIXME */
+
        return ldb_val_dup(ctx, val);
 }
 
@@ -88,6 +76,8 @@ static struct ldb_val convert_unix_name2id(struct ldb_map_context *map, TALLOC_C
 {
        printf("Converting UNIX name to ID\n");
 
+       /* FIXME */
+
        return ldb_val_dup(ctx, val);
 }
 
@@ -177,10 +167,8 @@ const struct ldb_map_attribute samba3_attributes[] =
        /* uid -> unixName */
        {
                .local_name = "unixName",
-               .type = MAP_CONVERT,
+               .type = MAP_RENAME,
                .u.convert.remote_name = "uid",
-               .u.convert.convert_local = convert_unix_name2id,
-               .u.convert.convert_remote = convert_unix_id2name,
        },
 
        /* displayName -> name */
index 6b6c8bd55daf42b410934e8bae458914645294e9..3266c89e2d3cfacdee66b67b1ec23aedfcc423e7 100644 (file)
@@ -541,7 +541,8 @@ static int samldb_add_record(struct ldb_module *module, const struct ldb_message
 
        ldb_debug(module->ldb, LDB_DEBUG_TRACE, "samldb_add_record\n");
 
-       if (strcmp(msg->dn->components[0].name, "@SPECIAL") == 0) { /* do not manipulate our control entries */
+       
+       if (ldb_dn_is_special(msg->dn)) { /* do not manipulate our control entries */
                return ldb_next_add_record(module, msg);
        }
 
index c78afd6a913011dbfe859f03bfa7ab0113c72c1c..c6a65e01c008bf9cc0756d157824a7a8fb20d0b3 100644 (file)
@@ -34,8 +34,7 @@ function upgrade_registry(regdb,prefix)
 {
        assert(regdb != undefined);
        var prefix_up = strupper(prefix);
-
-       var ldif = "";
+       var ldif = new Array();
 
        for (var i in regdb.keys) {
                var rk = regdb.keys[i];
@@ -51,7 +50,7 @@ function upgrade_registry(regdb,prefix)
                var pts = split("/", rk.name);
 
                /* Convert key name to dn */
-               ldif = ldif + sprintf("
+               ldif[rk.name] = sprintf("
 dn: %s
 name: %s
 
@@ -60,7 +59,7 @@ name: %s
                for (var j in rk.values) {
                        var rv = rk.values[j];
 
-                       ldif = ldif + sprintf("
+                       ldif[rk.name + " (" + rv.name + ")"] = sprintf("
 dn: %s,value=%s
 value: %s
 type: %d
@@ -396,6 +395,7 @@ function save_smbconf(path,smbconf)
 
 function upgrade(subobj, samba3, message)
 {
+       var ret = 0;
        var samdb = ldb_init();
        var ok = samdb.connect("sam.ldb");
        assert(ok);
@@ -425,7 +425,10 @@ dn: @MAP=samba3sam
                message("... " + samba3.samaccounts[i].username);
                var ldif = upgrade_sam_account(samba3.samaccounts[i],subobj.BASEDN);
                ok = samdb.add(ldif);
-               if (!ok) { message("... error!"); }
+               if (!ok) { 
+                       message("... error: " + samdb.errstring()); 
+                       ret = ret + 1; 
+               }
                message("\n");
        }
 
@@ -434,7 +437,10 @@ dn: @MAP=samba3sam
                message("... " + samba3.groupmappings[i].nt_name);
                var ldif = upgrade_sam_group(samba3.groupmappings[i],subobj.BASEDN);
                ok = samdb.add(ldif);
-               if (!ok) { message("... error!"); }
+               if (!ok) { 
+                       message("... error: " + samdb.errstring()); 
+                       ret = ret + 1; 
+               }
                message("\n");
        }
 
@@ -446,18 +452,26 @@ dn: @MAP=samba3sam
                ok = regdb.connect(hives[i] + ".ldb");
                assert(ok);
                var ldif = upgrade_registry(samba3.registry, hives[i]);
-               ok = regdb.add(ldif);
-               assert(ok);
+               for (var j in ldif) {
+                       message("... ... " + j);
+                       ok = regdb.add(ldif[j]);
+                       if (!ok) { 
+                               message("... error: " + regdb.errstring()); 
+                               ret = ret + 1; 
+                       }
+                       message("\n");
+               }
        }
 
        message("Importing WINS data\n");
        var winsdb = ldb_init();
        ok = winsdb.connect("wins.ldb");
        assert(ok);
+       ldb_erase(winsdb);
 
        var ldif = upgrade_wins(samba3);
        ok = winsdb.add(ldif);
        assert(ok);
 
-       return ok;
+       return ret;
 }
index fed09f2a4e53f5b970dad7952aa7f1a9a7c5d8ac..22090b8cc673dcf2d42256e0d5ecf73d2067b31a 100755 (executable)
@@ -81,8 +81,10 @@ message("Provisioning\n");
 var subobj = upgrade_provision(samba3);
 provision(subobj, message, options.blank);
 
-ok = upgrade(subobj,samba3,message);
-assert(ok);
-
-message("All OK\n");
+var ret = upgrade(subobj,samba3,message);
+if (ret > 0) {
+       message("Failed to import %d entries\n", ret);
+} else {
+       message("All OK\n");
+}
 return 0;