You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@slider.apache.org by sm...@apache.org on 2014/08/24 04:58:23 UTC

[09/32] git commit: SLIDER-181. Slider support for Storm application package (changes to take advantage of new packaging constructs)

SLIDER-181. Slider support for Storm application package (changes to take advantage of new packaging constructs)


Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/111e03f3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/111e03f3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/111e03f3

Branch: refs/heads/feature/hbase_win_package
Commit: 111e03f37b6154ef9e8827e030c262afeac2d763
Parents: 0efb806
Author: Sumit Mohanty <sm...@hortonworks.com>
Authored: Thu Aug 21 13:26:09 2014 -0700
Committer: Sumit Mohanty <sm...@hortonworks.com>
Committed: Thu Aug 21 13:26:09 2014 -0700

----------------------------------------------------------------------
 app-packages/hbase/package/scripts/hbase.py     |  5 +-
 app-packages/hbase/package/scripts/params.py    |  1 +
 app-packages/storm/appConfig.json               | 88 +-------------------
 app-packages/storm/configuration/global.xml     | 39 ---------
 app-packages/storm/configuration/storm-env.xml  | 40 +++++++++
 app-packages/storm/configuration/storm-site.xml | 15 +---
 app-packages/storm/metainfo.xml                 | 14 ++++
 app-packages/storm/package/scripts/params.py    |  8 +-
 app-packages/storm/package/scripts/storm.py     |  7 +-
 .../storm/package/scripts/yaml_config.py        |  7 +-
 .../core/providers/system.py                    |  8 ++
 .../core/resources/system.py                    |  1 +
 12 files changed, 90 insertions(+), 143 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/111e03f3/app-packages/hbase/package/scripts/hbase.py
----------------------------------------------------------------------
diff --git a/app-packages/hbase/package/scripts/hbase.py b/app-packages/hbase/package/scripts/hbase.py
index 32f267f..a979bc6 100644
--- a/app-packages/hbase/package/scripts/hbase.py
+++ b/app-packages/hbase/package/scripts/hbase.py
@@ -21,6 +21,7 @@ import os
 
 from resource_management import *
 import sys
+import shutil
 
 def hbase(name=None # 'master' or 'regionserver' or 'client'
               ):
@@ -35,10 +36,12 @@ def hbase(name=None # 'master' or 'regionserver' or 'client'
                          mode=0711
     )
     params.HdfsDirectory(None, action="create")
