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/01/21 12:38:02 UTC

ambari git commit: AMBARI-9231. Cannot start datanode with umask 027 (aonishuk)

Repository: ambari
Updated Branches:
  refs/heads/trunk e6816418e -> f3b73cd3a


AMBARI-9231. Cannot start datanode with umask 027 (aonishuk)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/f3b73cd3
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/f3b73cd3
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/f3b73cd3

Branch: refs/heads/trunk
Commit: f3b73cd3a4dfaa5bbd097c7a9baa70b547757ecc
Parents: e681641
Author: Andrew Onishuk <ao...@hortonworks.com>
Authored: Wed Jan 21 13:37:51 2015 +0200
Committer: Andrew Onishuk <ao...@hortonworks.com>
Committed: Wed Jan 21 13:37:51 2015 +0200

----------------------------------------------------------------------
 .../core/providers/system.py                    | 18 ++++++++--
 .../core/resources/system.py                    | 22 ++++++++++++
 .../python/resource_management/core/sudo.py     |  3 ++
 .../FALCON/0.5.0.2.1/package/scripts/falcon.py  |  6 ++--
 .../HBASE/0.96.0.2.0/package/scripts/hbase.py   |  2 +-
 .../2.1.0.2.0/package/scripts/hdfs_datanode.py  |  2 +-
 .../2.1.0.2.0/package/scripts/hdfs_namenode.py  |  2 +-
 .../2.1.0.2.0/package/scripts/hdfs_snamenode.py |  2 +-
 .../2.1.0.2.0/package/scripts/journalnode.py    |  2 +-
 .../OOZIE/4.0.0.2.0/package/scripts/oozie.py    |  2 +-
 .../STORM/0.9.1.2.1/package/scripts/storm.py    |  2 +-
 .../YARN/2.1.0.2.0/package/scripts/yarn.py      |  4 +--
 .../3.4.5.2.0/package/scripts/zookeeper.py      |  2 +-
 .../before-ANY/scripts/shared_initialization.py |  2 +-
 .../scripts/shared_initialization.py            |  7 ++--
 .../stacks/2.0.6/HBASE/test_hbase_client.py     |  4 +--
 .../stacks/2.0.6/HBASE/test_hbase_master.py     |  6 ++--
 .../2.0.6/HBASE/test_hbase_regionserver.py      |  6 ++--
 .../python/stacks/2.0.6/HDFS/test_datanode.py   |  4 +--
 .../stacks/2.0.6/HDFS/test_journalnode.py       |  4 +--
 .../python/stacks/2.0.6/HDFS/test_namenode.py   |  4 +--
 .../python/stacks/2.0.6/HDFS/test_snamenode.py  |  6 ++--
 .../stacks/2.0.6/OOZIE/test_oozie_server.py     | 36 ++++++++++----------
 .../stacks/2.0.6/YARN/test_nodemanager.py       | 12 +++----
 .../2.0.6/ZOOKEEPER/test_zookeeper_client.py    |  4 +--
 .../2.0.6/ZOOKEEPER/test_zookeeper_server.py    |  4 +--
 .../2.0.6/hooks/before-ANY/test_before_any.py   |  2 +-
 .../hooks/before-INSTALL/test_before_install.py |  4 ++-
 .../stacks/2.1/FALCON/test_falcon_server.py     |  2 +-
 .../python/stacks/2.1/STORM/test_storm_base.py  | 12 +++----
 .../stacks/2.1/YARN/test_apptimelineserver.py   |  2 +-
 31 files changed, 116 insertions(+), 74 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/f3b73cd3/ambari-common/src/main/python/resource_management/core/providers/system.py
----------------------------------------------------------------------
diff --git a/ambari-common/src/main/python/resource_management/core/providers/system.py b/ambari-common/src/main/python/resource_management/core/providers/system.py
index d293a31..6023e60 100644
--- a/ambari-common/src/main/python/resource_management/core/providers/system.py
+++ b/ambari-common/src/main/python/resource_management/core/providers/system.py
@@ -22,6 +22,7 @@ Ambari Agent
 
 from __future__ import with_statement
 
+import re
 import grp
 import os
 import pwd
@@ -57,7 +58,7 @@ def _coerce_gid(group):
   return gid
 
 
-def _ensure_metadata(path, user, group, mode=None):
+def _ensure_metadata(path, user, group, mode=None, cd_access=None):
   stat = os.stat(path)
   
   if mode:
@@ -82,6 +83,17 @@ def _ensure_metadata(path, user, group, mode=None):
       Logger.info(
         "Changing group for %s from %d to %s" % (path, stat.st_gid, group))
       sudo.chown(path, None, group)
+      
+  if cd_access:
+    if not re.match("^[ugoa]+$", cd_access):
+      raise Fail("'cd_acess' value '%s' is not valid" % (cd_access))
+    
+    dir_path = path
+    while dir_path != os.sep:
+      if os.path.isdir(dir_path):
+        sudo.chmod_extended(dir_path, cd_access+"+x")
+        
+      dir_path = os.path.split(dir_path)[0]
 
 
 class FileProvider(Provider):
