s4:provision Allow provision-backend to not run slapd for 'make test'
authorAndrew Bartlett <abartlet@samba.org>
Wed, 12 Aug 2009 01:09:50 +0000 (11:09 +1000)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 12 Aug 2009 01:09:50 +0000 (11:09 +1000)
As the version of OpenLDAP required for Samba4 is fairly new, we don't
want to make it a requirement before this python code is run in 'make
test'.

As such, skip over the actual starting of slapd, but check the rest
runs alright (which still validates syntax and other modules).

Andrew Bartlett

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

index 634904441a34f88e7912ed7bed78549f9b7fbc22..39c3fffce3f02b41db8643d386fdd5734024bcd6 100644 (file)
@@ -1275,7 +1275,7 @@ def provision_backend(setup_dir=None, message=None,
                       domain=None, hostname=None, adminpass=None, root=None, serverrole=None, 
                       ldap_backend_type=None, ldap_backend_port=None,
                       ol_mmr_urls=None, ol_olc=None, 
-                      ol_slapd=None, nosync=False):
+                      ol_slapd=None, nosync=False, testing_mode=False):
 
     def setup_path(file):
         return os.path.join(setup_dir, file)
@@ -1303,7 +1303,7 @@ def provision_backend(setup_dir=None, message=None,
                      targetdir)
 
     # if openldap-backend was chosen, check if path to slapd was given and exists
-    if ldap_backend_type == "openldap" and ol_slapd is None:
+    if ldap_backend_type == "openldap" and ol_slapd is None and not testing_mode:
         sys.exit("Warning: OpenLDAP-Backend must be setup with path to slapd (OpenLDAP-Daemon), e.g. --ol-slapd=\"/usr/local/libexec/slapd\"!")
     if ldap_backend_type == "openldap" and ol_slapd is not None:
        if not os.path.exists(ol_slapd):
@@ -1659,26 +1659,27 @@ def provision_backend(setup_dir=None, message=None,
         print e
         message("Ok. - No other slapd-Instance listening on: " + ldapi_uri + ". Starting slapd now for final provision.")
 
-        p = subprocess.Popen(slapdcommand_prov, shell=True)
-
-        # after startup: store slapd-provision-pid also in a separate file. 
-        # this is needed as long as provision/provision-backend are not fully merged,
-        # to compare pids before shutting down
-
-        # wait for pidfile to be created
-        time.sleep(3)
-        if os.path.exists(paths.slapdpid):
-           f = open(paths.slapdpid, "r")
-           p = f.read()
-           f.close()
-           f = open(paths.ldapdir +"/slapd_provision_pid", "w")
-           f.write(str(p) + "\n")
-           f.close()
-           message("Started slapd for final provisioning with PID: "+ str(p))
-        else:
-           message("slapd-PID File could not be found. Sorry")
-        
-        # done slapd checking + start 
+        if not testing_mode:
+            p = subprocess.Popen(slapdcommand_prov, shell=True)
+            
+            # after startup: store slapd-provision-pid also in a separate file. 
+            # this is needed as long as provision/provision-backend are not fully merged,
+            # to compare pids before shutting down
+            
+            # wait for pidfile to be created
+            time.sleep(3)
+            if os.path.exists(paths.slapdpid):
+                f = open(paths.slapdpid, "r")
+                p = f.read()
+                f.close()
+                f = open(paths.ldapdir +"/slapd_provision_pid", "w")
+                f.write(str(p) + "\n")
+                f.close()
+                message("Started slapd for final provisioning with PID: "+ str(p))
+            else:
+                message("slapd-PID File could not be found. Sorry")
+                
+            # done slapd checking + start 
 
 
           
index fb7f56b8819b1c89d6d4626dee53a35aafb6009f..3da360447fbab37f382fd5f56fad5bcea21af6e5 100755 (executable)
@@ -73,6 +73,9 @@ parser.add_option("--ol-olc", type="choice", metavar="OPENLDAP-OLC",
                choices=["yes", "no"])
 parser.add_option("--ol-slapd", type="string", metavar="SLAPD-PATH", 
                help="Path to OpenLDAP-Daemon (slapd) [e.g.:'/usr/local/libexec/slapd']. Required for Setup with OpenLDAP-Backend. OpenLDAP Version >= 2.4.17 should be used.") 
+parser.add_option("--testing-mode", type="choice", metavar="TESTING-MODE", 
+               help="Do not select this option, except as part of 'make test' to verify behaviour without a slapd on the system",
+               choices=["yes", "no"])
 
 opts = parser.parse_args()[0]
 
@@ -112,4 +115,5 @@ provision_backend(setup_dir=setup_dir, message=message, smbconf=smbconf, targetd
                  ol_mmr_urls=opts.ol_mmr_urls,
                  ol_olc=opts.ol_olc,
                  ol_slapd=opts.ol_slapd,
-                 nosync=opts.nosync)
+                 nosync=opts.nosync,
+                 testing_mode=opts.testing_mode)
index 04f22dbf1d973a9eed34c173182822061bb22023..e1331d62eb9090c21b459ba920e9cc24e37beeb3 100755 (executable)
@@ -12,13 +12,13 @@ shift 1
 
 . `dirname $0`/../../../testprogs/blackbox/subunit.sh
 
