s4:param/provision: pass schema_dn to provision_get_schema()
authorStefan Metzmacher <metze@samba.org>
Mon, 14 Nov 2011 07:52:51 +0000 (08:52 +0100)
committerStefan Metzmacher <metze@samba.org>
Tue, 15 Nov 2011 08:46:27 +0000 (09:46 +0100)
metze

source4/dsdb/schema/tests/schema_syntax.c
source4/libnet/libnet_vampire.c
source4/param/provision.c
source4/param/provision.h

index fed7063577e2a192a7cbdc15dffe7a6a8de37107..9127d08120a12433c23e213d440acbb7cc48c685 100644 (file)
@@ -205,7 +205,7 @@ static bool torture_dsdb_syntax_tcase_setup(struct torture_context *tctx, void *
        priv = talloc_zero(tctx, struct torture_dsdb_syntax);
        torture_assert(tctx, priv, "No memory");
 
-       priv->ldb = provision_get_schema(priv, tctx->lp_ctx, NULL);
+       priv->ldb = provision_get_schema(priv, tctx->lp_ctx, NULL, NULL);
        torture_assert(tctx, priv->ldb, "Failed to load schema from disk");
 
        priv->schema = dsdb_get_schema(priv->ldb, NULL);
index a11c9cbfbe124b8a7a42c221754ff4a78881f594..7b4715b3ecd8e05179fbe29883c3a2cb2d384094 100644 (file)
@@ -308,7 +308,9 @@ static NTSTATUS libnet_vampire_cb_apply_schema(struct libnet_vampire_cb_state *s
        NT_STATUS_HAVE_NO_MEMORY(tmp_dns_name);
        s_dsa->other_info->dns_name = tmp_dns_name;
 
-       schema_ldb = provision_get_schema(s, s->lp_ctx, &s->prefixmap_blob);
+       schema_ldb = provision_get_schema(s, s->lp_ctx,
+                                         c->forest->schema_dn_str,
+                                         &s->prefixmap_blob);
        if (!schema_ldb) {
                DEBUG(0,("Failed to re-load from local provision using remote prefixMap. "
                         "Will continue with local prefixMap\n"));
index 55540d4fc440175bbcf5b9c849062444612868ad..766babead460fcce5bc50fc392f4c8968ff99953 100644 (file)
@@ -330,7 +330,9 @@ failure:
 }
 
 
-struct ldb_context *provision_get_schema(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx,
+struct ldb_context *provision_get_schema(TALLOC_CTX *mem_ctx,
+                                        struct loadparm_context *lp_ctx,
+                                        const char *schema_dn,
                                         DATA_BLOB *override_prefixmap)
 {
        PyObject *schema_mod, *schema_dict, *schema_fn, *py_result, *parameters;
@@ -362,6 +364,11 @@ struct ldb_context *provision_get_schema(TALLOC_CTX *mem_ctx, struct loadparm_co
        
        parameters = PyDict_New();
 
+       if (schema_dn) {
+               PyDict_SetItemString(parameters, "schemadn",
+                                    PyString_FromString(schema_dn));
+       }
+
        if (override_prefixmap) {
                PyDict_SetItemString(parameters, "override_prefixmap",
                                     PyString_FromStringAndSize((const char *)override_prefixmap->data,
index 36758b97070f8c2b44dc2c71be8014e016ff5195..fc0287831c9f5478d0b46708e7287c00ccb49c40 100644 (file)
@@ -63,7 +63,9 @@ NTSTATUS provision_store_self_join(TALLOC_CTX *mem_ctx, struct loadparm_context
                                   struct provision_store_self_join_settings *settings,
                                   const char **error_string);
 
-struct ldb_context *provision_get_schema(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx,
+struct ldb_context *provision_get_schema(TALLOC_CTX *mem_ctx,
+                                        struct loadparm_context *lp_ctx,
+                                        const char *schema_dn,
                                         DATA_BLOB *override_prefixmap);
 
 #endif /* _PROVISION_H_ */