@@ -119,7 +131,7 @@ class FileProvider(Provider):
       sudo.create_file(path, content)
 
     _ensure_metadata(self.resource.path, self.resource.owner,
-                        self.resource.group, mode=self.resource.mode)
+                        self.resource.group, mode=self.resource.mode, cd_access=self.resource.cd_access)
 
   def action_delete(self):
     path = self.resource.path
@@ -165,7 +177,7 @@ class DirectoryProvider(Provider):
       raise Fail("Applying %s failed, file %s already exists" % (self.resource, path))
     
     _ensure_metadata(path, self.resource.owner, self.resource.group,
-                        mode=self.resource.mode)
+                        mode=self.resource.mode, cd_access=self.resource.cd_access)
 
   @staticmethod
   def makedirs_and_set_permission_recursively(path, owner, group, mode):

http://git-wip-us.apache.org/repos/asf/ambari/blob/f3b73cd3/ambari-common/src/main/python/resource_management/core/resources/system.py
----------------------------------------------------------------------
diff --git a/ambari-common/src/main/python/resource_management/core/resources/system.py b/ambari-common/src/main/python/resource_management/core/resources/system.py
index b7958d9..bf10c43 100644
--- a/ambari-common/src/main/python/resource_management/core/resources/system.py
+++ b/ambari-common/src/main/python/resource_management/core/resources/system.py
@@ -36,6 +36,17 @@ class File(Resource):
   # whether to replace files with different content
   replace = ResourceArgument(default=True)
   encoding = ResourceArgument()
+  """
+  Grants x-bit for all the folders up-to the file
+  
+  u - user who is owner
+  g - user from group
+  o - other users
+  a - all
+  
+  The letters can be combined together.
+  """
+  cd_access = ResourceArgument()
 
   actions = Resource.actions + ["create", "delete"]
 
@@ -48,6 +59,17 @@ class Directory(Resource):
   group = ResourceArgument()
   recursive = BooleanArgument(default=False) # this work for 'create', 'delete' is anyway recursive
   recursive_permission = BooleanArgument(default=False) # sets given perms to all non-existent folders which are created recursively
+  """
+  Grants x-bit for all the folders up-to the directory
+  
+  u - user who is owner
+  g - user from group
+  o - other users
+  a - all
+  
+  The letters can be combined together.
+  """
+  cd_access = ResourceArgument()
 
   actions = Resource.actions + ["create", "delete"]
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/f3b73cd3/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 fb81666..ae21f84 100644
--- a/ambari-common/src/main/python/resource_management/core/sudo.py
+++ b/ambari-common/src/main/python/resource_management/core/sudo.py
@@ -34,6 +34,9 @@ def chown(path, owner, group):
 def chmod(path, mode):
   shell.checked_call(["chmod", oct(mode), path], sudo=True)
   
+def chmod_extended(path, mode):
+  shell.checked_call(["chmod", mode, path], sudo=True)
+  
 # os.makedirs replacement
 def makedirs(path, mode):
   shell.checked_call(["mkdir", "-p", path], sudo=True)

http://git-wip-us.apache.org/repos/asf/ambari/blob/f3b73cd3/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/falcon.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/falcon.py b/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/falcon.py
index a903e5c..7404f04 100644
--- a/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/falcon.py
+++ b/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/falcon.py
@@ -69,7 +69,7 @@ def falcon(type, action = None):
                 group=params.user_group,
                 mode=0775,
                 recursive=True,
-                recursive_permission=True
+                cd_access="a",
       )
 
     if params.falcon_graph_serialize_path:
@@ -78,7 +78,7 @@ def falcon(type, action = None):
                 group=params.user_group,
                 mode=0775,
                 recursive=True,
-                recursive_permission=True
+                cd_access="a",
       )
 
   if type == 'server':