+
   Directory( params.conf_dir,
       owner = params.hbase_user,
       group = params.user_group,
-      recursive = True
+      recursive = True,
+      content = params.input_conf_files_dir
   )
 
   Directory (params.tmp_dir,

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/111e03f3/app-packages/hbase/package/scripts/params.py
----------------------------------------------------------------------
diff --git a/app-packages/hbase/package/scripts/params.py b/app-packages/hbase/package/scripts/params.py
index 431acb2..33e2bbf 100644
--- a/app-packages/hbase/package/scripts/params.py
+++ b/app-packages/hbase/package/scripts/params.py
@@ -51,6 +51,7 @@ regionserver_xmn_size = calc_xmn_from_xms(regionserver_heapsize, regionserver_xm
 pid_dir = status_params.pid_dir
 tmp_dir = config['configurations']['hbase-site']['hbase.tmp.dir']
 local_dir = substitute_vars(config['configurations']['hbase-site']['hbase.local.dir'], config['configurations']['hbase-site'])
+input_conf_files_dir = config['configurations']['global']['app_input_conf_dir']
 
 client_jaas_config_file = default('hbase_client_jaas_config_file', format("{conf_dir}/hbase_client_jaas.conf"))
 master_jaas_config_file = default('hbase_master_jaas_config_file', format("{conf_dir}/hbase_master_jaas.conf"))

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/111e03f3/app-packages/storm/appConfig.json
----------------------------------------------------------------------
diff --git a/app-packages/storm/appConfig.json b/app-packages/storm/appConfig.json
index 24078cf..1322a01 100644
--- a/app-packages/storm/appConfig.json
+++ b/app-packages/storm/appConfig.json
@@ -4,10 +4,9 @@
   },
   "global": {
     "application.def": "package/storm_v091.zip",
-    "config_types": "storm-site",
     "java_home": "/usr/jdk64/jdk1.7.0_45",
-    "package_list": "files/apache-storm-0.9.1.2.1.1.0-237.tar.gz",
     "create.default.zookeeper.node": "true",
+
     "site.global.app_user": "yarn",
     "site.global.app_root": "${AGENT_WORK_ROOT}/app/install/apache-storm-0.9.1.2.1.1.0-237",
     "site.global.user_group": "hadoop",
@@ -18,109 +17,28 @@
     "site.global.ganglia_server_port": "8668",
     "site.global.rest_api_port": "${STORM_REST_API.ALLOCATED_PORT}",
     "site.global.rest_api_admin_port": "${STORM_REST_API.ALLOCATED_PORT}",
-    "site.storm-site.topology.tuple.serializer": "backtype.storm.serialization.types.ListDelegateSerializer",
-    "site.storm-site.topology.workers": "1",
-    "site.storm-site.drpc.worker.threads": "64",
+
     "site.storm-site.storm.zookeeper.servers": "['${ZK_HOST}']",
-    "site.storm-site.supervisor.heartbeat.frequency.secs": "5",
-    "site.storm-site.topology.executor.send.buffer.size": "1024",
-    "site.storm-site.drpc.childopts": "-Xmx768m",
     "site.storm-site.nimbus.thrift.port": "${NIMBUS.ALLOCATED_PORT}",
-    "site.storm-site.storm.zookeeper.retry.intervalceiling.millis": "30000",
     "site.storm-site.storm.local.dir": "${AGENT_WORK_ROOT}/app/tmp/storm",
-    "site.storm-site.topology.receiver.buffer.size": "8",
-    "site.storm-site.storm.messaging.netty.client_worker_threads": "1",
     "site.storm-site.transactional.zookeeper.root": "/transactional",
-    "site.storm-site.drpc.request.timeout.secs": "600",
-    "site.storm-site.topology.skip.missing.kryo.registrations": "false",
-    "site.storm-site.worker.heartbeat.frequency.secs": "1",
-    "site.storm-site.zmq.hwm": "0",
-    "site.storm-site.storm.zookeeper.connection.timeout": "15000",
-    "site.storm-site.topology.max.error.report.per.interval": "5",
-    "site.storm-site.storm.messaging.netty.server_worker_threads": "1",
-    "site.storm-site.supervisor.worker.start.timeout.secs": "120",
-    "site.storm-site.zmq.threads": "1",
-    "site.storm-site.topology.acker.executors": "null",
-    "site.storm-site.storm.local.mode.zmq": "false",
-    "site.storm-site.topology.max.task.parallelism": "null",
     "site.storm-site.storm.zookeeper.port": "2181",
     "site.storm-site.nimbus.childopts": "-Xmx1024m -javaagent:${AGENT_WORK_ROOT}/app/install/apache-storm-0.9.1.2.1.1.0-237/contrib/storm-jmxetric/lib/jmxetric-1.0.4.jar=host=${NN_HOST},port=8668,wireformat31x=true,mode=multicast,config=${AGENT_WORK_ROOT}/app/install/apache-storm-0.9.1.2.1.1.0-237/contrib/storm-jmxetric/conf/jmxetric-conf.xml,process=Nimbus_JVM",
     "site.storm-site.worker.childopts": "-Xmx768m -javaagent:${AGENT_WORK_ROOT}/app/install/apache-storm-0.9.1.2.1.1.0-237/contrib/storm-jmxetric/lib/jmxetric-1.0.4.jar=host=${NN_HOST},port=8668,wireformat31x=true,mode=multicast,config=${AGENT_WORK_ROOT}/app/install/apache-storm-0.9.1.2.1.1.0-237/contrib/storm-jmxetric/conf/jmxetric-conf.xml,process=Worker_%ID%_JVM",
-    "site.storm-site.drpc.queue.size": "128",
-    "site.storm-site.storm.zookeeper.retry.times": "5",
-    "site.storm-site.nimbus.monitor.freq.secs": "10",
-    "site.storm-site.storm.cluster.mode": "distributed",
     "site.storm-site.dev.zookeeper.path": "${AGENT_WORK_ROOT}/app/tmp/dev-storm-zookeeper",
     "site.storm-site.drpc.invocations.port": "0",
     "site.storm-site.storm.zookeeper.root": "${DEF_ZK_PATH}",
-    "site.storm-site.logviewer.childopts": "-Xmx128m",
     "site.storm-site.transactional.zookeeper.port": "null",
-    "site.storm-site.topology.worker.childopts": "null",
-    "site.storm-site.topology.max.spout.pending": "null",
-    "site.storm-site.nimbus.cleanup.inbox.freq.secs": "600",
-    "site.storm-site.storm.messaging.netty.min_wait_ms": "100",
-    "site.storm-site.nimbus.task.timeout.secs": "30",
-    "site.storm-site.nimbus.thrift.max_buffer_size": "1048576",
-    "site.storm-site.topology.sleep.spout.wait.strategy.time.ms": "1",
-    "site.storm-site.topology.optimize": "true",
-    "site.storm-site.nimbus.reassign": "true",
-    "site.storm-site.storm.messaging.transport": "backtype.storm.messaging.netty.Context",
-    "site.storm-site.logviewer.appender.name": "A1",
     "site.storm-site.nimbus.host": "${NIMBUS_HOST}",
     "site.storm-site.ui.port": "${STORM_UI_SERVER.ALLOCATED_PORT}",
     "site.storm-site.supervisor.slots.ports": "[${SUPERVISOR.ALLOCATED_PORT}{DO_NOT_PROPAGATE},${SUPERVISOR.ALLOCATED_PORT}{DO_NOT_PROPAGATE}]",
-    "site.storm-site.nimbus.file.copy.expiration.secs": "600",
-    "site.storm-site.supervisor.monitor.frequency.secs": "3",
-    "site.storm-site.transactional.zookeeper.servers": "null",
-    "site.storm-site.zmq.linger.millis": "5000",
-    "site.storm-site.topology.error.throttle.interval.secs": "10",
-    "site.storm-site.topology.worker.shared.thread.pool.size": "4",
-    "site.storm-site.java.library.path": "/usr/local/lib:/opt/local/lib:/usr/lib",
-    "site.storm-site.topology.spout.wait.strategy": "backtype.storm.spout.SleepSpoutWaitStrategy",
-    "site.storm-site.task.heartbeat.frequency.secs": "3",
-    "site.storm-site.topology.transfer.buffer.size": "1024",
-    "site.storm-site.storm.zookeeper.session.timeout": "20000",
-    "site.storm-site.topology.executor.receive.buffer.size": "1024",
-    "site.storm-site.topology.stats.sample.rate": "0.05",
-    "site.storm-site.topology.fall.back.on.java.serialization": "true",
     "site.storm-site.supervisor.childopts": "-Xmx256m -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=0 -javaagent:${AGENT_WORK_ROOT}/app/install/apache-storm-0.9.1.2.1.1.0-237/contrib/storm-jmxetric/lib/jmxetric-1.0.4.jar=host=${NN_HOST},port=8668,wireformat31x=true,mode=multicast,config=${AGENT_WORK_ROOT}/app/install/apache-storm-0.9.1.2.1.1.0-237/contrib/storm-jmxetric/conf/jmxetric-conf.xml,process=Supervisor_JVM",
-    "site.storm-site.topology.enable.message.timeouts": "true",
-    "site.storm-site.storm.messaging.netty.max_wait_ms": "1000",
-    "site.storm-site.nimbus.topology.validator": "backtype.storm.nimbus.DefaultTopologyValidator",
-    "site.storm-site.nimbus.supervisor.timeout.secs": "60",
-    "site.storm-site.topology.disruptor.wait.strategy": "com.lmax.disruptor.BlockingWaitStrategy",
-    "site.storm-site.nimbus.inbox.jar.expiration.secs": "3600",
     "site.storm-site.drpc.port": "0",
-    "site.storm-site.topology.kryo.factory": "backtype.storm.serialization.DefaultKryoFactory",
-    "site.storm-site.storm.zookeeper.retry.interval": "1000",
-    "site.storm-site.storm.messaging.netty.max_retries": "30",
-    "site.storm-site.topology.tick.tuple.freq.secs": "null",
-    "site.storm-site.supervisor.enable": "true",
-    "site.storm-site.nimbus.task.launch.secs": "120",
-    "site.storm-site.task.refresh.poll.secs": "10",
-    "site.storm-site.topology.message.timeout.secs": "30",
-    "site.storm-site.storm.messaging.netty.buffer_size": "5242880",
-    "site.storm-site.topology.state.synchronization.timeout.secs": "60",
-    "site.storm-site.supervisor.worker.timeout.secs": "30",
-    "site.storm-site.topology.trident.batch.emit.interval.millis": "500",
-    "site.storm-site.topology.builtin.metrics.bucket.size.secs": "60",
-    "site.storm-site.storm.thrift.transport": "backtype.storm.security.auth.SimpleTransportPlugin",
-    "site.storm-site.logviewer.port": "${SUPERVISOR.ALLOCATED_PORT}{DO_NOT_PROPAGATE}",
-    "site.storm-site.topology.debug": "false"
+    "site.storm-site.logviewer.port": "${SUPERVISOR.ALLOCATED_PORT}{DO_NOT_PROPAGATE}"
   },
   "components": {
     "slider-appmaster": {
       "jvm.heapsize": "256M"
-    },
-    "NIMBUS": {
-    },
-    "STORM_REST_API": {
-    },
-    "STORM_UI_SERVER": {
-    },
-    "DRPC_SERVER": {
-    },
-    "SUPERVISOR": {
     }
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/111e03f3/app-packages/storm/configuration/global.xml
----------------------------------------------------------------------
diff --git a/app-packages/storm/configuration/global.xml b/app-packages/storm/configuration/global.xml
deleted file mode 100644
index 5cc9170..0000000
--- a/app-packages/storm/configuration/global.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
-<!--
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
--->
-
-<configuration>
-  <property>
-    <name>storm_user</name>
-    <value>storm</value>
-    <description></description>
-  </property>
-  <property>
-    <name>storm_log_dir</name>
-    <value>/var/log/storm</value>
-    <description></description>
-  </property>
-  <property>
-    <name>storm_pid_dir</name>
-    <value>/var/run/storm</value>
-    <description></description>
-  </property>
-</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/111e03f3/app-packages/storm/configuration/storm-env.xml
----------------------------------------------------------------------
diff --git a/app-packages/storm/configuration/storm-env.xml b/app-packages/storm/configuration/storm-env.xml
new file mode 100644
index 0000000..f315eb3
--- /dev/null
+++ b/app-packages/storm/configuration/storm-env.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<!--
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+
+<configuration>
+
+  <!-- storm-env.sh -->
+  <property>
+    <name>content</name>
+    <description>This is the jinja template for storm-env.sh file</description>
+    <value>
+#!/bin/bash
+
+# Set Storm specific environment variables here.
+
+# The java implementation to use.
+export JAVA_HOME={{java_home}}
+
+# export STORM_CONF_DIR=""
+    </value>
+  </property>
+</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/111e03f3/app-packages/storm/configuration/storm-site.xml
----------------------------------------------------------------------
diff --git a/app-packages/storm/configuration/storm-site.xml b/app-packages/storm/configuration/storm-site.xml
index 6eca8f9..b3cce6a 100644
--- a/app-packages/storm/configuration/storm-site.xml
+++ b/app-packages/storm/configuration/storm-site.xml
@@ -118,7 +118,7 @@
   </property>
   <property>
     <name>nimbus.childopts</name>
-    <value>-Xmx1024m -Djava.security.auth.login.config=/etc/storm/storm_jaas.conf -javaagent:/usr/lib/storm/contrib/storm-jmxetric/lib/jmxetric-1.0.4.jar=host={0},port=8649,wireformat31x=true,mode=multicast,config=/usr/lib/storm/contrib/storm-jmxetric/conf/jmxetric-conf.xml,process=Nimbus_JVM</value>
+    <value>-Xmx1024m -Djava.security.auth.login.config=/etc/storm/conf/storm_jaas.conf -javaagent:/usr/lib/storm/contrib/storm-jmxetric/lib/jmxetric-1.0.4.jar=host=localhost,port=8649,wireformat31x=true,mode=multicast,config=/usr/lib/storm/contrib/storm-jmxetric/conf/jmxetric-conf.xml,process=Nimbus_JVM</value>
     <description>This parameter is used by the storm-deploy project to configure the jvm options for the nimbus daemon.</description>
   </property>
   <property>
@@ -188,7 +188,7 @@
   </property>
   <property>
     <name>ui.childopts</name>
-    <value>-Xmx768m -Djava.security.auth.login.config=/etc/storm/storm_jaas.conf</value>
+    <value>-Xmx768m -Djava.security.auth.login.config=/etc/storm/conf/storm_jaas.conf</value>
     <description>Childopts for Storm UI Java process.</description>
   </property>
   <property>
@@ -264,7 +264,7 @@
   </property>
   <property>
     <name>supervisor.childopts</name>
-    <value>-Xmx256m -Djava.security.auth.login.config=/etc/storm/storm_jaas.conf -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=56431 -javaagent:/usr/lib/storm/contrib/storm-jmxetric/lib/jmxetric-1.0.4.jar=host={0},port=8650,wireformat31x=true,mode=multicast,config=/usr/lib/storm/contrib/storm-jmxetric/conf/jmxetric-conf.xml,process=Supervisor_JVM</value>
+    <value>-Xmx256m -Djava.security.auth.login.config=/etc/storm/conf/storm_jaas.conf -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=56431 -javaagent:/usr/lib/storm/contrib/storm-jmxetric/lib/jmxetric-1.0.4.jar=host=localhost,port=8650,wireformat31x=true,mode=multicast,config=/usr/lib/storm/contrib/storm-jmxetric/conf/jmxetric-conf.xml,process=Supervisor_JVM</value>
     <description>This parameter is used by the storm-deploy project to configure the jvm options for the supervisor daemon.</description>
   </property>
   <property>
@@ -291,15 +291,8 @@
     <description>How often the supervisor sends a heartbeat to the master.</description>
   </property>
   <property>
-    <name>supervisor.enable</name>
-    <value>true</value>
-    <description>Whether or not the supervisor should launch workers assigned to it. Defaults
-       to true -- and you should probably never change this value. This configuration
-       is used in the Storm unit tests.</description>
-  </property>
-  <property>
     <name>worker.childopts</name>
-    <value>-Xmx768m -javaagent:/usr/lib/storm/contrib/storm-jmxetric/lib/jmxetric-1.0.4.jar=host={0},port=8650,wireformat31x=true,mode=multicast,config=/usr/lib/storm/contrib/storm-jmxetric/conf/jmxetric-conf.xml,process=Worker_%ID%_JVM</value>
+    <value>-Xmx768m -javaagent:/usr/lib/storm/contrib/storm-jmxetric/lib/jmxetric-1.0.4.jar=host=localhost,port=8650,wireformat31x=true,mode=multicast,config=/usr/lib/storm/contrib/storm-jmxetric/conf/jmxetric-conf.xml,process=Worker_%ID%_JVM</value>
     <description>The jvm opts provided to workers launched by this supervisor. All \"%ID%\" substrings are replaced with an identifier for this worker.</description>
   </property>
   <property>

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/111e03f3/app-packages/storm/metainfo.xml
----------------------------------------------------------------------
diff --git a/app-packages/storm/metainfo.xml b/app-packages/storm/metainfo.xml
index dbe8549..70d369c 100644
--- a/app-packages/storm/metainfo.xml
+++ b/app-packages/storm/metainfo.xml
@@ -155,5 +155,19 @@
         </packages>
       </osSpecific>
     </osSpecifics>
+
+    <configFiles>
+      <configFile>
+        <type>yaml</type>
+        <fileName>storm.yaml</fileName>
+        <dictionaryName>storm-site</dictionaryName>
+      </configFile>
+      <configFile>
+        <type>env</type>
+        <fileName>storm-env.sh</fileName>
+        <dictionaryName>storm-env</dictionaryName>
+      </configFile>
+    </configFiles>
+
   </application>
 </metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/111e03f3/app-packages/storm/package/scripts/params.py
----------------------------------------------------------------------
diff --git a/app-packages/storm/package/scripts/params.py b/app-packages/storm/package/scripts/params.py
index cf21b27..3e1620b 100644
--- a/app-packages/storm/package/scripts/params.py
+++ b/app-packages/storm/package/scripts/params.py
@@ -34,12 +34,12 @@ user_group = config['configurations']['global']['user_group']
 java64_home = config['hostLevelParams']['java_home']
 nimbus_host = config['configurations']['storm-site']['nimbus.host']
 nimbus_port = config['configurations']['storm-site']['nimbus.thrift.port']
-nimbus_host = config['configurations']['storm-site']['nimbus.host']
 rest_api_port = config['configurations']['global']['rest_api_port']
 rest_api_admin_port = config['configurations']['global']['rest_api_admin_port']
 rest_api_conf_file = format("{conf_dir}/config.yaml")
 rest_lib_dir = format("{app_root}/contrib/storm-rest")
 storm_bin = format("{app_root}/bin/storm")
+storm_env_sh_template = config['configurations']['storm-env']['content']
 
 ganglia_installed = config['configurations']['global']['ganglia_enabled']
 if ganglia_installed:
@@ -52,7 +52,7 @@ security_enabled = ( not is_empty(_authentication) and _authentication == 'kerbe
 
 if security_enabled:
   _hostname_lowercase = config['hostname'].lower()
-  _kerberos_domain = config['configurations']['global']['kerberos_domain']
-  _storm_principal_name = config['configurations']['global']['storm_principal_name']
+  _kerberos_domain = config['configurations']['storm-env']['kerberos_domain']
+  _storm_principal_name = config['configurations']['storm-env']['storm_principal_name']
   storm_jaas_principal = _storm_principal_name.replace('_HOST', _hostname_lowercase)
-  storm_keytab_path = config['configurations']['global']['storm_keytab']
+  storm_keytab_path = config['configurations']['storm-env']['storm_keytab']

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/111e03f3/app-packages/storm/package/scripts/storm.py
----------------------------------------------------------------------
diff --git a/app-packages/storm/package/scripts/storm.py b/app-packages/storm/package/scripts/storm.py
index bce272b..efca073 100644
--- a/app-packages/storm/package/scripts/storm.py
+++ b/app-packages/storm/package/scripts/storm.py
@@ -43,7 +43,12 @@ def storm():
                owner = params.storm_user,
                group = params.user_group
   )
-  
+
+  File(format("{conf_dir}/storm-env.sh"),
+    owner=params.storm_user,
+    content=InlineTemplate(params.storm_env_sh_template)
+  )
+
   if params.security_enabled:
     TemplateConfig( format("{conf_dir}/storm_jaas.conf"),
       owner = params.storm_user

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/111e03f3/app-packages/storm/package/scripts/yaml_config.py
----------------------------------------------------------------------
diff --git a/app-packages/storm/package/scripts/yaml_config.py b/app-packages/storm/package/scripts/yaml_config.py
index 39261be..d25089c 100644
--- a/app-packages/storm/package/scripts/yaml_config.py
+++ b/app-packages/storm/package/scripts/yaml_config.py
@@ -50,6 +50,10 @@ def escape_yaml_propetry(value):
     
   return value
 
+def yaml_inline_template(configurations):
+  return source.InlineTemplate('''{% for key, value in configurations_dict.items() %}{{ key }}: {{ escape_yaml_propetry(value) }}
+{% endfor %}''', configurations_dict=configurations, extra_imports=[escape_yaml_propetry])
+
 def yaml_config(
   filename,
   configurations = None,
@@ -58,8 +62,7 @@ def yaml_config(
   owner = None,
   group = None
 ):
-    config_content = source.InlineTemplate('''{% for key, value in configurations_dict.items() %}{{ key }}: {{ escape_yaml_propetry(value) }}
-{% endfor %}''', configurations_dict=configurations, extra_imports=[escape_yaml_propetry])
+    config_content = yaml_inline_template(configurations)
 
     File (format("{conf_dir}/{filename}"),
       content = config_content,

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/111e03f3/slider-agent/src/main/python/resource_management/core/providers/system.py
----------------------------------------------------------------------
diff --git a/slider-agent/src/main/python/resource_management/core/providers/system.py b/slider-agent/src/main/python/resource_management/core/providers/system.py
index 6969c62..7c56bfc 100644
--- a/slider-agent/src/main/python/resource_management/core/providers/system.py
+++ b/slider-agent/src/main/python/resource_management/core/providers/system.py
@@ -166,6 +166,14 @@ class DirectoryProvider(Provider):
 
     _ensure_metadata(path, self.resource.owner, self.resource.group,
                         mode=self.resource.mode)
+    if self.resource.content and os.path.isdir(self.resource.content):
+      Logger.info("Copying from " + self.resource.content + " to " + path)
+      for item in os.listdir(self.resource.content):
+        src = os.path.join(self.resource.content, item)
+        dst = os.path.join(path, item)
+        if not os.path.isdir(src):
+          Logger.info("Copying " + src + " as " + dst)
+          shutil.copy2(src, dst)
 
   def action_delete(self):
     path = self.resource.path

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/111e03f3/slider-agent/src/main/python/resource_management/core/resources/system.py
----------------------------------------------------------------------
diff --git a/slider-agent/src/main/python/resource_management/core/resources/system.py b/slider-agent/src/main/python/resource_management/core/resources/system.py
index a63d993..3c3513b 100644
--- a/slider-agent/src/main/python/resource_management/core/resources/system.py
+++ b/slider-agent/src/main/python/resource_management/core/resources/system.py
@@ -45,6 +45,7 @@ class Directory(Resource):
   mode = ResourceArgument()
   owner = ResourceArgument()
   group = ResourceArgument()
+  content = ResourceArgument()
   recursive = BooleanArgument(default=False) # this work for 'create', 'delete' is anyway recursive
 
   actions = Resource.actions + ["create", "delete"]