summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2010-02-10 13:56:24 +1100
committerAndrew Bartlett <abartlet@samba.org>2010-02-10 16:18:21 +1100
commitf299fe565ae5dba76ffc708da9a47405d61b0af9 (patch)
treeefb288c761ffa7efc1f2103197b54f3133977375
parentf8778ba8f4c234648230dba0249cd189fcd0d4d1 (diff)
downloadsamba-f299fe565ae5dba76ffc708da9a47405d61b0af9.tar.gz
samba-f299fe565ae5dba76ffc708da9a47405d61b0af9.tar.bz2
samba-f299fe565ae5dba76ffc708da9a47405d61b0af9.zip
s4:provision Just 'do the right thing' with empty smb.conf files
For some reason, JHT keeps on creating an empty smb.conf file, expecting it to be the same as a non-existant one. It is easier to just realise what he meant. Andrew Bartlett
-rw-r--r--source4/scripting/python/samba/provision.py12
-rwxr-xr-xsource4/setup/tests/blackbox_provision.sh16
2 files changed, 26 insertions, 2 deletions
diff --git a/source4/scripting/python/samba/provision.py b/source4/scripting/python/samba/provision.py
index 58c172fc0f..b02d94d227 100644
--- a/source4/scripting/python/samba/provision.py
+++ b/source4/scripting/python/samba/provision.py
@@ -1172,9 +1172,17 @@ def provision(setup_dir, message, session_info,
smbconf = param.default_path()
# only install a new smb.conf if there isn't one there already
- if not os.path.exists(smbconf):
+ if os.path.exists(smbconf):
+ # JHT calls me up often enough with weird errors, because he
+ # uses an empty smb.conf. --abartlet
+ data = open(smbconf, 'r').read()
+ data = data.lstrip()
+ if data is None or data == "":
+ make_smbconf(smbconf, setup_path, hostname, domain, realm, serverrole,
+ targetdir, sid_generator, useeadb)
+ else:
make_smbconf(smbconf, setup_path, hostname, domain, realm, serverrole,
- targetdir, sid_generator,useeadb)
+ targetdir, sid_generator, useeadb)
lp = param.LoadParm()
lp.load(smbconf)
diff --git a/source4/setup/tests/blackbox_provision.sh b/source4/setup/tests/blackbox_provision.sh
index 22d062d6fd..6b2c2278ac 100755
--- a/source4/setup/tests/blackbox_provision.sh
+++ b/source4/setup/tests/blackbox_provision.sh
@@ -12,15 +12,31 @@ shift 1
. `dirname $0`/../../../testprogs/blackbox/subunit.sh
+#Prepare an empty smb.conf to ensure it is overwritten
+rm -rf $PREFIX/simple-default
+mkdir -p $PREFIX/simple-default/etc
+touch $PREFIX/simple-default/etc/smb.conf
testit "simple-default" $PYTHON ./setup/provision --domain=FOO --realm=foo.example.com --targetdir=$PREFIX/simple-default
+#And try with just whitespace
+rm -rf $PREFIX/simple-dc
+mkdir -p $PREFIX/simple-dc/etc
+echo " " > $PREFIX/simple-dc/etc/smb.conf
testit "simple-dc" $PYTHON ./setup/provision --server-role="dc" --domain=FOO --realm=foo.example.com --domain-sid=S-1-5-21-4177067393-1453636373-93818738 --targetdir=$PREFIX/simple-dc
+#The rest of these tests are with no smb.conf file present
+
+rm -rf $PREFIX/simple-dc
testit "simple-dc-guids" $PYTHON ./setup/provision --server-role="dc" --domain=FOO --realm=foo.example.com --domain-sid=S-1-5-21-4177067393-1453636373-93818738 --domain-guid=6054d36d-2bfd-44f1-a9cd-32cfbb06480b --ntds-guid=b838f255-c8aa-4fe8-9402-b7d61ca3bd1b --invocationid=6d4cff9a-2bbf-4b4c-98a2-36242ddb0bd6 --targetdir=$PREFIX/simple-dc
+rm -rf $PREFIX/simple-member
testit "simple-member" $PYTHON ./setup/provision --server-role="member" --domain=FOO --realm=foo.example.com --targetdir=$PREFIX/simple-member
+rm -rf $PREFIX/simple-standalone
testit "simple-standalone" $PYTHON ./setup/provision --server-role="standalone" --domain=FOO --realm=foo.example.com --targetdir=$PREFIX/simple-standalone
+rm -rf $PREFIX/blank-dc
testit "blank-dc" $PYTHON ./setup/provision --server-role="dc" --domain=FOO --realm=foo.example.com --domain-sid=S-1-5-21-4177067393-1453636373-93818738 --targetdir=$PREFIX/blank-dc --blank
+rm -rf $PREFIX/partitions-only-dc
testit "partitions-only-dc" $PYTHON ./setup/provision --server-role="dc" --domain=FOO --realm=foo.example.com --domain-sid=S-1-5-21-4177067393-1453636373-93818738 --targetdir=$PREFIX/partitions-only-dc --partitions-only
reprovision() {
+ rm -rf $PREFIX/reprovision
$PYTHON ./setup/provision --domain=FOO --realm=foo.example.com --targetdir="$PREFIX/reprovision"
$PYTHON ./setup/provision --domain=FOO --realm=foo.example.com --targetdir="$PREFIX/reprovision"
}