The branch, master has been updated
       via  a117fd6 s4-dsdb: Ensure we have indexing enabled during the 
provision
       via  ef87b4e s4-pydsdb: Provide control of if we should write index 
attributes when reloading a schema
      from  1a1f01e s4-dsdb: Change talloc parent

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit a117fd6d11aef5360a1af1fc6da542829da8b7b0
Author: Andrew Bartlett <abart...@samba.org>
Date:   Thu Aug 9 14:33:49 2012 +1000

    s4-dsdb: Ensure we have indexing enabled during the provision
    
    Because we set the schema before we connected the ldb to a file, the @INDEX 
records
    were not added until next startup.  This cost 100% more time in running 
provision on
    my laptop.
    
    Andrew Bartlett
    
    Autobuild-User(master): Andrew Bartlett <abart...@samba.org>
    Autobuild-Date(master): Thu Aug  9 08:20:36 CEST 2012 on sn-devel-104

commit ef87b4e4f10eb7d5974cb0e0861648d537153a00
Author: Andrew Bartlett <abart...@samba.org>
Date:   Thu Aug 9 14:23:12 2012 +1000

    s4-pydsdb: Provide control of if we should write index attributes when 
reloading a schema
    
    This allows us to carefully control the loading of the schema.
    
    Andrew Bartlett

-----------------------------------------------------------------------

Summary of changes:
 source4/dsdb/pydsdb.c                              |    6 ++++--
 .../scripting/python/samba/provision/__init__.py   |    7 ++++++-
 source4/scripting/python/samba/samdb.py            |    8 ++++----
 3 files changed, 14 insertions(+), 7 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/dsdb/pydsdb.c b/source4/dsdb/pydsdb.c
index 3558049..9023d69 100644
--- a/source4/dsdb/pydsdb.c
+++ b/source4/dsdb/pydsdb.c
@@ -873,7 +873,9 @@ static PyObject *py_dsdb_set_schema_from_ldb(PyObject 
*self, PyObject *args)
        struct ldb_context *from_ldb;
        struct dsdb_schema *schema;
        int ret;
-       if (!PyArg_ParseTuple(args, "OO", &py_ldb, &py_from_ldb))
+       char write_attributes = true;
+       if (!PyArg_ParseTuple(args, "OO|b",
+                             &py_ldb, &py_from_ldb, &write_attributes))
                return NULL;
 
        PyErr_LDB_OR_RAISE(py_ldb, ldb);
@@ -886,7 +888,7 @@ static PyObject *py_dsdb_set_schema_from_ldb(PyObject 
*self, PyObject *args)
                return NULL;
        }
 
-       ret = dsdb_reference_schema(ldb, schema, true);
+       ret = dsdb_reference_schema(ldb, schema, write_attributes);
        PyErr_LDB_ERROR_IS_ERR_RAISE(py_ldb_get_exception(), ret, ldb);
 
        Py_RETURN_NONE;
diff --git a/source4/scripting/python/samba/provision/__init__.py 
b/source4/scripting/python/samba/provision/__init__.py
index 192130e..94e857e 100644
--- a/source4/scripting/python/samba/provision/__init__.py
+++ b/source4/scripting/python/samba/provision/__init__.py
@@ -1121,7 +1121,7 @@ def setup_samdb(path, session_info, provision_backend, 
lp, names,
     logger.info("Pre-loading the Samba 4 and AD schema")
 
     # Load the schema from the one we computed earlier
-    samdb.set_schema(schema)
+    samdb.set_schema(schema, write_attributes=False)
 
     # Set the NTDS settings DN manually - in order to have it already around
     # before the provisioned tree exists and we connect
@@ -1131,6 +1131,11 @@ def setup_samdb(path, session_info, provision_backend, 
lp, names,
     # DB
     samdb.connect(path)
 
+    # But we have to give it one more kick to have it use the schema
+    # during provision - it needs, now that it is connected, to write
+    # the schema @INDEX records to the database.
+    samdb.set_schema(schema, write_attributes=True)
+
     return samdb
 
 
diff --git a/source4/scripting/python/samba/samdb.py 
b/source4/scripting/python/samba/samdb.py
index 7451b6c..3355e9a 100644
--- a/source4/scripting/python/samba/samdb.py
+++ b/source4/scripting/python/samba/samdb.py
@@ -608,11 +608,11 @@ accountExpires: %u
     def load_partition_usn(self, base_dn):
         return dsdb._dsdb_load_partition_usn(self, base_dn)
 
-    def set_schema(self, schema):
-        self.set_schema_from_ldb(schema.ldb)
+    def set_schema(self, schema, write_attributes=True):
+        self.set_schema_from_ldb(schema.ldb, write_attributes=write_attributes)
 
-    def set_schema_from_ldb(self, ldb_conn):
-        dsdb._dsdb_set_schema_from_ldb(self, ldb_conn)
+    def set_schema_from_ldb(self, ldb_conn, write_attributes=True):
+        dsdb._dsdb_set_schema_from_ldb(self, ldb_conn, write_attributes)
 
     def dsdb_DsReplicaAttribute(self, ldb, ldap_display_name, ldif_elements):
         '''convert a list of attribute values to a DRSUAPI 
DsReplicaAttribute'''


-- 
Samba Shared Repository

Reply via email to