It looks like the latest change to FileUtil is changing ambari agent
process umask after file has been created.  The umask should be
restored to existing umask after the process is done creating the
files. This prevents untracked umask changes lingering in the system.
What is the reason to preserve umask change?

regards,
Eric

---------- Forwarded message ----------
From:  <[email protected]>
Date: Tue, Nov 29, 2011 at 8:22 PM
Subject: svn commit: r1208264 - in /incubator/ambari/trunk:
agent/src/main/python/ambari_agent/
controller/src/main/java/org/apache/ambari/controller/
controller/src/main/java/org/apache/ambari/resource/statemachine/
To: [email protected]


Author: ddas
Date: Wed Nov 30 04:22:15 2011
New Revision: 1208264

URL: http://svn.apache.org/viewvc?rev=1208264&view=rev
Log:
Follow-up commit to AMBARI-140

Modified: incubator/ambari/trunk/agent/src/main/python/ambari_agent/FileUtil.py
URL: 
http://svn.apache.org/viewvc/incubator/ambari/trunk/agent/src/main/python/ambari_agent/FileUtil.py?rev=1208264&r1=1208263&r2=1208264&view=diff
==============================================================================
--- incubator/ambari/trunk/agent/src/main/python/ambari_agent/FileUtil.py
(original)
+++ incubator/ambari/trunk/agent/src/main/python/ambari_agent/FileUtil.py
Wed Nov 30 04:22:15 2011
@@ -36,11 +36,18 @@ def writeFile(action, result):
  oldCwd = os.getcwd()
  fileInfo = action['file']
  try:
-    path = 
AmbariConfig.config.get('agent','prefix')+"/clusters/"+action['clusterId']+"-"+action['role']
+    if fileInfo['path'].startswith('/'):
+      path = fileInfo['path']
+    else:
+      path = 
AmbariConfig.config.get('agent','prefix')+"/clusters/"+action['clusterId']+"-"+action['role']
    logger.info("path: %s" % path)
    os.chdir(path)
    user=fileInfo['owner']
+    if user is None:
+      user=getpass.getuser()
    group=fileInfo['group']
+    if group is None:
+      group=getpass.getgroup()
    filename=fileInfo['path']
    content=fileInfo['data']
    try:
@@ -50,9 +57,15 @@ def writeFile(action, result):
        group=getgrnam(group)[2]
    except Exception:
      logger.warn("can not find user uid/gid: (%s/%s) for writing %s"
% (user, group, filename))
-    permission=int(fileInfo['permission'])
-    umask=int(fileInfo['umask'])
+    if fileInfo['permission'] is not None:
+      permission=int(fileInfo['permission'],8)
+    else:
+      permission=0750
    oldMask = os.umask(0)
+    if fileInfo['umask'] is not None:
+      umask=int(fileInfo['umask'])
+    else:
+      umask=oldMask
    os.umask(int(umask))
    prefix = os.path.dirname(filename)
    try:

Reply via email to