From ffe8090c898ac649b132fbfc7d79965dd98ff6c1 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Mon, 12 Oct 2015 17:50:27 +1300 Subject: [PATCH] samba-tool drs clone-dc-database: Require --targetdir Signed-off-by: Andrew Bartlett Reviewed-by: Garming Sam --- python/samba/netcmd/drs.py | 6 +++++- python/samba/tests/blackbox/samba_tool_drs.py | 13 +++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/python/samba/netcmd/drs.py b/python/samba/netcmd/drs.py index c624357f59e..230dd33bad0 100644 --- a/python/samba/netcmd/drs.py +++ b/python/samba/netcmd/drs.py @@ -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) diff --git a/python/samba/tests/blackbox/samba_tool_drs.py b/python/samba/tests/blackbox/samba_tool_drs.py index c8c51b14608..2ba8d89b280 100644 --- a/python/samba/tests/blackbox/samba_tool_drs.py +++ b/python/samba/tests/blackbox/samba_tool_drs.py @@ -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) -- 2.34.1