From: Gary Lockyer Date: Thu, 27 Jun 2019 20:56:31 +0000 (+1200) Subject: samba-tool clone-dc-database: Add --backend-store-size option X-Git-Tag: ldb-2.0.5~82 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=97bc3db68a5ec2cd20e5059d77089e76a0625479;p=thirdparty%2Fsamba.git samba-tool clone-dc-database: Add --backend-store-size option Add a new "samba-tool drs clone-dc-database" option "backend-store-size". This allows the lmdb map size to be set during a clone, instead of hard-wiring it to 8Gb. Signed-off-by: Gary Lockyer ' Reviewed-by: Andrew Bartlett --- diff --git a/python/samba/join.py b/python/samba/join.py index 2d756a46f14..794f5577b41 100644 --- a/python/samba/join.py +++ b/python/samba/join.py @@ -1551,12 +1551,14 @@ def join_DC(logger=None, server=None, creds=None, lp=None, site=None, netbios_na def join_clone(logger=None, server=None, creds=None, lp=None, targetdir=None, domain=None, include_secrets=False, - dns_backend="NONE", backend_store=None): + dns_backend="NONE", backend_store=None, + backend_store_size=None): """Creates a local clone of a remote DC.""" ctx = DCCloneContext(logger, server, creds, lp, targetdir=targetdir, domain=domain, dns_backend=dns_backend, include_secrets=include_secrets, - backend_store=backend_store) + backend_store=backend_store, + backend_store_size=backend_store_size) lp.set("workgroup", ctx.domain_name) logger.info("workgroup is %s" % ctx.domain_name) @@ -1629,11 +1631,13 @@ class DCCloneContext(DCJoinContext): def __init__(ctx, logger=None, server=None, creds=None, lp=None, targetdir=None, domain=None, dns_backend=None, - include_secrets=False, backend_store=None): + include_secrets=False, backend_store=None, + backend_store_size=None): super(DCCloneContext, ctx).__init__(logger, server, creds, lp, targetdir=targetdir, domain=domain, dns_backend=dns_backend, - backend_store=backend_store) + backend_store=backend_store, + backend_store_size=backend_store_size) # As we don't want to create or delete these DNs, we set them to None ctx.server_dn = None diff --git a/python/samba/netcmd/drs.py b/python/samba/netcmd/drs.py index e6b892c2877..739498cca1b 100644 --- a/python/samba/netcmd/drs.py +++ b/python/samba/netcmd/drs.py @@ -47,6 +47,7 @@ from samba.uptodateness import ( get_kcc_and_dsas, ) from samba.compat import get_string +from samba.samdb import get_default_backend_store def drsuapi_connect(ctx): '''make a DRSUAPI connection to the server''' @@ -756,14 +757,21 @@ class cmd_drs_clone_dc_database(Command): Option("--targetdir", help="where to store provision (required)", type=str), Option("-q", "--quiet", help="Be quiet", action="store_true"), Option("--include-secrets", help="Also replicate secret values", action="store_true"), - Option("-v", "--verbose", help="Be verbose", action="store_true") + Option("--backend-store", type="choice", metavar="BACKENDSTORE", + choices=["tdb", "mdb"], + help="Specify the database backend to be used " + "(default is %s)" % get_default_backend_store()), + Option("--backend-store-size", type="bytes", metavar="SIZE", + help="Specify the size of the backend database, currently" + + "only supported by lmdb backends (default is 8 Gb).") ] takes_args = ["domain"] def run(self, domain, sambaopts=None, credopts=None, versionopts=None, server=None, targetdir=None, - quiet=False, verbose=False, include_secrets=False): + quiet=False, verbose=False, include_secrets=False, + backend_store=None, backend_store_size=None): lp = sambaopts.get_loadparm() creds = credopts.get_credentials(lp) @@ -774,7 +782,9 @@ class cmd_drs_clone_dc_database(Command): join_clone(logger=logger, server=server, creds=creds, lp=lp, domain=domain, dns_backend='SAMBA_INTERNAL', - targetdir=targetdir, include_secrets=include_secrets) + targetdir=targetdir, include_secrets=include_secrets, + backend_store=backend_store, + backend_store_size=backend_store_size) class cmd_drs_uptodateness(Command): diff --git a/selftest/knownfail.d/drs_clone_dc_lmdb_size b/selftest/knownfail.d/drs_clone_dc_lmdb_size deleted file mode 100644 index 607f2fbaa3b..00000000000 --- a/selftest/knownfail.d/drs_clone_dc_lmdb_size +++ /dev/null @@ -1,5 +0,0 @@ -samba.tests.samba_tool.drs_clone_dc_data_lmdb_size.samba.tests.samba_tool.drs_clone_dc_data_lmdb_size.DrsCloneDcDataLmdbSizeTestCase.test_64Mb\(ad_dc_default\) -samba.tests.samba_tool.drs_clone_dc_data_lmdb_size.samba.tests.samba_tool.drs_clone_dc_data_lmdb_size.DrsCloneDcDataLmdbSizeTestCase.test_default\(ad_dc_default\) -samba.tests.samba_tool.drs_clone_dc_data_lmdb_size.samba.tests.samba_tool.drs_clone_dc_data_lmdb_size.DrsCloneDcDataLmdbSizeTestCase.test_invalid_unit_suffix\(ad_dc_default\) -samba.tests.samba_tool.drs_clone_dc_data_lmdb_size.samba.tests.samba_tool.drs_clone_dc_data_lmdb_size.DrsCloneDcDataLmdbSizeTestCase.test_no_unit_suffix\(ad_dc_default\) -samba.tests.samba_tool.drs_clone_dc_data_lmdb_size.samba.tests.samba_tool.drs_clone_dc_data_lmdb_size.DrsCloneDcDataLmdbSizeTestCase.test_non_numeric\(ad_dc_default\)