s4:dsdb/pydsdb: pass down schema_dn to _dsdb_set_schema_from_ldif()
authorStefan Metzmacher <metze@samba.org>
Fri, 11 Nov 2011 15:34:48 +0000 (16:34 +0100)
committerStefan Metzmacher <metze@samba.org>
Tue, 15 Nov 2011 08:46:26 +0000 (09:46 +0100)
metze

source4/dsdb/pydsdb.c
source4/scripting/bin/upgradeprovision
source4/scripting/python/samba/schema.py

index 57e08cca90ee283454566252f5b1b7f1efe393ca..62b5c8db838f18c3bc29bcc335bcb545ec6bdeb9 100644 (file)
@@ -829,11 +829,11 @@ static PyObject *py_dsdb_set_am_rodc(PyObject *self, PyObject *args)
 static PyObject *py_dsdb_set_schema_from_ldif(PyObject *self, PyObject *args)
 {
        WERROR result;
-       char *pf, *df;
+       char *pf, *df, *dn;
        PyObject *py_ldb;
        struct ldb_context *ldb;
 
-       if (!PyArg_ParseTuple(args, "Oss", &py_ldb, &pf, &df))
+       if (!PyArg_ParseTuple(args, "Osss", &py_ldb, &pf, &df, &dn))
                return NULL;
 
        PyErr_LDB_OR_RAISE(py_ldb, ldb);
index 0a3df32854968b3d03565f4bb0519de6f62256ce..f4031206c9d2e6e70bce43bd2567161ba587d1f1 100755 (executable)
@@ -1101,7 +1101,8 @@ def reload_full_schema(samdb, names):
     :param names: List of key provision parameters
     """
 
-    current = samdb.search(expression="objectClass=*", base=str(names.schemadn),
+    schemadn = str(names.schemadn)
+    current = samdb.search(expression="objectClass=*", base=schemadn,
                                 scope=SCOPE_SUBTREE)
     schema_ldif = ""
     prefixmap_data = ""
@@ -1113,9 +1114,9 @@ def reload_full_schema(samdb, names):
     prefixmap_data = b64encode(prefixmap_data)
 
     # We don't actually add this ldif, just parse it
-    prefixmap_ldif = "dn: cn=schema\nprefixMap:: %s\n\n" % prefixmap_data
+    prefixmap_ldif = "dn: %s\nprefixMap:: %s\n\n" % (schemadn, prefixmap_data)
 
-    dsdb._dsdb_set_schema_from_ldif(samdb, prefixmap_ldif, schema_ldif)
+    dsdb._dsdb_set_schema_from_ldif(samdb, prefixmap_ldif, schema_ldif, schemadn)
 
 
 def update_partition(ref_samdb, samdb, basedn, names, schema, provisionUSNs, prereloadfunc):
index 216cb0ff277c2d77f15d36fb70c6ef64e0c60a63..9cbfa3a8e8071eab35e2d8ab61ff8724269b0657 100644 (file)
@@ -120,7 +120,7 @@ class Schema(object):
         self.set_from_ldif(prefixmap_ldif, self.schema_data, self.schemadn)
 
     def set_from_ldif(self, pf, df, dn):
-        dsdb._dsdb_set_schema_from_ldif(self.ldb, pf, df)
+        dsdb._dsdb_set_schema_from_ldif(self.ldb, pf, df, dn)
 
     def write_to_tmp_ldb(self, schemadb_path):
         self.ldb.connect(url=schemadb_path)