summaryrefslogtreecommitdiffstats
path: root/source4/scripting/python/samba/provision.py
diff options
context:
space:
mode:
authorSreepathi Pai <sree314@gmail.com>2009-01-05 08:49:53 +1100
committerAndrew Bartlett <abartlet@samba.org>2009-02-25 10:40:41 +1100
commitf83e754ae61046fd441cbaf09a825378c3ab2ff2 (patch)
treec1c672e73a8a15c915b58253b219b88d7a927b9a /source4/scripting/python/samba/provision.py
parent503d15e8df9075ea9cf8b2d260487e68fc68f559 (diff)
downloadsamba-f83e754ae61046fd441cbaf09a825378c3ab2ff2.tar.gz
samba-f83e754ae61046fd441cbaf09a825378c3ab2ff2.tar.xz
samba-f83e754ae61046fd441cbaf09a825378c3ab2ff2.zip
Create schema.ldif at runtime directly from ad-schema files
Here's a first attempt at moving the minschema_wspp code into a library as Andrew requested. Since this script no longer has to generate CN=aggregate, I've simplified it quite a bit to a level where it almost does a line-by-line translation. This is faster and simpler, but it may not catch as many errors in the ad-schema files as the previous versions did. Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Diffstat (limited to 'source4/scripting/python/samba/provision.py')
-rw-r--r--source4/scripting/python/samba/provision.py30
1 files changed, 25 insertions, 5 deletions
diff --git a/source4/scripting/python/samba/provision.py b/source4/scripting/python/samba/provision.py
index c817bffbddd..4da8079e092 100644
--- a/source4/scripting/python/samba/provision.py
+++ b/source4/scripting/python/samba/provision.py
@@ -44,6 +44,7 @@ from samba.dcerpc import security
import urllib
from ldb import SCOPE_SUBTREE, SCOPE_ONELEVEL, SCOPE_BASE, LdbError, \
timestring, CHANGETYPE_MODIFY, CHANGETYPE_NONE
+from ms_schema import read_ms_schema
__docformat__ = "restructuredText"
@@ -854,9 +855,10 @@ def setup_samdb(path, setup_path, session_info, credentials, lp,
message("Setting up sam.ldb Samba4 schema")
setup_add_ldif(samdb, setup_path("schema_samba4.ldif"),
{"SCHEMADN": names.schemadn })
+
message("Setting up sam.ldb AD schema")
- setup_add_ldif(samdb, setup_path("schema.ldif"),
- {"SCHEMADN": names.schemadn})
+ data = get_schema_data(setup_path, {"SCHEMADN": names.schemadn})
+ samdb.add_ldif(data)
setup_add_ldif(samdb, setup_path("aggregate_schema.ldif"),
{"SCHEMADN": names.schemadn})
@@ -1268,8 +1270,9 @@ def provision_backend(setup_dir=None, message=None,
setup_add_ldif(schemadb, setup_path("schema_samba4.ldif"),
{"SCHEMADN": names.schemadn })
- setup_add_ldif(schemadb, setup_path("schema.ldif"),
- {"SCHEMADN": names.schemadn})
+
+ data = get_schema_data(setup_path, {"SCHEMADN": names.schemadn})
+ schemadb.add_ldif(data)
if ldap_backend_type == "fedora-ds":
if ldap_backend_port is not None:
@@ -1659,7 +1662,7 @@ def load_schema(setup_path, samdb, schemadn, netbiosname, configdn, sitename,
:param serverdn: DN of the server
:param servername: Host name of the server
"""
- schema_data = open(setup_path("schema.ldif"), 'r').read()
+ schema_data = get_schema_data(setup_path, {"SCHEMADN": schemadn})
schema_data += open(setup_path("schema_samba4.ldif"), 'r').read()
schema_data = substitute_var(schema_data, {"SCHEMADN": schemadn})
check_all_substituted(schema_data)
@@ -1679,3 +1682,20 @@ def load_schema(setup_path, samdb, schemadn, netbiosname, configdn, sitename,
check_all_substituted(head_data)
samdb.attach_schema_from_ldif(head_data, schema_data)
+
+def get_schema_data(setup_path, subst_vars = None):
+ """Get schema data from the AD schema files instead of schema.ldif.
+
+ :param setup_path: Setup path function.
+ :param subst_vars: Optional variables to substitute in the file.
+ """
+
+ # this data used to be read from schema.ldif
+
+ data = read_ms_schema(setup_path('ad-schema/MS-AD_Schema_Attributes_v20080618.txt'),
+ setup_path('ad-schema/MS-AD_Schema_Classes_v20080618.txt'))
+
+ if subst_vars is not None:
+ data = substitute_var(data, subst_vars)
+ check_all_substituted(data)
+ return data