summaryrefslogtreecommitdiff
path: root/source4/scripting
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2011-09-13 21:02:43 +1000
committerAndrew Bartlett <abartlet@samba.org>2011-09-13 16:30:31 +0200
commitc6cf070df0add8484ffb16b40893327b36b6a936 (patch)
treee411481e1305cb1c5bcab0a1ee0a49138214c1e1 /source4/scripting
parent4e87a8419ca662d35018f0d00c80f3d816473cbc (diff)
downloadsamba-c6cf070df0add8484ffb16b40893327b36b6a936.tar.gz
samba-c6cf070df0add8484ffb16b40893327b36b6a936.tar.bz2
samba-c6cf070df0add8484ffb16b40893327b36b6a936.zip
s4-s3-upgrade Improve samba-tool domain samba3upgrade behaviour
The --realm argument is again optional (the previous code would take the default from the default smb.conf, not the one specified) and --targetdir is now a named argument much like it is to provision. We now test the --testparm option to ensure it behaves the way we expect. Andrew Bartlett Autobuild-User: Andrew Bartlett <abartlet@samba.org> Autobuild-Date: Tue Sep 13 16:30:31 CEST 2011 on sn-devel-104
Diffstat (limited to 'source4/scripting')
-rw-r--r--source4/scripting/python/samba/getopt.py2
-rw-r--r--source4/scripting/python/samba/netcmd/domain.py24
2 files changed, 13 insertions, 13 deletions
diff --git a/source4/scripting/python/samba/getopt.py b/source4/scripting/python/samba/getopt.py
index 0ab1e9e46f..01e9f87e76 100644
--- a/source4/scripting/python/samba/getopt.py
+++ b/source4/scripting/python/samba/getopt.py
@@ -53,6 +53,7 @@ class SambaOptions(optparse.OptionGroup):
callback=self._set_realm)
self._configfile = None
self._lp = LoadParm()
+ self.realm = None
def get_loadparm_path(self):
"""Return path to the smb.conf file specified on the command line."""
@@ -66,6 +67,7 @@ class SambaOptions(optparse.OptionGroup):
def _set_realm(self, option, opt_str, arg, parser):
self._lp.set('realm', arg)
+ self.realm = arg
def _set_option(self, option, opt_str, arg, parser):
if arg.find('=') == -1:
diff --git a/source4/scripting/python/samba/netcmd/domain.py b/source4/scripting/python/samba/netcmd/domain.py
index 4211b06802..b8f1e92e19 100644
--- a/source4/scripting/python/samba/netcmd/domain.py
+++ b/source4/scripting/python/samba/netcmd/domain.py
@@ -54,8 +54,8 @@ from samba.dsdb import (
DS_DOMAIN_FUNCTION_2008_R2,
)
-def get_testparm_var(testparm, varname):
- cmd = "%s -s -l --parameter-name='%s' 2>/dev/null" % (testparm, varname)
+def get_testparm_var(testparm, smbconf, varname):
+ cmd = "%s -s -l --parameter-name='%s' %s 2>/dev/null" % (testparm, varname, smbconf)
output = os.popen(cmd, 'r').readline()
return output.strip()
@@ -532,7 +532,7 @@ class cmd_domain_passwordsettings(Command):
class cmd_domain_samba3upgrade(Command):
"""Upgrade from Samba3 database to Samba4 AD database"""
- synopsis = "%prog domain samba3upgrade [options] <samba3_smb_conf> <targetdir>"
+ synopsis = "%prog domain samba3upgrade [options] <samba3_smb_conf>"
long_description = """Specify either samba3 database directory (with --libdir) or
samba3 testparm utility (with --testparm)."""
@@ -547,12 +547,14 @@ samba3 testparm utility (with --testparm)."""
help="Path to samba3 database directory"),
Option("--testparm", type="string", metavar="PATH",
help="Path to samba3 testparm utility"),
+ Option("--targetdir", type="string", metavar="DIR",
+ help="Path prefix where the new Samba 4.0 AD domain should be initialised"),
Option("--quiet", help="Be quiet"),
Option("--use-xattrs", type="choice", choices=["yes","no","auto"], metavar="[yes|no|auto]",
help="Define if we should use the native fs capabilities or a tdb file for storing attributes likes ntacl, auto tries to make an inteligent guess based on the user rights and system capabilities", default="auto"),
]
- takes_args = ["smbconf", "targetdir"]
+ takes_args = ["smbconf"]
def run(self, smbconf=None, targetdir=None, libdir=None, testparm=None,
quiet=None, use_xattrs=None, sambaopts=None, versionopts=None):
@@ -560,9 +562,6 @@ samba3 testparm utility (with --testparm)."""
if not os.path.exists(smbconf):
raise CommandError("File %s does not exist" % smbconf)
- if not os.path.isdir(targetdir):
- raise CommandError("Directory %s does not exist" % targetdir)
-
if testparm and not os.path.exists(testparm):
raise CommandError("Testparm utility %s does not exist" % testparm)
@@ -584,12 +583,11 @@ samba3 testparm utility (with --testparm)."""
logger.setLevel(logging.INFO)
lp = sambaopts.get_loadparm()
- realm = lp.get("realm")
s3conf = s3param.get_context()
- if realm:
- s3conf.set("realm", realm)
+ if sambaopts.realm:
+ s3conf.set("realm", sambaopts.realm)
eadb = True
if use_xattrs == "yes":
@@ -613,9 +611,9 @@ samba3 testparm utility (with --testparm)."""
paths["private dir"] = libdir
paths["lock directory"] = libdir
else:
- paths["state directory"] = get_testparm_var(testparm, "state directory")
- paths["private dir"] = get_testparm_var(testparm, "private dir")
- paths["lock directory"] = get_testparm_var(testparm, "lock directory")
+ paths["state directory"] = get_testparm_var(testparm, smbconf, "state directory")
+ paths["private dir"] = get_testparm_var(testparm, smbconf, "private dir")
+ paths["lock directory"] = get_testparm_var(testparm, smbconf, "lock directory")
for p in paths:
s3conf.set(p, paths[p])