-testit "openldap-backend" $PYTHON ./setup/provision-backend --domain=FOO --realm=foo.example.com --host-name=samba --ldap-backend-type=openldap --targetdir=$PREFIX/openldap-backend
-testit "openldap-mmr-backend" $PYTHON ./setup/provision-backend --domain=FOO --realm=foo.example.com --host-name=samba --ldap-backend-type=openldap --targetdir=$PREFIX/openldap-mmr-backend --ol-mmr-urls='ldap://localdc1:9000,ldap://localdc2:9000,ldap://localdc3:9000'
-testit "fedora-ds-backend" $PYTHON ./setup/provision-backend --domain=FOO --realm=foo.example.com --host-name=samba --ldap-backend-type=fedora-ds --targetdir=$PREFIX/fedora-ds-backend
+testit "openldap-backend" $PYTHON ./setup/provision-backend --domain=FOO --realm=foo.example.com --host-name=samba --ldap-backend-type=openldap --targetdir=$PREFIX/openldap-backend --testing-mode=yes --ol-slapd=/dev/null
+testit "openldap-mmr-backend" $PYTHON ./setup/provision-backend --domain=FOO --realm=foo.example.com --host-name=samba --ldap-backend-type=openldap --targetdir=$PREFIX/openldap-mmr-backend --ol-mmr-urls='ldap://localdc1:9000,ldap://localdc2:9000,ldap://localdc3:9000' --testing-mode=yes --ol-slapd=/dev/null
+testit "fedora-ds-backend" $PYTHON ./setup/provision-backend --domain=FOO --realm=foo.example.com --host-name=samba --ldap-backend-type=fedora-ds --targetdir=$PREFIX/fedora-ds-backend --testing-mode=yes --ol-slapd=/dev/null
 
 reprovision() {
-       $PYTHON ./setup/provision-backend --domain=FOO --realm=foo.example.com --host-name=samba --ldap-backend-type=openldap --targetdir=$PREFIX/openldap-backend-reprovision
-       $PYTHON ./setup/provision-backend --domain=FOO --realm=foo.example.com --host-name=samba --ldap-backend-type=openldap --targetdir=$PREFIX/openldap-backend-reprovision
+       $PYTHON ./setup/provision-backend --domain=FOO --realm=foo.example.com --host-name=samba --ldap-backend-type=openldap --targetdir=$PREFIX/openldap-backend-reprovision --testing-mode=yes --ol-slapd=/dev/null
+       $PYTHON ./setup/provision-backend --domain=FOO --realm=foo.example.com --host-name=samba --ldap-backend-type=openldap --targetdir=$PREFIX/openldap-backend-reprovision --testing-mode=yes --ol-slapd=/dev/null
 }
 
 testit "reprovision-backend" reprovision