samba-tool drs clone-dc-database: Require --targetdir
authorAndrew Bartlett <abartlet@samba.org>
Mon, 12 Oct 2015 04:50:27 +0000 (17:50 +1300)
committerAndrew Bartlett <abartlet@samba.org>
Mon, 26 Oct 2015 04:11:21 +0000 (05:11 +0100)
Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Garming Sam <garming@catalyst.net.nz>
python/samba/netcmd/drs.py
python/samba/tests/blackbox/samba_tool_drs.py

index c624357f59e1a64f3a77ac1c486c5151802316b1..230dd33bad08252c39f839dff713b2535f7ba2c2 100644 (file)
@@ -528,7 +528,7 @@ class cmd_drs_clone_dc_database(Command):
 
     takes_options = [
         Option("--server", help="DC to join", type=str),
-        Option("--targetdir", help="where to store provision", type=str),
+        Option("--targetdir", help="where to store provision (required)", type=str),
         Option("--quiet", help="Be quiet", action="store_true"),
         Option("--include-secrets", help="Also replicate secret values", action="store_true"),
         Option("--verbose", help="Be verbose", action="store_true")
@@ -550,6 +550,10 @@ class cmd_drs_clone_dc_database(Command):
         else:
             logger.setLevel(logging.INFO)
 
+        if targetdir is None:
+            raise CommandError("--targetdir option must be specified")
+
+
         join_clone(logger=logger, server=server, creds=creds, lp=lp, domain=domain,
                    targetdir=targetdir, include_secrets=include_secrets)
 
index c8c51b1460890195196d7fb97ac6766e18bc6f46..2ba8d89b280ba29673a913eeea979a79afde9b87 100644 (file)
@@ -167,3 +167,16 @@ class SambaToolDrsTests(samba.tests.BlackboxTestCase):
         shutil.rmtree(os.path.join(self.tempdir, "msg.lock"))
         os.remove(os.path.join(self.tempdir, "names.tdb"))
         shutil.rmtree(os.path.join(self.tempdir, "state"))
+
+    def test_samba_tool_drs_clone_dc_secrets_without_targetdir(self):
+        """Tests 'samba-tool drs clone-dc-database' command without --targetdir."""
+        server_rootdse = self._get_rootDSE(self.dc1)
+        server_ldap_service_name = str(server_rootdse["ldapServiceName"][0])
+        server_realm = server_ldap_service_name.split(":")[0]
+        creds = self.get_credentials()
+        def attempt_clone():
+            out = self.check_output("samba-tool drs clone-dc-database %s --server=%s %s"
+                                    % (server_realm,
+                                       self.dc1,
+                                       self.cmdline_creds))
+        self.assertRaises(samba.tests.BlackboxProcessError, attempt_clone)