@@ -98,7 +98,7 @@ def falcon(type, action = None):
       Directory(params.falcon_local_dir,
                 owner=params.falcon_user,
                 recursive=True,
-                recursive_permission=True
+                cd_access="a",
       )
       if params.falcon_embeddedmq_enabled == True:
         Directory(os.path.abspath(os.path.join(params.falcon_embeddedmq_data, "..")),

http://git-wip-us.apache.org/repos/asf/ambari/blob/f3b73cd3/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/hbase.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/hbase.py b/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/hbase.py
index ea99288..6f18ddf 100644
--- a/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/hbase.py
+++ b/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/hbase.py
@@ -40,7 +40,7 @@ def hbase(name=None # 'master' or 'regionserver' or 'client'
              owner = params.hbase_user,
              mode=0775,
              recursive = True,
-             recursive_permission = True
+             cd_access="a",
   )
 
   Directory (params.local_dir,

http://git-wip-us.apache.org/repos/asf/ambari/blob/f3b73cd3/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/hdfs_datanode.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/hdfs_datanode.py b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/hdfs_datanode.py
index d432d88..20e2c19 100644
--- a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/hdfs_datanode.py
+++ b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/hdfs_datanode.py
@@ -29,7 +29,7 @@ def create_dirs(data_dir, params):
   """
   Directory(data_dir,
             recursive=True,
-            recursive_permission=True,
+            cd_access="a",
             mode=0755,
             owner=params.hdfs_user,
             group=params.user_group,

http://git-wip-us.apache.org/repos/asf/ambari/blob/f3b73cd3/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/hdfs_namenode.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/hdfs_namenode.py b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/hdfs_namenode.py
index 2029aac..143abd8 100644
--- a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/hdfs_namenode.py
+++ b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/hdfs_namenode.py
@@ -128,7 +128,7 @@ def create_name_dirs(directories):
             owner=params.hdfs_user,
             group=params.user_group,
             recursive=True,
-            recursive_permission=True
+            cd_access="a",
   )
 
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/f3b73cd3/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/hdfs_snamenode.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/hdfs_snamenode.py b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/hdfs_snamenode.py
index 7f0d536..eccf73f 100644
--- a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/hdfs_snamenode.py
+++ b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/hdfs_snamenode.py
@@ -29,7 +29,7 @@ def snamenode(action=None, format=False):
     for fs_checkpoint_dir in params.fs_checkpoint_dirs:
       Directory(fs_checkpoint_dir,
                 recursive=True,
-                recursive_permission=True,
+                cd_access="a",
                 mode=0755,
                 owner=params.hdfs_user,
                 group=params.user_group)

http://git-wip-us.apache.org/repos/asf/ambari/blob/f3b73cd3/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/journalnode.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/journalnode.py b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/journalnode.py
index d3bb27a..505d0b7 100644
--- a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/journalnode.py
+++ b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/journalnode.py
@@ -86,7 +86,7 @@ class JournalNode(Script):
 
     Directory(params.jn_edits_dir,
               recursive=True,
-              recursive_permission=True,
+              cd_access="a",
               owner=params.hdfs_user,
               group=params.user_group
     )

http://git-wip-us.apache.org/repos/asf/ambari/blob/f3b73cd3/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie.py b/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie.py
index 9bb4f9d..14fb05a 100644
--- a/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie.py
+++ b/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie.py
@@ -134,7 +134,7 @@ def oozie_server_specific():
     group = params.user_group,
     mode = 0755,
     recursive = True,
-    recursive_permission=True
+    cd_access="a",
   )
   
   Directory(params.oozie_libext_dir,

http://git-wip-us.apache.org/repos/asf/ambari/blob/f3b73cd3/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/storm.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/storm.py b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/storm.py
index 1a7a754..db74ea7 100644
--- a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/storm.py
+++ b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/storm.py
@@ -42,7 +42,7 @@ def storm():
             owner=params.storm_user,
             group=params.user_group,
             recursive=True,
-            recursive_permission=True
+            cd_access="a",
   )
 
   File(format("{conf_dir}/config.yaml"),

http://git-wip-us.apache.org/repos/asf/ambari/blob/f3b73cd3/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/yarn.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/yarn.py b/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/yarn.py
index cf0d211..3bd4825 100644
--- a/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/yarn.py
+++ b/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/yarn.py
@@ -65,7 +65,7 @@ def yarn(name = None):
               owner=params.yarn_user,
               group=params.user_group,
               recursive=True,
-              recursive_permission=True,
+              cd_access="a",
               ignore_failures=True,
               mode=0775
               )
@@ -140,7 +140,7 @@ def yarn(name = None):
        owner=params.yarn_user,
        group=params.user_group,
        recursive=True,
-       recursive_permission=True
+       cd_access="a",
     )
 
   File(params.rm_nodes_exclude_path,

http://git-wip-us.apache.org/repos/asf/ambari/blob/f3b73cd3/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/zookeeper.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/zookeeper.py b/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/zookeeper.py
index d03aaf7..aa1c891 100644
--- a/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/zookeeper.py
+++ b/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/zookeeper.py
@@ -58,7 +58,7 @@ def zookeeper(type = None):
   Directory(params.zk_data_dir,
             owner=params.zk_user,
             recursive=True,
-            recursive_permission=True,
+            cd_access="a",
             group=params.user_group
   )
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/f3b73cd3/ambari-server/src/main/resources/stacks/HDP/2.0.6/hooks/before-ANY/scripts/shared_initialization.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.6/hooks/before-ANY/scripts/shared_initialization.py b/ambari-server/src/main/resources/stacks/HDP/2.0.6/hooks/before-ANY/scripts/shared_initialization.py
index 54d18ea..055ab40 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.6/hooks/before-ANY/scripts/shared_initialization.py
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.6/hooks/before-ANY/scripts/shared_initialization.py
@@ -87,7 +87,7 @@ def setup_users():
                owner = params.hbase_user,
                mode=0775,
                recursive = True,
-               recursive_permission = True
+               cd_access="a",
     )
     set_uid(params.hbase_user, params.hbase_user_dirs)
     

http://git-wip-us.apache.org/repos/asf/ambari/blob/f3b73cd3/ambari-server/src/main/resources/stacks/HDP/2.0.6/hooks/before-INSTALL/scripts/shared_initialization.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.6/hooks/before-INSTALL/scripts/shared_initialization.py b/ambari-server/src/main/resources/stacks/HDP/2.0.6/hooks/before-INSTALL/scripts/shared_initialization.py
index 3cfb0b7..ba4329c 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.6/hooks/before-INSTALL/scripts/shared_initialization.py
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.6/hooks/before-INSTALL/scripts/shared_initialization.py
@@ -57,13 +57,16 @@ def setup_java():
   )
   
   Execute(chmod_cmd,
-          not_if = format("test -e {java_exec}"),
-          sudo = True    
+          sudo = True,
   )
 
   Execute(install_cmd,
           not_if = format("test -e {java_exec}")
   )
+  
+  Execute(("chgrp","-R", params.user_group, params.java_home),
+          sudo = True,          
+  )
 
 def install_packages():
   import params

http://git-wip-us.apache.org/repos/asf/ambari/blob/f3b73cd3/ambari-server/src/test/python/stacks/2.0.6/HBASE/test_hbase_client.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.0.6/HBASE/test_hbase_client.py b/ambari-server/src/test/python/stacks/2.0.6/HBASE/test_hbase_client.py
index 95c69c0..aee496f 100644
--- a/ambari-server/src/test/python/stacks/2.0.6/HBASE/test_hbase_client.py
+++ b/ambari-server/src/test/python/stacks/2.0.6/HBASE/test_hbase_client.py
@@ -46,7 +46,7 @@ class TestHBaseClient(RMFTestCase):
       owner = 'hbase',
       mode=0775,
       recursive = True,
-      recursive_permission = True
+      cd_access='a'
     )
     self.assertResourceCalled('Directory', '/hadoop/hbase/local',
       owner = 'hbase',
@@ -130,7 +130,7 @@ class TestHBaseClient(RMFTestCase):
       owner = 'hbase',
       mode=0775,
       recursive = True,
-      recursive_permission = True
+      cd_access='a'
     )
     self.assertResourceCalled('Directory', '/hadoop/hbase/local',
       owner = 'hbase',

http://git-wip-us.apache.org/repos/asf/ambari/blob/f3b73cd3/ambari-server/src/test/python/stacks/2.0.6/HBASE/test_hbase_master.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.0.6/HBASE/test_hbase_master.py b/ambari-server/src/test/python/stacks/2.0.6/HBASE/test_hbase_master.py
index c350a27..82c5404 100644
--- a/ambari-server/src/test/python/stacks/2.0.6/HBASE/test_hbase_master.py
+++ b/ambari-server/src/test/python/stacks/2.0.6/HBASE/test_hbase_master.py
@@ -205,7 +205,7 @@ class TestHBaseMaster(RMFTestCase):
       owner = 'hbase',
       mode = 0775,
       recursive = True,
-      recursive_permission = True
+      cd_access='a'
     )
     self.assertResourceCalled('Directory', '/hadoop/hbase/local',
       owner = 'hbase',
@@ -315,7 +315,7 @@ class TestHBaseMaster(RMFTestCase):
       owner = 'hbase',
       mode = 0775,
       recursive = True,
-      recursive_permission = True
+      cd_access='a'
     )
     self.assertResourceCalled('Directory', '/hadoop/hbase/local',
       owner = 'hbase',
@@ -436,7 +436,7 @@ class TestHBaseMaster(RMFTestCase):
       owner = 'hbase',
       mode = 0775,
       recursive = True,
-      recursive_permission = True)
+      cd_access='a')
 
     self.assertResourceCalled('Directory', '/hadoop/hbase/local',
       owner = 'hbase',

http://git-wip-us.apache.org/repos/asf/ambari/blob/f3b73cd3/ambari-server/src/test/python/stacks/2.0.6/HBASE/test_hbase_regionserver.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.0.6/HBASE/test_hbase_regionserver.py b/ambari-server/src/test/python/stacks/2.0.6/HBASE/test_hbase_regionserver.py
index bdd5954..1b0a211 100644
--- a/ambari-server/src/test/python/stacks/2.0.6/HBASE/test_hbase_regionserver.py
+++ b/ambari-server/src/test/python/stacks/2.0.6/HBASE/test_hbase_regionserver.py
@@ -132,7 +132,7 @@ class TestHbaseRegionServer(RMFTestCase):
       owner = 'hbase',
       mode=0775,
       recursive = True,
-      recursive_permission = True
+      cd_access='a'
     )
     self.assertResourceCalled('Directory', '/hadoop/hbase/local',
       owner = 'hbase',
@@ -242,7 +242,7 @@ class TestHbaseRegionServer(RMFTestCase):
       owner = 'hbase',
       mode=0775,
       recursive = True,
-      recursive_permission = True
+      cd_access='a'
     )
     self.assertResourceCalled('Directory', '/hadoop/hbase/local',
       owner = 'hbase',
@@ -363,7 +363,7 @@ class TestHbaseRegionServer(RMFTestCase):
       owner = 'hbase',
       mode = 0775,
       recursive = True,
-      recursive_permission = True)
+      cd_access='a')
 
     self.assertResourceCalled('Directory', '/hadoop/hbase/local',
       owner = 'hbase',

http://git-wip-us.apache.org/repos/asf/ambari/blob/f3b73cd3/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_datanode.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_datanode.py b/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_datanode.py
index 794a1e4..90c0ca0 100644
--- a/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_datanode.py
+++ b/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_datanode.py
@@ -391,7 +391,7 @@ class TestDatanode(RMFTestCase):
                               group = 'hadoop',
                               mode = 0755,
                               recursive = True,
-                              recursive_permission = True
+                              cd_access='a'
                               )
 
   def assert_configure_secured(self):
@@ -437,7 +437,7 @@ class TestDatanode(RMFTestCase):
                               group = 'hadoop',
                               mode = 0755,
                               recursive = True,
-                              recursive_permission = True
+                              cd_access='a'
                               )
 
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/f3b73cd3/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_journalnode.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_journalnode.py b/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_journalnode.py
index 588aefa..79f52ea 100644
--- a/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_journalnode.py
+++ b/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_journalnode.py
@@ -174,7 +174,7 @@ class TestJournalnode(RMFTestCase):
                               owner = 'hdfs',
                               group = 'hadoop',
                               recursive = True,
-                              recursive_permission = True
+                              cd_access='a'
                               )
     self.assertResourceCalled('Directory', '/etc/security/limits.d',
                               owner = 'root',
@@ -212,7 +212,7 @@ class TestJournalnode(RMFTestCase):
                               owner = 'hdfs',
                               group = 'hadoop',
                               recursive = True,
-                              recursive_permission = True
+                              cd_access='a'
                               )
     self.assertResourceCalled('Directory', '/etc/security/limits.d',
                               owner = 'root',

http://git-wip-us.apache.org/repos/asf/ambari/blob/f3b73cd3/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_namenode.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_namenode.py b/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_namenode.py
index 2832f32..441e697 100644
--- a/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_namenode.py
+++ b/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_namenode.py
@@ -733,7 +733,7 @@ class TestNamenode(RMFTestCase):
                               group = 'hadoop',
                               recursive = True,
                               mode = 0755,
-                              recursive_permission = True
+                              cd_access='a'
                               )
 
   def assert_configure_secured(self):
@@ -772,7 +772,7 @@ class TestNamenode(RMFTestCase):
                               group = 'hadoop',
                               recursive = True,
                               mode = 0755,
-                              recursive_permission = True
+                              cd_access='a'
                               )
 
   @patch("resource_management.libraries.script.Script.put_structured_out")

http://git-wip-us.apache.org/repos/asf/ambari/blob/f3b73cd3/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_snamenode.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_snamenode.py b/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_snamenode.py
index 37969e5..e750406 100644
--- a/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_snamenode.py
+++ b/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_snamenode.py
@@ -235,14 +235,14 @@ class TestSNamenode(RMFTestCase):
                               group = 'hadoop',
                               mode = 0755,
                               recursive = True,
-                              recursive_permission = True
+                              cd_access='a'
                               )
     self.assertResourceCalled('Directory', '/hadoop/hdfs/namesecondary2',
                               owner = 'hdfs',
                               group = 'hadoop',
                               mode = 0755,
                               recursive = True,
-                              recursive_permission = True
+                              cd_access='a'
     )
 
   def assert_configure_secured(self):
@@ -281,5 +281,5 @@ class TestSNamenode(RMFTestCase):
                               group = 'hadoop',
                               mode = 0755,
                               recursive = True,
-                              recursive_permission = True
+                              cd_access='a'
                               )

http://git-wip-us.apache.org/repos/asf/ambari/blob/f3b73cd3/ambari-server/src/test/python/stacks/2.0.6/OOZIE/test_oozie_server.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.0.6/OOZIE/test_oozie_server.py b/ambari-server/src/test/python/stacks/2.0.6/OOZIE/test_oozie_server.py
index fd717ec..5643bda 100644
--- a/ambari-server/src/test/python/stacks/2.0.6/OOZIE/test_oozie_server.py
+++ b/ambari-server/src/test/python/stacks/2.0.6/OOZIE/test_oozie_server.py
@@ -207,63 +207,63 @@ class TestOozieServer(RMFTestCase):
         group = 'hadoop',
         recursive = True,
         mode = 0755,
-        recursive_permission = True
+        cd_access='a'
     )
     self.assertResourceCalled('Directory', '/var/run/oozie',
                               owner = 'oozie',
                               group = 'hadoop',
                               recursive = True,
                               mode = 0755,
-                              recursive_permission = True
+                              cd_access='a'
                               )
     self.assertResourceCalled('Directory', '/var/log/oozie',
                               owner = 'oozie',
                               group = 'hadoop',
                               recursive = True,
                               mode = 0755,
-                              recursive_permission = True
+                              cd_access='a'
                               )
     self.assertResourceCalled('Directory', '/var/tmp/oozie',
                               owner = 'oozie',
                               group = 'hadoop',
                               recursive = True,
                               mode = 0755,
-                              recursive_permission = True
+                              cd_access='a'
                               )
     self.assertResourceCalled('Directory', '/hadoop/oozie/data',
                               owner = 'oozie',
                               group = 'hadoop',
                               recursive = True,
                               mode = 0755,
-                              recursive_permission = True
+                              cd_access='a'
                               )
     self.assertResourceCalled('Directory', '/var/lib/oozie/',
                               owner = 'oozie',
                               group = 'hadoop',
                               recursive = True,
                               mode = 0755,
-                              recursive_permission = True
+                              cd_access='a'
                               )
     self.assertResourceCalled('Directory', '/var/lib/oozie/oozie-server/webapps/',
                               owner = 'oozie',
                               group = 'hadoop',
                               recursive = True,
                               mode = 0755,
-                              recursive_permission = True
+                              cd_access='a'
                               )
     self.assertResourceCalled('Directory', '/var/lib/oozie/oozie-server/conf',
                               owner = 'oozie',
                               group = 'hadoop',
                               recursive = True,
                               mode = 0755,
-                              recursive_permission = True
+                              cd_access='a'
                               )
     self.assertResourceCalled('Directory', '/var/lib/oozie/oozie-server',
                               owner = 'oozie',
                               group = 'hadoop',
                               recursive = True,
                               mode = 0755,
-                              recursive_permission = True
+                              cd_access='a'
                               )
     self.assertResourceCalled('Directory', '/usr/lib/oozie/libext',
         recursive = True,
@@ -360,63 +360,63 @@ class TestOozieServer(RMFTestCase):
         group = 'hadoop',
         recursive = True,
         mode = 0755,
-        recursive_permission = True
+        cd_access='a'
     )
     self.assertResourceCalled('Directory', '/var/run/oozie',
                               owner = 'oozie',
                               group = 'hadoop',
                               recursive = True,
                               mode = 0755,
-                              recursive_permission = True
+                              cd_access='a'
                               )
     self.assertResourceCalled('Directory', '/var/log/oozie',
                               owner = 'oozie',
                               group = 'hadoop',
                               recursive = True,
                               mode = 0755,
-                              recursive_permission = True
+                              cd_access='a'
                               )
     self.assertResourceCalled('Directory', '/var/tmp/oozie',
                               owner = 'oozie',
                               group = 'hadoop',
                               recursive = True,
                               mode = 0755,
-                              recursive_permission = True
+                              cd_access='a'
                               )
     self.assertResourceCalled('Directory', '/hadoop/oozie/data',
                               owner = 'oozie',
                               group = 'hadoop',
                               recursive = True,
                               mode = 0755,
-                              recursive_permission = True
+                              cd_access='a'
                               )
     self.assertResourceCalled('Directory', '/var/lib/oozie/',
                               owner = 'oozie',
                               group = 'hadoop',
                               recursive = True,
                               mode = 0755,
-                              recursive_permission = True
+                              cd_access='a'
                               )
     self.assertResourceCalled('Directory', '/var/lib/oozie/oozie-server/webapps/',
                               owner = 'oozie',
                               group = 'hadoop',
                               recursive = True,
                               mode = 0755,
-                              recursive_permission = True
+                              cd_access='a'
                               )
     self.assertResourceCalled('Directory', '/var/lib/oozie/oozie-server/conf',
                               owner = 'oozie',
                               group = 'hadoop',
                               recursive = True,
                               mode = 0755,
-                              recursive_permission = True
+                              cd_access='a'
                               )
     self.assertResourceCalled('Directory', '/var/lib/oozie/oozie-server',
                               owner = 'oozie',
                               group = 'hadoop',
                               recursive = True,
                               mode = 0755,
-                              recursive_permission = True
+                              cd_access='a'
                               )
     self.assertResourceCalled('Directory', '/usr/lib/oozie/libext',
         recursive = True,

http://git-wip-us.apache.org/repos/asf/ambari/blob/f3b73cd3/ambari-server/src/test/python/stacks/2.0.6/YARN/test_nodemanager.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.0.6/YARN/test_nodemanager.py b/ambari-server/src/test/python/stacks/2.0.6/YARN/test_nodemanager.py
index 2854399..fbf01c6 100644
--- a/ambari-server/src/test/python/stacks/2.0.6/YARN/test_nodemanager.py
+++ b/ambari-server/src/test/python/stacks/2.0.6/YARN/test_nodemanager.py
@@ -204,7 +204,7 @@ class TestNodeManager(RMFTestCase):
                               mode = 0775,
                               recursive = True,
                               ignore_failures = True,
-                              recursive_permission=True
+                              cd_access='a'
                               )
     self.assertResourceCalled('Directory', '/hadoop/yarn/local1',
                               owner = 'yarn',
@@ -212,7 +212,7 @@ class TestNodeManager(RMFTestCase):
                               group = 'hadoop',
                               ignore_failures = True,
                               mode = 0775,
-                              recursive_permission=True
+                              cd_access='a'
                               )
     self.assertResourceCalled('Directory', '/hadoop/yarn/log',
                               owner = 'yarn',
@@ -220,7 +220,7 @@ class TestNodeManager(RMFTestCase):
                               recursive = True,
                               ignore_failures = True,
                               mode = 0775,
-                              recursive_permission=True
+                              cd_access='a'
                               )
     self.assertResourceCalled('Directory', '/hadoop/yarn/log1',
                               owner = 'yarn',
@@ -228,7 +228,7 @@ class TestNodeManager(RMFTestCase):
                               recursive = True,
                               ignore_failures = True,
                               mode = 0775,
-                              recursive_permission=True
+                              cd_access='a'
                               )
     self.assertResourceCalled('Directory', '/var/run/hadoop-yarn',
       owner = 'yarn',
@@ -428,7 +428,7 @@ class TestNodeManager(RMFTestCase):
                               recursive = True,
                               ignore_failures = True,
                               mode = 0775,
-                              recursive_permission=True
+                              cd_access='a'
                               )
     self.assertResourceCalled('Directory', '/hadoop/yarn/log',
                               owner = 'yarn',
@@ -436,7 +436,7 @@ class TestNodeManager(RMFTestCase):
                               recursive = True,
                               ignore_failures = True,
                               mode = 0775,
-                              recursive_permission=True
+                              cd_access='a'
                               )
     self.assertResourceCalled('Directory', '/var/run/hadoop-yarn',
       owner = 'yarn',

http://git-wip-us.apache.org/repos/asf/ambari/blob/f3b73cd3/ambari-server/src/test/python/stacks/2.0.6/ZOOKEEPER/test_zookeeper_client.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.0.6/ZOOKEEPER/test_zookeeper_client.py b/ambari-server/src/test/python/stacks/2.0.6/ZOOKEEPER/test_zookeeper_client.py
index aa82924..68ab79e 100644
--- a/ambari-server/src/test/python/stacks/2.0.6/ZOOKEEPER/test_zookeeper_client.py
+++ b/ambari-server/src/test/python/stacks/2.0.6/ZOOKEEPER/test_zookeeper_client.py
@@ -68,7 +68,7 @@ class TestZookeeperClient(RMFTestCase):
       owner = 'zookeeper',
       group = 'hadoop',
       recursive = True,
-      recursive_permission = True
+      cd_access='a'
     )
     self.assertResourceCalled('File',
                               '/etc/zookeeper/conf/log4j.properties',
@@ -126,7 +126,7 @@ class TestZookeeperClient(RMFTestCase):
       owner = 'zookeeper',
       group = 'hadoop',
       recursive = True,
-      recursive_permission = True
+      cd_access='a'
     )
     self.assertResourceCalled('File',
                               '/etc/zookeeper/conf/log4j.properties',

http://git-wip-us.apache.org/repos/asf/ambari/blob/f3b73cd3/ambari-server/src/test/python/stacks/2.0.6/ZOOKEEPER/test_zookeeper_server.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.0.6/ZOOKEEPER/test_zookeeper_server.py b/ambari-server/src/test/python/stacks/2.0.6/ZOOKEEPER/test_zookeeper_server.py
index a1d9a15..b0462ff 100644
--- a/ambari-server/src/test/python/stacks/2.0.6/ZOOKEEPER/test_zookeeper_server.py
+++ b/ambari-server/src/test/python/stacks/2.0.6/ZOOKEEPER/test_zookeeper_server.py
@@ -147,7 +147,7 @@ class TestZookeeperServer(RMFTestCase):
       owner = 'zookeeper',
       group = 'hadoop',
       recursive = True,
-      recursive_permission = True
+      cd_access='a'
     )
     self.assertResourceCalled('File', '/hadoop/zookeeper/myid',
       content = '1',
@@ -200,7 +200,7 @@ class TestZookeeperServer(RMFTestCase):
       owner = 'zookeeper',
       group = 'hadoop',
       recursive = True,
-      recursive_permission = True
+      cd_access='a'
     )
     self.assertResourceCalled('File', '/hadoop/zookeeper/myid',
       content = '1',

http://git-wip-us.apache.org/repos/asf/ambari/blob/f3b73cd3/ambari-server/src/test/python/stacks/2.0.6/hooks/before-ANY/test_before_any.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.0.6/hooks/before-ANY/test_before_any.py b/ambari-server/src/test/python/stacks/2.0.6/hooks/before-ANY/test_before_any.py
index 988ab2d..fe36f2e 100644
--- a/ambari-server/src/test/python/stacks/2.0.6/hooks/before-ANY/test_before_any.py
+++ b/ambari-server/src/test/python/stacks/2.0.6/hooks/before-ANY/test_before_any.py
@@ -131,7 +131,7 @@ class TestHookBeforeInstall(RMFTestCase):
         owner = 'hbase',
         mode = 0775,
         recursive = True,
-        recursive_permission = True
+        cd_access='a'
     )
     self.assertResourceCalled('File', '/tmp/changeUid.sh',
         content = StaticFile('changeToSecureUid.sh'),

http://git-wip-us.apache.org/repos/asf/ambari/blob/f3b73cd3/ambari-server/src/test/python/stacks/2.0.6/hooks/before-INSTALL/test_before_install.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.0.6/hooks/before-INSTALL/test_before_install.py b/ambari-server/src/test/python/stacks/2.0.6/hooks/before-INSTALL/test_before_install.py
index 86acc7d..a54c6a6 100644
--- a/ambari-server/src/test/python/stacks/2.0.6/hooks/before-INSTALL/test_before_install.py
+++ b/ambari-server/src/test/python/stacks/2.0.6/hooks/before-INSTALL/test_before_install.py
@@ -47,10 +47,12 @@ class TestHookBeforeInstall(RMFTestCase):
     )
     self.assertResourceCalled('Directory', '/usr/jdk64',)
     self.assertResourceCalled('Execute', ('chmod', 'a+x', u'/usr/jdk64'),
-        not_if = 'test -e /usr/jdk64/jdk1.7.0_45/bin/java',
         sudo = True,
     )
     self.assertResourceCalled('Execute', 'mkdir -p /tmp/jdk && cd /tmp/jdk && tar -xf /tmp/AMBARI-artifacts//jdk-7u67-linux-x64.tar.gz && sudo cp -r /tmp/jdk/* /usr/jdk64',
         not_if = 'test -e /usr/jdk64/jdk1.7.0_45/bin/java',
     )
+    self.assertResourceCalled('Execute', ('chgrp', '-R', u'hadoop', u'/usr/jdk64/jdk1.7.0_45'),
+        sudo = True,
+    )
     self.assertNoMoreResources()

http://git-wip-us.apache.org/repos/asf/ambari/blob/f3b73cd3/ambari-server/src/test/python/stacks/2.1/FALCON/test_falcon_server.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.1/FALCON/test_falcon_server.py b/ambari-server/src/test/python/stacks/2.1/FALCON/test_falcon_server.py
index 2e37e65..8f1f338 100644
--- a/ambari-server/src/test/python/stacks/2.1/FALCON/test_falcon_server.py
+++ b/ambari-server/src/test/python/stacks/2.1/FALCON/test_falcon_server.py
@@ -132,7 +132,7 @@ class TestFalconServer(RMFTestCase):
     self.assertResourceCalled('Directory', '/hadoop/falcon',
                               owner = 'falcon',
                               recursive = True,
-                              recursive_permission = True
+                              cd_access='a'
                               )
     self.assertResourceCalled('Directory', '/hadoop/falcon/embeddedmq',
                               owner = 'falcon'

http://git-wip-us.apache.org/repos/asf/ambari/blob/f3b73cd3/ambari-server/src/test/python/stacks/2.1/STORM/test_storm_base.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.1/STORM/test_storm_base.py b/ambari-server/src/test/python/stacks/2.1/STORM/test_storm_base.py
index 6e6e2eb..33d9309 100644
--- a/ambari-server/src/test/python/stacks/2.1/STORM/test_storm_base.py
+++ b/ambari-server/src/test/python/stacks/2.1/STORM/test_storm_base.py
@@ -40,19 +40,19 @@ class TestStormBase(RMFTestCase):
       owner = 'storm',
       group = 'hadoop',
       recursive = True,
-      recursive_permission = True
+      cd_access='a'
     )
     self.assertResourceCalled('Directory', '/hadoop/storm',
       owner = 'storm',
       group = 'hadoop',
       recursive = True,
-      recursive_permission = True
+      cd_access='a'
     )
     self.assertResourceCalled('Directory', '/etc/storm/conf',
       owner = 'storm',
       group = 'hadoop',
       recursive = True,
-      recursive_permission = True
+      cd_access='a'
     )
     self.assertResourceCalled('File', '/etc/storm/conf/config.yaml',
       owner = 'storm',
@@ -82,19 +82,19 @@ class TestStormBase(RMFTestCase):
       owner = 'storm',
       group = 'hadoop',
       recursive = True,
-      recursive_permission = True
+      cd_access='a'
     )
     self.assertResourceCalled('Directory', '/hadoop/storm',
       owner = 'storm',
       group = 'hadoop',
       recursive = True,
-      recursive_permission = True
+      cd_access='a'
     )
     self.assertResourceCalled('Directory', '/etc/storm/conf',
       owner = 'storm',
       group = 'hadoop',
       recursive = True,
-      recursive_permission = True
+      cd_access='a'
     )
     self.assertResourceCalled('File', '/etc/storm/conf/config.yaml',
       owner = 'storm',

http://git-wip-us.apache.org/repos/asf/ambari/blob/f3b73cd3/ambari-server/src/test/python/stacks/2.1/YARN/test_apptimelineserver.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.1/YARN/test_apptimelineserver.py b/ambari-server/src/test/python/stacks/2.1/YARN/test_apptimelineserver.py
index 79e6fe7..8658889 100644
--- a/ambari-server/src/test/python/stacks/2.1/YARN/test_apptimelineserver.py
+++ b/ambari-server/src/test/python/stacks/2.1/YARN/test_apptimelineserver.py
@@ -161,7 +161,7 @@ class TestAppTimelineServer(RMFTestCase):
                               owner = 'yarn',
                               group = 'hadoop',
                               recursive = True,
-                              recursive_permission = True
+                              cd_access='a'
                               )
     self.assertResourceCalled('File', '/etc/hadoop/conf/yarn.exclude',
                               owner = 'yarn',