You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ao...@apache.org on 2015/12/22 12:12:30 UTC
ambari git commit: AMBARI-14462. Make Directory with
create_parents=True, error messages more understanable (aonishuk)
Repository: ambari
Updated Branches:
refs/heads/trunk a4a530ab3 -> 2d8721a8b
AMBARI-14462. Make Directory with create_parents=True, error messages more understanable (aonishuk)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/2d8721a8
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/2d8721a8
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/2d8721a8
Branch: refs/heads/trunk
Commit: 2d8721a8babb509b63d85eb26f266ec4c280b7ee
Parents: a4a530a
Author: Andrew Onishuk <ao...@hortonworks.com>
Authored: Tue Dec 22 13:12:24 2015 +0200
Committer: Andrew Onishuk <ao...@hortonworks.com>
Committed: Tue Dec 22 13:12:24 2015 +0200
----------------------------------------------------------------------
.../main/python/resource_management/core/sudo.py | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/2d8721a8/ambari-common/src/main/python/resource_management/core/sudo.py
----------------------------------------------------------------------
diff --git a/ambari-common/src/main/python/resource_management/core/sudo.py b/ambari-common/src/main/python/resource_management/core/sudo.py
index bb28d9f..5dbcddd 100644
--- a/ambari-common/src/main/python/resource_management/core/sudo.py
+++ b/ambari-common/src/main/python/resource_management/core/sudo.py
@@ -24,6 +24,7 @@ import os
import tempfile
import shutil
import stat
+import errno
from resource_management.core import shell
from resource_management.core.logger import Logger
from resource_management.core.exceptions import Fail
@@ -67,7 +68,23 @@ if os.geteuid() == 0:
shutil.copy(src, dst)
def makedirs(path, mode):
- os.makedirs(path, mode)
+ try:
+ os.makedirs(path, mode)
+ except OSError as ex:
+ if ex.errno == errno.ENOENT:
+ dirname = os.path.dirname(ex.filename)
+ if os.path.islink(dirname) and not os.path.exists(dirname):
+ raise Fail("Cannot create directory '{0}' as '{1}' is a broken symlink".format(path, dirname))
+ elif ex.errno == errno.ENOTDIR:
+ dirname = os.path.dirname(ex.filename)
+ if os.path.isfile(dirname):
+ raise Fail("Cannot create directory '{0}' as '{1}' is a file".format(path, dirname))
+ elif ex.errno == errno.ELOOP:
+ dirname = os.path.dirname(ex.filename)
+ if os.path.islink(dirname) and not os.path.exists(dirname):
+ raise Fail("Cannot create directory '{0}' as '{1}' is a looped symlink".format(path, dirname))
+
+ raise
def makedir(path, mode):
os.mkdir(path)