s4:provision Just 'do the right thing' with empty smb.conf files
authorAndrew Bartlett <abartlet@samba.org>
Wed, 10 Feb 2010 02:56:24 +0000 (13:56 +1100)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 10 Feb 2010 05:18:21 +0000 (16:18 +1100)
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

source4/scripting/python/samba/provision.py
source4/setup/tests/blackbox_provision.sh

index 58c172fc0fdd62a33ae5e7d2df7dbe129310362a..b02d94d2270640e6e1a37b87b85980c661caa66c 100644 (file)
@@ -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)
index 22d062d6fdd4053d60830a4155a47b7245c5d87a..6b2c2278acc825c2b7f37bc8395b296356bfa5a4 100755 (executable)
@@ -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"
 }