Browse Source

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

Andrew Onishuk 10 years ago
parent
commit
f3b73cd3a4
31 changed files with 116 additions and 74 deletions
  1. 15 3
      ambari-common/src/main/python/resource_management/core/providers/system.py
  2. 22 0
      ambari-common/src/main/python/resource_management/core/resources/system.py
  3. 3 0
      ambari-common/src/main/python/resource_management/core/sudo.py
  4. 3 3
      ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/falcon.py
  5. 1 1
      ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/hbase.py
  6. 1 1
      ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/hdfs_datanode.py
  7. 1 1
      ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/hdfs_namenode.py
  8. 1 1
      ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/hdfs_snamenode.py
  9. 1 1
      ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/journalnode.py
  10. 1 1
      ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie.py
  11. 1 1
      ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/storm.py
  12. 2 2
      ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/yarn.py
  13. 1 1
      ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/zookeeper.py
  14. 1 1
      ambari-server/src/main/resources/stacks/HDP/2.0.6/hooks/before-ANY/scripts/shared_initialization.py
  15. 5 2
      ambari-server/src/main/resources/stacks/HDP/2.0.6/hooks/before-INSTALL/scripts/shared_initialization.py
  16. 2 2
      ambari-server/src/test/python/stacks/2.0.6/HBASE/test_hbase_client.py
  17. 3 3
      ambari-server/src/test/python/stacks/2.0.6/HBASE/test_hbase_master.py
  18. 3 3
      ambari-server/src/test/python/stacks/2.0.6/HBASE/test_hbase_regionserver.py
  19. 2 2
      ambari-server/src/test/python/stacks/2.0.6/HDFS/test_datanode.py
  20. 2 2
      ambari-server/src/test/python/stacks/2.0.6/HDFS/test_journalnode.py
  21. 2 2
      ambari-server/src/test/python/stacks/2.0.6/HDFS/test_namenode.py
  22. 3 3
      ambari-server/src/test/python/stacks/2.0.6/HDFS/test_snamenode.py
  23. 18 18
      ambari-server/src/test/python/stacks/2.0.6/OOZIE/test_oozie_server.py
  24. 6 6
      ambari-server/src/test/python/stacks/2.0.6/YARN/test_nodemanager.py
  25. 2 2
      ambari-server/src/test/python/stacks/2.0.6/ZOOKEEPER/test_zookeeper_client.py
  26. 2 2
      ambari-server/src/test/python/stacks/2.0.6/ZOOKEEPER/test_zookeeper_server.py
  27. 1 1
      ambari-server/src/test/python/stacks/2.0.6/hooks/before-ANY/test_before_any.py
  28. 3 1
      ambari-server/src/test/python/stacks/2.0.6/hooks/before-INSTALL/test_before_install.py
  29. 1 1
      ambari-server/src/test/python/stacks/2.1/FALCON/test_falcon_server.py
  30. 6 6
      ambari-server/src/test/python/stacks/2.1/STORM/test_storm_base.py
  31. 1 1
      ambari-server/src/test/python/stacks/2.1/YARN/test_apptimelineserver.py

+ 15 - 3
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):

+ 22 - 0
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"]
 

+ 3 - 0
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)

+ 3 - 3
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, "..")),

+ 1 - 1
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,

+ 1 - 1
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,

+ 1 - 1
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",
   )
 
 

+ 1 - 1
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)

+ 1 - 1
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
     )

+ 1 - 1
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,

+ 1 - 1
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"),

+ 2 - 2
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,

+ 1 - 1
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
   )
 

+ 1 - 1
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)
     

+ 5 - 2
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

+ 2 - 2
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',

+ 3 - 3
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',

+ 3 - 3
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',

+ 2 - 2
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'
                               )
 
 

+ 2 - 2
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',

+ 2 - 2
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")

+ 3 - 3
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'
                               )

+ 18 - 18
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,

+ 6 - 6
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',

+ 2 - 2
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',

+ 2 - 2
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',

+ 1 - 1
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'),

+ 3 - 1
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()

+ 1 - 1
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'

+ 6 - 6
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',

+ 1 - 1
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',