svn commit: samba r26527 - in branches/SAMBA_4_0: .
source/scripting/python/samba
source/scripting/python/samba/tests source/selftest
jelmer at samba.org
jelmer at samba.org
Tue Dec 18 18:54:19 GMT 2007
Author: jelmer
Date: 2007-12-18 18:54:19 +0000 (Tue, 18 Dec 2007)
New Revision: 26527
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=26527
Log:
Start on tests for provision.
Added:
branches/SAMBA_4_0/source/scripting/python/samba/tests/provision.py
Modified:
branches/SAMBA_4_0/
branches/SAMBA_4_0/source/scripting/python/samba/__init__.py
branches/SAMBA_4_0/source/scripting/python/samba/provision.py
branches/SAMBA_4_0/source/scripting/python/samba/tests/__init__.py
branches/SAMBA_4_0/source/selftest/samba4_tests.sh
Changeset:
Property changes on: branches/SAMBA_4_0
___________________________________________________________________
Name: bzr:revision-info
...skipped...
Name: bzr:file-ids
...skipped...
Name: bzr:revision-id:v3-trunk0
...skipped...
Modified: branches/SAMBA_4_0/source/scripting/python/samba/__init__.py
===================================================================
--- branches/SAMBA_4_0/source/scripting/python/samba/__init__.py 2007-12-18 17:29:08 UTC (rev 26526)
+++ branches/SAMBA_4_0/source/scripting/python/samba/__init__.py 2007-12-18 18:54:19 UTC (rev 26527)
@@ -129,8 +129,6 @@
assert isinstance(value, str), "Value %r for %s is not a string" % (value, name)
text = text.replace("${%s}" % name, value)
- assert "${" not in text, text
-
return text
Modified: branches/SAMBA_4_0/source/scripting/python/samba/provision.py
===================================================================
--- branches/SAMBA_4_0/source/scripting/python/samba/provision.py 2007-12-18 17:29:08 UTC (rev 26526)
+++ branches/SAMBA_4_0/source/scripting/python/samba/provision.py 2007-12-18 18:54:19 UTC (rev 26527)
@@ -135,18 +135,6 @@
return gethostname().split(".")[0]
-def ldb_delete(ldb):
- """Delete a LDB file.
-
- This may be necessary if the ldb is in bad shape, possibly due to being
- built from an incompatible previous version of the code, so delete it
- completely.
- """
- print "Deleting %s\n" % ldb.filename
- os.unlink(ldb.filename)
- ldb.connect(ldb.filename)
-
-
def open_ldb(session_info, credentials, lp, dbname):
assert session_info is not None
try:
@@ -176,6 +164,13 @@
def setup_modify_ldif(ldb, setup_dir, ldif, substvars=None):
+ """Modify a ldb in the private dir.
+
+ :param ldb: LDB object.
+ :param setup_dir: Setup directory.
+ :param ldif: LDIF file path.
+ :param substvars: Optional dictionary with substitution variables.
+ """
src = os.path.join(setup_dir, ldif)
data = open(src, 'r').read()
@@ -199,19 +194,6 @@
ldb.transaction_commit()
-def setup_ldb_modify(ldb, setup_dir, ldif, substvars=None):
- """Modify a ldb in the private dir."""
- src = os.path.join(setup_dir, ldif)
-
- data = open(src, 'r').read()
- if substvars is not None:
- data = substitute_var(data, substvars)
- assert not "${" in data
-
- for (changetype, msg) in ldb.parse_ldif(data):
- ldb.modify(msg)
-
-
def setup_file(setup_dir, template, fname, substvars):
"""Setup a file in the private dir."""
f = fname
@@ -328,7 +310,7 @@
setup_samdb_rootdse(samdb, setup_dir, subobj)
message("Erasing data from partitions")
- ldb_erase_partitions(subobj, message, samdb, None)
+ ldb_erase_partitions(subobj.domaindn, message, samdb, None)
message("Setting up %s indexes" % paths.samdb)
setup_add_ldif(samdb, setup_dir, "provision_index.ldif")
@@ -453,8 +435,7 @@
smbconfsuffix = "member"
else:
assert "Invalid server role setting: %s" % lp.get("server role")
- setup_file(setup_dir, "provision.smb.conf.%s" % smbconfsuffix, paths.smbconf,
- None)
+ setup_file(setup_dir, "provision.smb.conf.%s" % smbconfsuffix, paths.smbconf)
lp.reload()
# only install a new shares config db if there is none
@@ -462,7 +443,7 @@
message("Setting up share.ldb")
share_ldb = Ldb(paths.shareconf, session_info=session_info,
credentials=credentials, lp=lp)
- setup_ldb(share_ldb, setup_dir, "share.ldif", None)
+ setup_ldb(share_ldb, setup_dir, "share.ldif")
message("Setting up %s" % paths.secrets)
secrets_ldb = setup_secretsdb(paths.secrets, setup_dir, session_info=session_info,
@@ -497,7 +478,7 @@
setup_samdb_rootdse(samdb, setup_dir, subobj)
message("Erasing data from partitions")
- ldb_erase_partitions(subobj, message, samdb, ldapbackend)
+ ldb_erase_partitions(subobj.domaindn, message, samdb, ldapbackend)
except:
samdb.transaction_cancel()
raise
@@ -527,7 +508,7 @@
else:
domainguid_mod = ""
- setup_ldb_modify(samdb, setup_dir, "provision_basedn_modify.ldif", {
+ setup_modify_ldif(samdb, setup_dir, "provision_basedn_modify.ldif", {
"RDN_DC": subobj.rdn_dc,
"LDAPTIME": timestring(int(time.time())),
"DOMAINSID": str(subobj.domainsid),
@@ -547,7 +528,7 @@
"EXTENSIBLEOBJECT": "# no objectClass: extensibleObject for local ldb",
})
message("Modifying configuration container")
- setup_ldb_modify(samdb, setup_dir, "provision_configuration_basedn_modify.ldif", {
+ setup_modify_ldif(samdb, setup_dir, "provision_configuration_basedn_modify.ldif", {
"CONFIGDN": subobj.configdn,
"SCHEMADN": subobj.schemadn,
})
@@ -559,7 +540,7 @@
"EXTENSIBLEOBJECT": "# no objectClass: extensibleObject for local ldb"
})
message("Modifying schema container")
- setup_ldb_modify(samdb, setup_dir, "provision_schema_basedn_modify.ldif", {
+ setup_modify_ldif(samdb, setup_dir, "provision_schema_basedn_modify.ldif", {
"SCHEMADN": subobj.schemadn,
"NETBIOSNAME": subobj.netbiosname,
"DEFAULTSITE": subobj.defaultsite,
@@ -593,13 +574,13 @@
setup_add_ldif(samdb, setup_dir, "provision_users_add.ldif", {
"DOMAINDN": subobj.domaindn})
message("Modifying users container")
- setup_ldb_modify(samdb, setup_dir, "provision_users_modify.ldif", {
+ setup_modify_ldif(samdb, setup_dir, "provision_users_modify.ldif", {
"DOMAINDN": subobj.domaindn})
message("Adding computers container (permitted to fail)")
setup_add_ldif(samdb, setup_dir, "provision_computers_add.ldif", {
"DOMAINDN": subobj.domaindn})
message("Modifying computers container")
- setup_ldb_modify(samdb, setup_dir, "provision_computers_modify.ldif", {
+ setup_modify_ldif(samdb, setup_dir, "provision_computers_modify.ldif", {
"DOMAINDN": subobj.domaindn})
message("Setting up sam.ldb data")
setup_add_ldif(samdb, setup_dir, "provision.ldif", {
@@ -807,7 +788,7 @@
samdb.attach_schema_from_ldif(head_data, schema_data)
-def join_domain(domain, netbios_name, join_type, creds, message):
+def join_domain(domain, netbios_name, join_type, creds):
ctx = NetContext(creds)
joindom = object()
joindom.domain = domain
@@ -824,8 +805,7 @@
access to our local database (might be remote ldap)
"""
ctx = NetContext(credentials)
- vampire_ctx = object()
- machine_creds = credentials_init()
+ machine_creds = Credentials()
machine_creds.set_domain(form.domain)
if not machine_creds.set_machine_account():
raise Exception("Failed to access domain join information!")
@@ -835,7 +815,7 @@
raise Exception("Migration of remote domain to Samba failed: %s " % vampire_ctx.error_string)
-def ldb_erase_partitions(subobj, message, ldb, ldapbackend):
+def ldb_erase_partitions(domaindn, message, ldb, ldapbackend):
"""Erase an ldb, removing all records."""
assert ldb is not None
res = ldb.search(Dn(ldb, ""), SCOPE_BASE, "(objectClass=*)",
@@ -848,7 +828,7 @@
previous_remaining = 1
current_remaining = 0
- if ldapbackend and (basedn == subobj.domaindn):
+ if ldapbackend and (basedn == domaindn):
# Only delete objects that were created by provision
anything = "(objectcategory=*)"
Modified: branches/SAMBA_4_0/source/scripting/python/samba/tests/__init__.py
===================================================================
--- branches/SAMBA_4_0/source/scripting/python/samba/tests/__init__.py 2007-12-18 17:29:08 UTC (rev 26526)
+++ branches/SAMBA_4_0/source/scripting/python/samba/tests/__init__.py 2007-12-18 18:54:19 UTC (rev 26527)
@@ -35,3 +35,20 @@
self.ldb = samba.Ldb(self.filename)
+class SubstituteVarTestCase(unittest.TestCase):
+ def test_empty(self):
+ self.assertEquals("", samba.substitute_var("", {}))
+
+ def test_nothing(self):
+ self.assertEquals("foo bar", samba.substitute_var("foo bar", {"bar": "bla"}))
+
+ def test_replace(self):
+ self.assertEquals("foo bla", samba.substitute_var("foo ${bar}", {"bar": "bla"}))
+
+ def test_broken(self):
+ self.assertEquals("foo ${bdkjfhsdkfh sdkfh ",
+ samba.substitute_var("foo ${bdkjfhsdkfh sdkfh ", {"bar": "bla"}))
+
+ def test_unknown_var(self):
+ self.assertEquals("foo ${bla} gsff",
+ samba.substitute_var("foo ${bla} gsff", {"bar": "bla"}))
Added: branches/SAMBA_4_0/source/scripting/python/samba/tests/provision.py
===================================================================
--- branches/SAMBA_4_0/source/scripting/python/samba/tests/provision.py 2007-12-18 17:29:08 UTC (rev 26526)
+++ branches/SAMBA_4_0/source/scripting/python/samba/tests/provision.py 2007-12-18 18:54:19 UTC (rev 26527)
@@ -0,0 +1,59 @@
+#!/usr/bin/python
+
+# Unix SMB/CIFS implementation.
+# Copyright (C) Jelmer Vernooij <jelmer at samba.org> 2007
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+import unittest
+import samba.provision
+
+class ProvisionTestCase(unittest.TestCase):
+ def test_setup_secretsdb(self):
+ raise NotImplementedError(self.test_setup_secretsdb)
+
+ def test_setup_templatesdb(self):
+ raise NotImplementedError(self.test_setup_templatesdb)
+
+ def test_setup_registry(self):
+ raise NotImplementedError(self.test_setup_registry)
+
+ def test_setup_samdb_rootdse(self):
+ raise NotImplementedError(self.test_setup_samdb_rootdse)
+
+ def test_setup_samdb_partitions(self):
+ raise NotImplementedError(self.test_setup_samdb_partitions)
+
+ def test_create_phpldapadmin_config(self):
+ raise NotImplementedError(self.test_create_phpldapadmin_config)
+
+ def test_provision_dns(self):
+ raise NotImplementedError(self.test_provision_dns)
+
+ def test_provision_ldapbase(self):
+ raise NotImplementedError(self.test_provision_ldapbase)
+
+ def test_provision_guess(self):
+ raise NotImplementedError(self.test_provision_guess)
+
+ def test_join_domain(self):
+ raise NotImplementedError(self.test_join_domain)
+
+ def test_vampire(self):
+ raise NotImplementedError(self.test_vampire)
+
+ def test_erase_partitions(self):
+ raise NotImplementedError(self.test_erase_partitions)
+
Modified: branches/SAMBA_4_0/source/selftest/samba4_tests.sh
===================================================================
--- branches/SAMBA_4_0/source/selftest/samba4_tests.sh 2007-12-18 17:29:08 UTC (rev 26526)
+++ branches/SAMBA_4_0/source/selftest/samba4_tests.sh 2007-12-18 18:54:19 UTC (rev 26527)
@@ -295,4 +295,5 @@
plantest "security.python" none PYTHONPATH=bin/python:scripting/python:libcli/security/tests/ scripting/bin/subunitrun bindings
plantest "param.python" none PYTHONPATH=bin/python:scripting/python:param/tests scripting/bin/subunitrun bindings
plantest "upgrade.python" none PYTHONPATH=bin/python:scripting/python scripting/bin/subunitrun samba.tests.upgrade
+ plantest "samba.python" none PYTHONPATH=bin/python:scripting/python scripting/bin/subunitrun samba.tests
fi
More information about the samba-cvs
mailing list