Otherwise we have the live DCs spamming the logs looking for the
long-gone test servers:
Failed to connect host fd00::5357:5f0b on port 135 - NT_STATUS_OBJECT_NAME_NOT_FOUND
Failed to connect host fd00::5357:5f0b (
6f44653d-18c8-4bf4-b2e7-
6f85cf7b0f74._msdcs.addom.samba.example.com) on port 135 - NT_STATUS_OBJECT_NAME_NOT_FOUND.
Failed to connect host 10.53.57.11 on port 135 - NT_STATUS_OBJECT_NAME_NOT_FOUND
Failed to connect host 10.53.57.11 (
6f44653d-18c8-4bf4-b2e7-
6f85cf7b0f74._msdcs.addom.samba.example.com) on port 135 - NT_STATUS_OBJECT_NAME_NOT_FOUND.
Failed to connect host 10.53.57.12 on port 135 - NT_STATUS_OBJECT_NAME_NOT_FOUND
This avoids spamming the GitLab pipeline logs with a lot of noise,
as there is a size limit to the output, as well as being cleaner.
Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Gary Lockyer <gary@catalyst.net.nz>
def join(self, backend):
target = tempfile.mkdtemp(dir=self.tempdir)
+ new_dc_name = "offlinebackupdc"
+
join_cmd = "samba-tool domain join {domain} DC " +\
"--server {server} " +\
"--realm {realm} " +\
"--username {username}%{password} " +\
"--targetdir {target} " +\
"--backend-store {backend} " +\
+ "--option='netbios name = {new_dc_name}' " +\
"--option=\"vfs objects=dfs_samba4 acl_xattr fake_acls xattr_tdb\""
join_cmd = join_cmd.format(server=os.environ["DC_SERVER"],
domain=os.environ["DOMAIN"],
username=os.environ["USERNAME"],
password=os.environ["PASSWORD"],
target=target,
- backend=backend)
+ backend=backend,
+ new_dc_name=new_dc_name)
self.check_output(join_cmd)
+ demote_cmd = "samba-tool domain demote " +\
+ "--server {server} " +\
+ "--username {username}%{password} " +\
+ "--remove-other-dead-server={new_dc_name}"
+
+ demote_cmd = demote_cmd.format(server=os.environ["DC_SERVER"],
+ username=os.environ["USERNAME"],
+ password=os.environ["PASSWORD"],
+ new_dc_name=new_dc_name)
+ self.check_output(demote_cmd)
+
return target
def backup(self, prov_dir):
#
# These can all be accesses via os.environ["VARIBLENAME"] when needed
+import os
import random
import string
from samba.auth import system_session
def assertWithin(self, val1, val2, delta, msg=""):
"""Assert that val1 is within delta of val2, useful for time computations"""
self.assertTrue(((val1 + delta) > val2) and ((val1 - delta) < val2), msg)
+
+ def cleanup_join(self, netbios_name):
+ (result, out, err) \
+ = self.runsubcmd("domain",
+ "demote",
+ ("--remove-other-dead-server=%s " % netbios_name),
+ ("-U%s%%%s" % (os.environ["USERNAME"], os.environ["PASSWORD"])),
+ ("--server=%s" % os.environ["SERVER"]))
+
+ self.assertCmdSuccess(result, out, err)
if size:
command += ("--backend-store-size=%s" % size)
- return self.run_command(command)
+ (ret, stdout, stderr) = self.run_command(command)
+ if ret == 0:
+ self.cleanup_join(self.netbios_name)
+
+ return (ret, stdout, stderr)
def is_rodc(self):
url = "ldb://%s/private/sam.ldb" % self.tempsambadir
if size:
command += ("--backend-store-size=%s" % size)
- return self.run_command(command)
+ (ret, stdout, stderr) = self.run_command(command)
+ if ret == 0:
+ self.cleanup_join(self.netbios_name)
+
+ return (ret, stdout, stderr)
def is_rodc(self):
url = "ldb://%s/private/sam.ldb" % self.tempsambadir