From: Jelmer Vernooij Date: Tue, 7 Feb 2012 00:09:41 +0000 (+0100) Subject: provision: Make sure target directory is created early. X-Git-Url: http://git.samba.org/?p=tridge%2Fsamba.git;a=commitdiff_plain;h=f2903e0c4f9fc3931415144e72b6b898c4fdbf49 provision: Make sure target directory is created early. This is necessary when using the target directory to store temporary files. Autobuild-User: Jelmer Vernooij Autobuild-Date: Tue Feb 7 02:45:37 CET 2012 on sn-devel-104 --- diff --git a/source4/scripting/python/samba/netcmd/domain.py b/source4/scripting/python/samba/netcmd/domain.py index 1f2c7de957..b0c174b470 100644 --- a/source4/scripting/python/samba/netcmd/domain.py +++ b/source4/scripting/python/samba/netcmd/domain.py @@ -873,6 +873,10 @@ class cmd_domain_samba3upgrade(Command): if sambaopts.realm: s3conf.set("realm", sambaopts.realm) + if targetdir is not None: + if not os.path.isdir(targetdir): + os.mkdir(targetdir) + eadb = True if use_xattrs == "yes": eadb = False @@ -882,14 +886,16 @@ class cmd_domain_samba3upgrade(Command): else: tmpfile = tempfile.NamedTemporaryFile(dir=os.path.abspath(os.path.dirname(lp.get("private dir")))) try: - samba.ntacls.setntacl(lp, tmpfile.name, - "O:S-1-5-32G:S-1-5-32", "S-1-5-32", "native") - eadb = False - except Exception: - # FIXME: Don't catch all exceptions here - logger.info("You are not root or your system do not support xattr, using tdb backend for attributes. " - "If you intend to use this provision in production, rerun the script as root on a system supporting xattrs.") - tmpfile.close() + try: + samba.ntacls.setntacl(lp, tmpfile.name, + "O:S-1-5-32G:S-1-5-32", "S-1-5-32", "native") + eadb = False + except Exception: + # FIXME: Don't catch all exceptions here + logger.info("You are not root or your system do not support xattr, using tdb backend for attributes. " + "If you intend to use this provision in production, rerun the script as root on a system supporting xattrs.") + finally: + tmpfile.close() # Set correct default values from dbdir or testparm paths = {} diff --git a/source4/scripting/python/samba/upgradehelpers.py b/source4/scripting/python/samba/upgradehelpers.py index 2c7191e707..a75ab75ada 100755 --- a/source4/scripting/python/samba/upgradehelpers.py +++ b/source4/scripting/python/samba/upgradehelpers.py @@ -202,6 +202,8 @@ def get_paths(param, targetdir=None, smbconf=None): :param smbconf: Path to the smb.conf file :return: A list with the path of important provision objects""" if targetdir is not None: + if not os.path.exists(targetdir): + os.mkdir(targetdir) etcdir = os.path.join(targetdir, "etc") if not os.path.exists(etcdir): os.makedirs(etcdir) diff --git a/source4/setup/provision b/source4/setup/provision index 80237058e4..a2327b339e 100755 --- a/source4/setup/provision +++ b/source4/setup/provision @@ -218,6 +218,10 @@ if opts.blank: elif opts.partitions_only: samdb_fill = FILL_DRS +if opts.targetdir is not None: + if not os.path.isdir(opts.targetdir): + os.mkdir(opts.targetdir) + eadb = True if opts.use_xattrs == "yes": eadb = False @@ -227,13 +231,15 @@ elif opts.use_xattrs == "auto" and not lp.get("posix:eadb"): else: file = tempfile.NamedTemporaryFile(dir=os.path.abspath(os.path.dirname(lp.get("private dir")))) try: - samba.ntacls.setntacl(lp, file.name, - "O:S-1-5-32G:S-1-5-32", "S-1-5-32", "native") - eadb = False - except Exception: - logger.info("You are not root or your system do not support xattr, using tdb backend for attributes. " - "If you intend to use this provision in production, rerun the script as root on a system supporting xattrs.") - file.close() + try: + samba.ntacls.setntacl(lp, file.name, + "O:S-1-5-32G:S-1-5-32", "S-1-5-32", "native") + eadb = False + except Exception: + logger.info("You are not root or your system do not support xattr, using tdb backend for attributes. " + "If you intend to use this provision in production, rerun the script as root on a system supporting xattrs.") + finally: + file.close() session = system_session() try: