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