AMBARI-3242. HBase, Zookeeper and Oozie failed to start when adding services after initial cluster setup. (Vladimir Tkhir via swagle)
diff --git a/ambari-agent/src/main/puppet/modules/hdp-hbase/manifests/master.pp b/ambari-agent/src/main/puppet/modules/hdp-hbase/manifests/master.pp
index c16b1af..0730bcb 100644
--- a/ambari-agent/src/main/puppet/modules/hdp-hbase/manifests/master.pp
+++ b/ambari-agent/src/main/puppet/modules/hdp-hbase/manifests/master.pp
@@ -44,6 +44,14 @@
       type          => 'master',
       service_state => $service_state
     }
+    
+    hdp-hadoop::namenode::create_app_directories { 'create_app_directories' :
+      service_state => $service_state
+    }
+
+    hdp-hadoop::namenode::create_user_directories { 'create_user_directories' :
+      service_state => $service_state
+    }
 
     Hdp-hbase::Configfile<||>{hbase_master_hosts => $hdp::params::host_address}
   
diff --git a/ambari-agent/src/main/puppet/modules/hdp-oozie/manifests/server.pp b/ambari-agent/src/main/puppet/modules/hdp-oozie/manifests/server.pp
index 5930296..3f39c8d 100644
--- a/ambari-agent/src/main/puppet/modules/hdp-oozie/manifests/server.pp
+++ b/ambari-agent/src/main/puppet/modules/hdp-oozie/manifests/server.pp
@@ -51,6 +51,14 @@
       }
     }
 
+    hdp-hadoop::namenode::create_app_directories { 'create_app_directories' :
+      service_state => $service_state
+    }
+
+    hdp-hadoop::namenode::create_user_directories { 'create_user_directories' :
+      service_state => $service_state
+    }
+
     #installs package, creates user, sets configuration
     class{ 'hdp-oozie' : 
       service_state => $service_state,
@@ -65,7 +73,7 @@
     }
   
     #top level does not need anchors
-    Class['hdp-oozie'] -> Class['hdp-oozie::service']
+    Hdp-Hadoop::Namenode::Create_app_directories['create_app_directories'] -> Hdp-Hadoop::Namenode::Create_user_directories['create_user_directories'] -> Class['hdp-oozie'] -> Class['hdp-oozie::service']
   } else {
     hdp_fail("TODO not implemented yet: service_state = ${service_state}")
   }
diff --git a/ambari-agent/src/main/puppet/modules/hdp-zookeeper/manifests/service.pp b/ambari-agent/src/main/puppet/modules/hdp-zookeeper/manifests/service.pp
index 0456520..2a7799c 100644
--- a/ambari-agent/src/main/puppet/modules/hdp-zookeeper/manifests/service.pp
+++ b/ambari-agent/src/main/puppet/modules/hdp-zookeeper/manifests/service.pp
@@ -69,13 +69,21 @@
     }
   }
 
+  hdp-hadoop::namenode::create_app_directories { 'create_app_directories' :
+    service_state => $service_state
+  }
+
+  hdp-hadoop::namenode::create_user_directories { 'create_user_directories' :
+    service_state => $service_state
+  }
+
   if ($ensure == 'uninstalled') {
     anchor{'hdp-zookeeper::service::begin':} -> Hdp::Directory_recursive_create<|context_tag == 'zk_service'|> ->  anchor{'hdp-zookeeper::service::end':}
   } else {
     class { 'hdp-zookeeper::set_myid': myid => $myid}
 
-    anchor{'hdp-zookeeper::service::begin':} -> Hdp::Directory_recursive_create<|context_tag == 'zk_service'|> -> 
-    Class['hdp-zookeeper::set_myid'] -> anchor{'hdp-zookeeper::service::end':}
+    anchor{'hdp-zookeeper::service::begin':} -> Hdp-hadoop::Namenode::Create_user_directories['create_user_directories'] -> Hdp-hadoop::Namenode::Create_app_directories['create_app_directories'] -> 
+    Hdp::Directory_recursive_create<|context_tag == 'zk_service'|> -> Class['hdp-zookeeper::set_myid'] -> anchor{'hdp-zookeeper::service::end':}
 
     if ($daemon_cmd != undef) {
       Class['hdp-zookeeper::set_myid'] -> Hdp::Exec[$daemon_cmd] -> Anchor['hdp-zookeeper::service::end']