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/07/09 02:47:54 UTC

[1/2] SLIDER-181. Storm App Package (minor config changes and folder name changes)

Repository: incubator-slider
Updated Branches:
  refs/heads/develop 6f677f6a0 -> 32c7ea98a


http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/32c7ea98/app-packages/storm/appConfig.json
----------------------------------------------------------------------
diff --git a/app-packages/storm/appConfig.json b/app-packages/storm/appConfig.json
new file mode 100644
index 0000000..6d6aa3a
--- /dev/null
+++ b/app-packages/storm/appConfig.json
@@ -0,0 +1,126 @@
+{
+  "schema": "http://example.org/specification/v2.0.0",
+  "metadata": {
+  },
+  "global": {
+    "application.def": "/slider/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",
+    "site.global.security_enabled": "false",
+    "site.global.ganglia_server_host": "${NN_HOST}",
+    "site.global.ganglia_server_id": "Application2",
+    "site.global.ganglia_enabled":"true",
+    "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}]",
+    "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": "0",
+    "site.storm-site.topology.debug": "false"
+  },
+  "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/32c7ea98/app-packages/storm/configuration/global.xml
----------------------------------------------------------------------
diff --git a/app-packages/storm/configuration/global.xml b/app-packages/storm/configuration/global.xml
new file mode 100644
index 0000000..5cc9170
--- /dev/null
+++ b/app-packages/storm/configuration/global.xml
@@ -0,0 +1,39 @@
+<?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/32c7ea98/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
new file mode 100644
index 0000000..6eca8f9
--- /dev/null
+++ b/app-packages/storm/configuration/storm-site.xml
@@ -0,0 +1,587 @@
+<?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>java.library.path</name>
+    <value>/usr/local/lib:/opt/local/lib:/usr/lib</value>
+    <description>This value is passed to spawned JVMs (e.g., Nimbus, Supervisor, and Workers)
+       for the java.library.path value. java.library.path tells the JVM where
+       to look for native libraries. It is necessary to set this config correctly since
+       Storm uses the ZeroMQ and JZMQ native libs. </description>
+  </property>
+  <property>
+    <name>storm.local.dir</name>
+    <value>/hadoop/storm</value>
+    <description>A directory on the local filesystem used by Storm for any local
+       filesystem usage it needs. The directory must exist and the Storm daemons must
+       have permission to read/write from this location.</description>
+  </property>
+  <property>
+    <name>storm.zookeeper.servers</name>
+    <value>['localhost']</value>
+    <description>A list of hosts of ZooKeeper servers used to manage the cluster.</description>
+  </property>
+  <property>
+    <name>storm.zookeeper.port</name>
+    <value>2181</value>
+    <description>The port Storm will use to connect to each of the ZooKeeper servers.</description>
+  </property>
+  <property>
+    <name>storm.zookeeper.root</name>
+    <value>/storm</value>
+    <description>The root location at which Storm stores data in ZooKeeper.</description>
+  </property>
+  <property>
+    <name>storm.zookeeper.session.timeout</name>
+    <value>20000</value>
+    <description>The session timeout for clients to ZooKeeper.</description>
+  </property>
+  <property>
+    <name>storm.zookeeper.connection.timeout</name>
+    <value>15000</value>
+    <description>The connection timeout for clients to ZooKeeper.</description>
+  </property>
+  <property>
+    <name>storm.zookeeper.retry.times</name>
+    <value>5</value>
+    <description>The number of times to retry a Zookeeper operation.</description>
+  </property>
+  <property>
+    <name>storm.zookeeper.retry.interval</name>
+    <value>1000</value>
+    <description>The interval between retries of a Zookeeper operation.</description>
+  </property>
+  <property>
+    <name>storm.zookeeper.retry.intervalceiling.millis</name>
+    <value>30000</value>
+    <description>The ceiling of the interval between retries of a Zookeeper operation.</description>
+  </property>
+  <property>
+    <name>storm.cluster.mode</name>
+    <value>distributed</value>
+    <description>The mode this Storm cluster is running in. Either "distributed" or "local".</description>
+  </property>
+  <property>
+    <name>storm.local.mode.zmq</name>
+    <value>false</value>
+    <description>Whether or not to use ZeroMQ for messaging in local mode. If this is set
+       to false, then Storm will use a pure-Java messaging system. The purpose
+       of this flag is to make it easy to run Storm in local mode by eliminating
+       the need for native dependencies, which can be difficult to install.
+    </description>
+  </property>
+  <property>
+    <name>storm.thrift.transport</name>
+    <value>backtype.storm.security.auth.SimpleTransportPlugin</value>
+    <description>The transport plug-in for Thrift client/server communication.</description>
+  </property>
+  <property>
+    <name>storm.messaging.transport</name>
+    <value>backtype.storm.messaging.netty.Context</value>
+    <description>The transporter for communication among Storm tasks.</description>
+  </property>
+  <property>
+    <name>nimbus.host</name>
+    <value>localhost</value>
+    <description>The host that the master server is running on.</description>
+  </property>
+  <property>
+    <name>nimbus.thrift.port</name>
+    <value>6627</value>
+    <description> Which port the Thrift interface of Nimbus should run on. Clients should
+       connect to this port to upload jars and submit topologies.</description>
+  </property>
+  <property>
+    <name>nimbus.thrift.max_buffer_size</name>
+    <value>1048576</value>
+    <description>The maximum buffer size thrift should use when reading messages.</description>
+  </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>
+    <description>This parameter is used by the storm-deploy project to configure the jvm options for the nimbus daemon.</description>
+  </property>
+  <property>
+    <name>nimbus.task.timeout.secs</name>
+    <value>30</value>
+    <description>How long without heartbeating a task can go before nimbus will consider the task dead and reassign it to another location.</description>
+  </property>
+  <property>
+    <name>nimbus.supervisor.timeout.secs</name>
+    <value>60</value>
+    <description>How long before a supervisor can go without heartbeating before nimbus considers it dead and stops assigning new work to it.</description>
+  </property>
+  <property>
+    <name>nimbus.monitor.freq.secs</name>
+    <value>10</value>
+    <description>
+      How often nimbus should wake up to check heartbeats and do reassignments. Note
+       that if a machine ever goes down Nimbus will immediately wake up and take action.
+       This parameter is for checking for failures when there's no explicit event like that occuring.
+    </description>
+  </property>
+  <property>
+    <name>nimbus.cleanup.inbox.freq.secs</name>
+    <value>600</value>
+    <description>How often nimbus should wake the cleanup thread to clean the inbox.</description>
+  </property>
+  <property>
+    <name>nimbus.inbox.jar.expiration.secs</name>
+    <value>3600</value>
+    <description>
+      The length of time a jar file lives in the inbox before being deleted by the cleanup thread.
+
+       Probably keep this value greater than or equal to NIMBUS_CLEANUP_INBOX_JAR_EXPIRATION_SECS.
+       Note that the time it takes to delete an inbox jar file is going to be somewhat more than
+       NIMBUS_CLEANUP_INBOX_JAR_EXPIRATION_SECS (depending on how often NIMBUS_CLEANUP_FREQ_SECS is set to).
+      </description>
+  </property>
+  <property>
+    <name>nimbus.task.launch.secs</name>
+    <value>120</value>
+    <description>A special timeout used when a task is initially launched. During launch, this is the timeout
+       used until the first heartbeat, overriding nimbus.task.timeout.secs.</description>
+  </property>
+  <property>
+    <name>nimbus.reassign</name>
+    <value>true</value>
+    <description>Whether or not nimbus should reassign tasks if it detects that a task goes down.
+       Defaults to true, and it's not recommended to change this value.</description>
+  </property>
+  <property>
+    <name>nimbus.file.copy.expiration.secs</name>
+    <value>600</value>
+    <description>During upload/download with the master, how long an upload or download connection is idle
+       before nimbus considers it dead and drops the connection.</description>
+  </property>
+  <property>
+    <name>nimbus.topology.validator</name>
+    <value>backtype.storm.nimbus.DefaultTopologyValidator</value>
+    <description>A custom class that implements ITopologyValidator that is run whenever a
+       topology is submitted. Can be used to provide business-specific logic for
+       whether topologies are allowed to run or not.</description>
+  </property>
+  <property>
+    <name>ui.port</name>
+    <value>8744</value>
+    <description>Storm UI binds to this port.</description>
+  </property>
+  <property>
+    <name>ui.childopts</name>
+    <value>-Xmx768m -Djava.security.auth.login.config=/etc/storm/storm_jaas.conf</value>
+    <description>Childopts for Storm UI Java process.</description>
+  </property>
+  <property>
+    <name>logviewer.port</name>
+    <value>8000</value>
+    <description>HTTP UI port for log viewer.</description>
+  </property>
+  <property>
+    <name>logviewer.childopts</name>
+    <value>-Xmx128m</value>
+    <description>Childopts for log viewer java process.</description>
+  </property>
+  <property>
+    <name>logviewer.appender.name</name>
+    <value>A1</value>
+    <description>Appender name used by log viewer to determine log directory.</description>
+  </property>
+  <property>
+    <name>drpc.port</name>
+    <value>3772</value>
+    <description>This port is used by Storm DRPC for receiving DPRC requests from clients.</description>
+  </property>
+  <property>
+    <name>drpc.worker.threads</name>
+    <value>64</value>
+    <description>DRPC thrift server worker threads.</description>
+  </property>
+  <property>
+    <name>drpc.queue.size</name>
+    <value>128</value>
+    <description>DRPC thrift server queue size.</description>
+  </property>
+  <property>
+    <name>drpc.invocations.port</name>
+    <value>3773</value>
+    <description>This port on Storm DRPC is used by DRPC topologies to receive function invocations and send results back.</description>
+  </property>
+  <property>
+    <name>drpc.request.timeout.secs</name>
+    <value>600</value>
+    <description>The timeout on DRPC requests within the DRPC server. Defaults to 10 minutes. Note that requests can also
+       timeout based on the socket timeout on the DRPC client, and separately based on the topology message
+       timeout for the topology implementing the DRPC function.</description>
+  </property>
+  <property>
+    <name>drpc.childopts</name>
+    <value>-Xmx768m</value>
+    <description>Childopts for Storm DRPC Java process.</description>
+  </property>
+  <property>
+    <name>transactional.zookeeper.root</name>
+    <value>/transactional</value>
+    <description>The root directory in ZooKeeper for metadata about TransactionalSpouts.</description>
+  </property>
+  <property>
+    <name>transactional.zookeeper.servers</name>
+    <value>null</value>
+    <description>The list of zookeeper servers in which to keep the transactional state. If null (which is default),
+       will use storm.zookeeper.servers</description>
+  </property>
+  <property>
+    <name>transactional.zookeeper.port</name>
+    <value>null</value>
+    <description>The port to use to connect to the transactional zookeeper servers. If null (which is default),
+       will use storm.zookeeper.port</description>
+  </property>
+  <property>
+    <name>supervisor.slots.ports</name>
+    <value>[6700, 6701]</value>
+    <description>A list of ports that can run workers on this supervisor. Each worker uses one port, and
+       the supervisor will only run one worker per port. Use this configuration to tune
+       how many workers run on each machine.</description>
+  </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>
+    <description>This parameter is used by the storm-deploy project to configure the jvm options for the supervisor daemon.</description>
+  </property>
+  <property>
+    <name>supervisor.worker.start.timeout.secs</name>
+    <value>120</value>
+    <description>How long a worker can go without heartbeating during the initial launch before
+       the supervisor tries to restart the worker process. This value override
+       supervisor.worker.timeout.secs during launch because there is additional
+       overhead to starting and configuring the JVM on launch.</description>
+  </property>
+  <property>
+    <name>supervisor.worker.timeout.secs</name>
+    <value>30</value>
+    <description>How long a worker can go without heartbeating before the supervisor tries to restart the worker process.</description>
+  </property>
+  <property>
+    <name>supervisor.monitor.frequency.secs</name>
+    <value>3</value>
+    <description>How often the supervisor checks the worker heartbeats to see if any of them need to be restarted.</description>
+  </property>
+  <property>
+    <name>supervisor.heartbeat.frequency.secs</name>
+    <value>5</value>
+    <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>
+    <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>
+    <name>worker.heartbeat.frequency.secs</name>
+    <value>1</value>
+    <description>How often this worker should heartbeat to the supervisor.</description>
+  </property>
+  <property>
+    <name>task.heartbeat.frequency.secs</name>
+    <value>3</value>
+    <description>How often a task should heartbeat its status to the master.</description>
+  </property>
+  <property>
+    <name>task.refresh.poll.secs</name>
+    <value>10</value>
+    <description>How often a task should sync its connections with other tasks (if a task is
+       reassigned, the other tasks sending messages to it need to refresh their connections).
+       In general though, when a reassignment happens other tasks will be notified
+       almost immediately. This configuration is here just in case that notification doesn't
+       come through.</description>
+  </property>
+  <property>
+    <name>zmq.threads</name>
+    <value>1</value>
+    <description>The number of threads that should be used by the zeromq context in each worker process.</description>
+  </property>
+  <property>
+    <name>zmq.linger.millis</name>
+    <value>5000</value>
+    <description>How long a connection should retry sending messages to a target host when
+       the connection is closed. This is an advanced configuration and can almost
+       certainly be ignored.</description>
+  </property>
+  <property>
+    <name>zmq.hwm</name>
+    <value>0</value>
+    <description>The high water for the ZeroMQ push sockets used for networking. Use this config to prevent buffer explosion
+       on the networking layer.</description>
+  </property>
+  <property>
+    <name>storm.messaging.netty.server_worker_threads</name>
+    <value>1</value>
+    <description>Netty based messaging: The # of worker threads for the server.</description>
+  </property>
+  <property>
+    <name>storm.messaging.netty.client_worker_threads</name>
+    <value>1</value>
+    <description>Netty based messaging: The # of worker threads for the client.</description>
+  </property>
+  <property>
+    <name>storm.messaging.netty.buffer_size</name>
+    <value>5242880</value>
+    <description>Netty based messaging: The buffer size for send/recv buffer.</description>
+  </property>
+  <property>
+    <name>storm.messaging.netty.max_retries</name>
+    <value>30</value>
+    <description>Netty based messaging: The max # of retries that a peer will perform when a remote is not accessible.</description>
+  </property>
+  <property>
+    <name>storm.messaging.netty.max_wait_ms</name>
+    <value>1000</value>
+    <description>Netty based messaging: The max # of milliseconds that a peer will wait.</description>
+  </property>
+  <property>
+    <name>storm.messaging.netty.min_wait_ms</name>
+    <value>100</value>
+    <description>Netty based messaging: The min # of milliseconds that a peer will wait.</description>
+  </property>
+  <property>
+    <name>topology.enable.message.timeouts</name>
+    <value>true</value>
+    <description>True if Storm should timeout messages or not. Defaults to true. This is meant to be used
+       in unit tests to prevent tuples from being accidentally timed out during the test.</description>
+  </property>
+  <property>
+    <name>topology.debug</name>
+    <value>false</value>
+    <description>When set to true, Storm will log every message that's emitted.</description>
+  </property>
+  <property>
+    <name>topology.optimize</name>
+    <value>true</value>
+    <description>Whether or not the master should optimize topologies by running multiple tasks in a single thread where appropriate.</description>
+  </property>
+  <property>
+    <name>topology.workers</name>
+    <value>1</value>
+    <description>How many processes should be spawned around the cluster to execute this
+       topology. Each process will execute some number of tasks as threads within
+       them. This parameter should be used in conjunction with the parallelism hints
+       on each component in the topology to tune the performance of a topology.</description>
+  </property>
+  <property>
+    <name>topology.acker.executors</name>
+    <value>null</value>
+    <description>How many executors to spawn for ackers.
+
+      If this is set to 0, then Storm will immediately ack tuples as soon
+       as they come off the spout, effectively disabling reliability.
+    </description>
+  </property>
+  <property>
+    <name>topology.message.timeout.secs</name>
+    <value>30</value>
+    <description>The maximum amount of time given to the topology to fully process a message
+       emitted by a spout. If the message is not acked within this time frame, Storm
+       will fail the message on the spout. Some spouts implementations will then replay
+       the message at a later time.</description>
+  </property>
+  <property>
+    <name>topology.skip.missing.kryo.registrations</name>
+    <value>false</value>
+    <description> Whether or not Storm should skip the loading of kryo registrations for which it
+       does not know the class or have the serializer implementation. Otherwise, the task will
+       fail to load and will throw an error at runtime. The use case of this is if you want to
+       declare your serializations on the storm.yaml files on the cluster rather than every single
+       time you submit a topology. Different applications may use different serializations and so
+       a single application may not have the code for the other serializers used by other apps.
+       By setting this config to true, Storm will ignore that it doesn't have those other serializations
+       rather than throw an error.</description>
+  </property>
+  <property>
+    <name>topology.max.task.parallelism</name>
+    <value>null</value>
+    <description>The maximum parallelism allowed for a component in this topology. This configuration is
+       typically used in testing to limit the number of threads spawned in local mode.</description>
+  </property>
+  <property>
+    <name>topology.max.spout.pending</name>
+    <value>null</value>
+    <description>The maximum number of tuples that can be pending on a spout task at any given time.
+       This config applies to individual tasks, not to spouts or topologies as a whole.
+
+       A pending tuple is one that has been emitted from a spout but has not been acked or failed yet.
+       Note that this config parameter has no effect for unreliable spouts that don't tag
+       their tuples with a message id.</description>
+  </property>
+  <property>
+    <name>topology.state.synchronization.timeout.secs</name>
+    <value>60</value>
+    <description>The maximum amount of time a component gives a source of state to synchronize before it requests
+       synchronization again.</description>
+  </property>
+  <property>
+    <name>topology.stats.sample.rate</name>
+    <value>0.05</value>
+    <description>The percentage of tuples to sample to produce stats for a task.</description>
+  </property>
+  <property>
+    <name>topology.builtin.metrics.bucket.size.secs</name>
+    <value>60</value>
+    <description>The time period that builtin metrics data in bucketed into.</description>
+  </property>
+  <property>
+    <name>topology.fall.back.on.java.serialization</name>
+    <value>true</value>
+    <description>Whether or not to use Java serialization in a topology.</description>
+  </property>
+  <property>
+    <name>topology.worker.childopts</name>
+    <value>null</value>
+    <description>Topology-specific options for the worker child process. This is used in addition to WORKER_CHILDOPTS.</description>
+  </property>
+  <property>
+    <name>topology.executor.receive.buffer.size</name>
+    <value>1024</value>
+    <description>The size of the Disruptor receive queue for each executor. Must be a power of 2.</description>
+  </property>
+  <property>
+    <name>topology.executor.send.buffer.size</name>
+    <value>1024</value>
+    <description>The size of the Disruptor send queue for each executor. Must be a power of 2.</description>
+  </property>
+  <property>
+    <name>topology.receiver.buffer.size</name>
+    <value>8</value>
+    <description>The maximum number of messages to batch from the thread receiving off the network to the
+       executor queues. Must be a power of 2.</description>
+  </property>
+  <property>
+    <name>topology.transfer.buffer.size</name>
+    <value>1024</value>
+    <description>The size of the Disruptor transfer queue for each worker.</description>
+  </property>
+  <property>
+    <name>topology.tick.tuple.freq.secs</name>
+    <value>null</value>
+    <description>How often a tick tuple from the "__system" component and "__tick" stream should be sent
+       to tasks. Meant to be used as a component-specific configuration.</description>
+  </property>
+  <property>
+    <name>topology.worker.shared.thread.pool.size</name>
+    <value>4</value>
+    <description>The size of the shared thread pool for worker tasks to make use of. The thread pool can be accessed
+       via the TopologyContext.</description>
+  </property>
+  <property>
+    <name>topology.disruptor.wait.strategy</name>
+    <value>com.lmax.disruptor.BlockingWaitStrategy</value>
+    <description>Configure the wait strategy used for internal queuing. Can be used to tradeoff latency
+       vs. throughput.</description>
+  </property>
+  <property>
+    <name>topology.executor.send.buffer.size</name>
+    <value>1024</value>
+    <description>The size of the Disruptor send queue for each executor. Must be a power of 2.</description>
+  </property>
+  <property>
+    <name>topology.receiver.buffer.size</name>
+    <value>8</value>
+    <description>The maximum number of messages to batch from the thread receiving off the network to the
+       executor queues. Must be a power of 2.</description>
+  </property>
+  <property>
+    <name>topology.transfer.buffer.size</name>
+    <value>1024</value>
+    <description>The size of the Disruptor transfer queue for each worker.</description>
+  </property>
+  <property>
+    <name>topology.tick.tuple.freq.secs</name>
+    <value>null</value>
+    <description>How often a tick tuple from the "__system" component and "__tick" stream should be sent
+       to tasks. Meant to be used as a component-specific configuration.</description>
+  </property>
+  <property>
+    <name>topology.worker.shared.thread.pool.size</name>
+    <value>4</value>
+    <description>The size of the shared thread pool for worker tasks to make use of. The thread pool can be accessed
+       via the TopologyContext.</description>
+  </property>
+  <property>
+    <name>topology.spout.wait.strategy</name>
+    <value>backtype.storm.spout.SleepSpoutWaitStrategy</value>
+    <description>A class that implements a strategy for what to do when a spout needs to wait. Waiting is
+       triggered in one of two conditions:
+
+       1. nextTuple emits no tuples
+       2. The spout has hit maxSpoutPending and can't emit any more tuples</description>
+  </property>
+  <property>
+    <name>topology.sleep.spout.wait.strategy.time.ms</name>
+    <value>1</value>
+    <description>The amount of milliseconds the SleepEmptyEmitStrategy should sleep for.</description>
+  </property>
+  <property>
+    <name>topology.error.throttle.interval.secs</name>
+    <value>10</value>
+    <description>The interval in seconds to use for determining whether to throttle error reported to Zookeeper. For example,
+       an interval of 10 seconds with topology.max.error.report.per.interval set to 5 will only allow 5 errors to be
+       reported to Zookeeper per task for every 10 second interval of time.</description>
+  </property>
+  <property>
+    <name>topology.max.error.report.per.interval</name>
+    <value>5</value>
+    <description>The interval in seconds to use for determining whether to throttle error reported to Zookeeper. For example,
+       an interval of 10 seconds with topology.max.error.report.per.interval set to 5 will only allow 5 errors to be
+       reported to Zookeeper per task for every 10 second interval of time.</description>
+  </property>
+  <property>
+    <name>topology.kryo.factory</name>
+    <value>backtype.storm.serialization.DefaultKryoFactory</value>
+    <description>Class that specifies how to create a Kryo instance for serialization. Storm will then apply
+       topology.kryo.register and topology.kryo.decorators on top of this. The default implementation
+       implements topology.fall.back.on.java.serialization and turns references off.</description>
+  </property>
+  <property>
+    <name>topology.tuple.serializer</name>
+    <value>backtype.storm.serialization.types.ListDelegateSerializer</value>
+    <description>The serializer class for ListDelegate (tuple payload).
+       The default serializer will be ListDelegateSerializer</description>
+  </property>
+  <property>
+    <name>topology.trident.batch.emit.interval.millis</name>
+    <value>500</value>
+    <description>How often a batch can be emitted in a Trident topology.</description>
+  </property>
+  <property>
+    <name>dev.zookeeper.path</name>
+    <value>/tmp/dev-storm-zookeeper</value>
+    <description>The path to use as the zookeeper dir when running a zookeeper server via
+       "storm dev-zookeeper". This zookeeper instance is only intended for development;
+       it is not a production grade zookeeper setup.</description>
+  </property>
+</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/32c7ea98/app-packages/storm/ganglia_metrics.json
----------------------------------------------------------------------
diff --git a/app-packages/storm/ganglia_metrics.json b/app-packages/storm/ganglia_metrics.json
new file mode 100644
index 0000000..861c4fa
--- /dev/null
+++ b/app-packages/storm/ganglia_metrics.json
@@ -0,0 +1,31 @@
+{
+    "Component": {
+        "NIMBUS": {
+            "totalslots": {
+                "metric": "Total Slots",
+                "pointInTime": false,
+                "temporal": true
+            },
+            "totalexecutors": {
+                "metric": "Total Executors",
+                "pointInTime": false,
+                "temporal": true
+            },
+            "topologies": {
+                "metric": "Topologies",
+                "pointInTime": false,
+                "temporal": true
+            },
+            "totaltasks": {
+                "metric": "Total Tasks",
+                "pointInTime": false,
+                "temporal": true
+            },
+            "usedslots": {
+                "metric": "Used Slots",
+                "pointInTime": false,
+                "temporal": true
+            }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/32c7ea98/app-packages/storm/jmx_metrics.json
----------------------------------------------------------------------
diff --git a/app-packages/storm/jmx_metrics.json b/app-packages/storm/jmx_metrics.json
new file mode 100644
index 0000000..f7d4e60
--- /dev/null
+++ b/app-packages/storm/jmx_metrics.json
@@ -0,0 +1,31 @@
+{
+    "Component": {
+        "NIMBUS": {
+            "FreeSlots": {
+                "metric": "$['slots.free']",
+                "pointInTime": true,
+                "temporal": false
+            },
+            "Tasks": {
+                "metric": "$['tasks.total']",
+                "pointInTime": true,
+                "temporal": false
+            },
+            "Executors": {
+                "metric": "$['executors.total']",
+                "pointInTime": true,
+                "temporal": false
+            },
+            "Topologies": {
+                "metric": "$['topologies']",
+                "pointInTime": true,
+                "temporal": false
+            },
+            "NimbusUptime": {
+                "metric": "$['nimbus.uptime']",
+                "pointInTime": true,
+                "temporal": false
+            }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/32c7ea98/app-packages/storm/metainfo.xml
----------------------------------------------------------------------
diff --git a/app-packages/storm/metainfo.xml b/app-packages/storm/metainfo.xml
new file mode 100644
index 0000000..7edd794
--- /dev/null
+++ b/app-packages/storm/metainfo.xml
@@ -0,0 +1,145 @@
+<?xml version="1.0"?>
+<!--
+   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.
+-->
+
+<metainfo>
+  <schemaVersion>2.0</schemaVersion>
+  <application>
+    <name>STORM</name>
+    <comment>Apache Hadoop Stream processing framework</comment>
+    <version>0.9.1.2.1</version>
+
+    <exportGroups>
+      <exportGroup>
+        <name>QuickLinks</name>
+        <exports>
+          <export>
+            <name>org.apache.slider.jmx</name>
+            <value>http://${STORM_REST_API_HOST}:${site.global.rest_api_port}/api/cluster/summary</value>
+          </export>
+          <export>
+            <name>org.apache.slider.monitor</name>
+            <value>http://${STORM_UI_SERVER_HOST}:${site.storm-site.ui.port}</value>
+          </export>
+          <export>
+            <name>org.apache.slider.metrics</name>
+            <value>http://${site.global.ganglia_server_host}/cgi-bin/rrd.py?c=${site.global.ganglia_server_id}</value>
+          </export>
+          <export>
+            <name>org.apache.slider.ganglia</name>
+            <value>http://${site.global.ganglia_server_host}/ganglia?c=${site.global.ganglia_server_id}</value>
+          </export>
+        </exports>
+      </exportGroup>
+    </exportGroups>
+
+    <commandOrders>
+      <commandOrder>
+        <command>NIMBUS-START</command>
+        <requires>SUPERVISOR-INSTALLED,STORM_UI_SERVER-INSTALLED,DRPC_SERVER-INSTALLED,STORM_REST_API-INSTALLED
+        </requires>
+      </commandOrder>
+      <commandOrder>
+        <command>SUPERVISOR-START</command>
+        <requires>NIMBUS-STARTED</requires>
+      </commandOrder>
+      <commandOrder>
+        <command>DRPC_SERVER-START</command>
+        <requires>NIMBUS-STARTED</requires>
+      </commandOrder>
+      <commandOrder>
+        <command>STORM_REST_API-START</command>
+        <requires>NIMBUS-STARTED,DRPC_SERVER-STARTED,STORM_UI_SERVER-STARTED</requires>
+      </commandOrder>
+      <commandOrder>
+        <command>STORM_UI_SERVER-START</command>
+        <requires>NIMBUS-STARTED</requires>
+      </commandOrder>
+    </commandOrders>
+
+    <components>
+
+      <component>
+        <name>NIMBUS</name>
+        <category>MASTER</category>
+        <commandScript>
+          <script>scripts/nimbus.py</script>
+          <scriptType>PYTHON</scriptType>
+          <timeout>600</timeout>
+        </commandScript>
+      </component>
+
+      <component>
+        <name>STORM_REST_API</name>
+        <category>MASTER</category>
+        <commandScript>
+          <script>scripts/rest_api.py</script>
+          <scriptType>PYTHON</scriptType>
+          <timeout>600</timeout>
+        </commandScript>
+      </component>
+
+      <component>
+        <name>SUPERVISOR</name>
+        <category>SLAVE</category>
+        <commandScript>
+          <script>scripts/supervisor.py</script>
+          <scriptType>PYTHON</scriptType>
+          <timeout>600</timeout>
+        </commandScript>
+      </component>
+
+      <component>
+        <name>STORM_UI_SERVER</name>
+        <category>MASTER</category>
+        <publishConfig>true</publishConfig>
+        <commandScript>
+          <script>scripts/ui_server.py</script>
+          <scriptType>PYTHON</scriptType>
+          <timeout>600</timeout>
+        </commandScript>
+      </component>
+
+      <component>
+        <name>DRPC_SERVER</name>
+        <category>MASTER</category>
+        <commandScript>
+          <script>scripts/drpc_server.py</script>
+          <scriptType>PYTHON</scriptType>
+          <timeout>600</timeout>
+        </commandScript>
+      </component>
+    </components>
+
+    <osSpecifics>
+      <osSpecific>
+        <osType>any</osType>
+        <packages>
+          <package>
+            <type>tarball</type>
+            <name>files/apache-storm-0.9.1.2.1.1.0-237.tar.gz</name>
+          </package>
+        </packages>
+      </osSpecific>
+    </osSpecifics>
+
+    <configuration-dependencies>
+      <config-type>storm-site</config-type>
+      <config-type>global</config-type>
+    </configuration-dependencies>
+  </application>
+</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/32c7ea98/app-packages/storm/package/files/apache-storm-0.9.1.2.1.1.0-237.tar.gz.REPLACE
----------------------------------------------------------------------
diff --git a/app-packages/storm/package/files/apache-storm-0.9.1.2.1.1.0-237.tar.gz.REPLACE b/app-packages/storm/package/files/apache-storm-0.9.1.2.1.1.0-237.tar.gz.REPLACE
new file mode 100644
index 0000000..dd934d5
--- /dev/null
+++ b/app-packages/storm/package/files/apache-storm-0.9.1.2.1.1.0-237.tar.gz.REPLACE
@@ -0,0 +1,16 @@
+# 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.
+
+Replace with the actual storm package.

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/32c7ea98/app-packages/storm/package/scripts/drpc_server.py
----------------------------------------------------------------------
diff --git a/app-packages/storm/package/scripts/drpc_server.py b/app-packages/storm/package/scripts/drpc_server.py
new file mode 100644
index 0000000..a01d0f0
--- /dev/null
+++ b/app-packages/storm/package/scripts/drpc_server.py
@@ -0,0 +1,55 @@
+#!/usr/bin/env python
+"""
+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.
+
+"""
+
+import sys
+from resource_management import *
+from storm import storm
+from service import service
+
+class DrpcServer(Script):
+  def install(self, env):
+    self.install_packages(env)
+
+  def configure(self, env):
+    import params
+    env.set_params(params)
+
+    storm()
+
+  def start(self, env):
+    import params
+    env.set_params(params)
+    self.configure(env)
+
+    service("drpc", action="start")
+
+  def stop(self, env):
+    import params
+    env.set_params(params)
+
+    service("drpc", action="stop")
+
+  def status(self, env):
+    import status_params
+    env.set_params(status_params)
+    check_process_status(status_params.pid_drpc)
+
+if __name__ == "__main__":
+  DrpcServer().execute()

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/32c7ea98/app-packages/storm/package/scripts/nimbus.py
----------------------------------------------------------------------
diff --git a/app-packages/storm/package/scripts/nimbus.py b/app-packages/storm/package/scripts/nimbus.py
new file mode 100644
index 0000000..c7c3120
--- /dev/null
+++ b/app-packages/storm/package/scripts/nimbus.py
@@ -0,0 +1,55 @@
+#!/usr/bin/env python
+"""
+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.
+
+"""
+
+import sys
+from resource_management import *
+from storm import storm
+from service import service
+
+class Nimbus(Script):
+  def install(self, env):
+    self.install_packages(env)
+
+  def configure(self, env):
+    import params
+    env.set_params(params)
+
+    storm()
+
+  def start(self, env):
+    import params
+    env.set_params(params)
+    self.configure(env)
+
+    service("nimbus", action="start")
+
+  def stop(self, env):
+    import params
+    env.set_params(params)
+
+    service("nimbus", action="stop")
+
+  def status(self, env):
+    import status_params
+    env.set_params(status_params)
+    check_process_status(status_params.pid_nimbus)
+
+if __name__ == "__main__":
+  Nimbus().execute()

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/32c7ea98/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
new file mode 100644
index 0000000..cf21b27
--- /dev/null
+++ b/app-packages/storm/package/scripts/params.py
@@ -0,0 +1,58 @@
+#!/usr/bin/env python
+"""
+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.
+
+"""
+
+from resource_management import *
+import status_params
+
+# server configurations
+config = Script.get_config()
+
+app_root = config['configurations']['global']['app_root']
+conf_dir = format("{app_root}/conf")
+storm_user = config['configurations']['global']['app_user']
+log_dir = config['configurations']['global']['app_log_dir']
+pid_dir = status_params.pid_dir
+local_dir = config['configurations']['storm-site']['storm.local.dir']
+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")
+
+ganglia_installed = config['configurations']['global']['ganglia_enabled']
+if ganglia_installed:
+  ganglia_report_interval = 60
+  ganglia_server = config['configurations']['global']['ganglia_server_host']
+  ganglia_port = config['configurations']['global']['ganglia_server_port']
+
+_authentication = config['configurations']['core-site']['hadoop.security.authentication']
+security_enabled = ( not is_empty(_authentication) and _authentication == 'kerberos')
+
+if security_enabled:
+  _hostname_lowercase = config['hostname'].lower()
+  _kerberos_domain = config['configurations']['global']['kerberos_domain']
+  _storm_principal_name = config['configurations']['global']['storm_principal_name']
+  storm_jaas_principal = _storm_principal_name.replace('_HOST', _hostname_lowercase)
+  storm_keytab_path = config['configurations']['global']['storm_keytab']

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/32c7ea98/app-packages/storm/package/scripts/rest_api.py
----------------------------------------------------------------------
diff --git a/app-packages/storm/package/scripts/rest_api.py b/app-packages/storm/package/scripts/rest_api.py
new file mode 100644
index 0000000..33d8924
--- /dev/null
+++ b/app-packages/storm/package/scripts/rest_api.py
@@ -0,0 +1,57 @@
+#!/usr/bin/env python
+"""
+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.
+
+"""
+
+import sys
+from resource_management import *
+from storm import storm
+from service import service
+
+
+class StormRestApi(Script):
+  def install(self, env):
+    self.install_packages(env)
+    self.configure(env)
+
+  def configure(self, env):
+    import params
+    env.set_params(params)
+
+    storm()
+
+  def start(self, env):
+    import params
+    env.set_params(params)
+    self.configure(env)
+
+    service("rest_api", action="start")
+
+  def stop(self, env):
+    import params
+    env.set_params(params)
+
+    service("rest_api", action="stop")
+
+  def status(self, env):
+    import status_params
+    env.set_params(status_params)
+    check_process_status(status_params.pid_rest_api)
+
+if __name__ == "__main__":
+  StormRestApi().execute()

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/32c7ea98/app-packages/storm/package/scripts/service.py
----------------------------------------------------------------------
diff --git a/app-packages/storm/package/scripts/service.py b/app-packages/storm/package/scripts/service.py
new file mode 100644
index 0000000..10fa5b9
--- /dev/null
+++ b/app-packages/storm/package/scripts/service.py
@@ -0,0 +1,95 @@
+#!/usr/bin/env python
+"""
+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.
+
+"""
+
+
+from resource_management import *
+import time
+
+
+def service(
+    name,
+    action='start'):
+  import params
+  import status_params
+
+  pid_file = status_params.pid_files[name]
+  no_op_test = format("ls {pid_file} >/dev/null 2>&1 && ps `cat {pid_file}` >/dev/null 2>&1")
+  jps_path = format("{java64_home}/bin/jps")
+  grep_and_awk = "| grep -v grep | awk '{print $1}'"
+
+  if name == 'ui':
+    #process_cmd = "^java.+backtype.storm.ui.core$"
+    pid_chk_cmd = format("{jps_path} -vl | grep \"^[0-9 ]*backtype.storm.ui.core\" {grep_and_awk}  > {pid_file}")
+  elif name == "rest_api":
+    process_cmd = format("{java64_home}/bin/java -jar {rest_lib_dir}/`ls {rest_lib_dir} | grep -wE storm-rest-[0-9.-]+\.jar` server")
+    crt_pid_cmd = format("pgrep -f \"{process_cmd}\" && pgrep -f \"{process_cmd}\" > {pid_file}")
+  else:
+    #process_cmd = format("^java.+backtype.storm.daemon.{name}$")
+    pid_chk_cmd = format("{jps_path} -vl | grep \"^[0-9 ]*backtype.storm.daemon.{name}\" {grep_and_awk}  > {pid_file}")
+
+  if action == "start":
+    if name == "rest_api":
+      cmd = format("{process_cmd} {rest_api_conf_file} > {log_dir}/restapi.log")
+    else:
+      cmd = format("env JAVA_HOME={java64_home} PATH=$PATH:{java64_home}/bin STORM_BASE_DIR={app_root} STORM_CONF_DIR={conf_dir} {storm_bin} {name}")
+
+    Execute(cmd,
+            not_if=no_op_test,
+            user=params.storm_user,
+            logoutput=False,
+            wait_for_finish=False
+    )
+
+    if name == "rest_api":
+      Execute(crt_pid_cmd,
+              user=params.storm_user,
+              logoutput=True,
+              tries=6,
+              try_sleep=10
+      )
+    else:
+      content = None
+      for i in xrange(12):
+        Execute(pid_chk_cmd,
+                user=params.storm_user,
+                logoutput=True
+        )
+        with open(pid_file) as f:
+          content = f.readline().strip()
+        if content.isdigit():
+          break;
+        File(pid_file, action = "delete")
+        time.sleep(10)
+        pass
+
+      if not content.isdigit():
+        raise Fail(format("Unable to start {name}"))
+
+  elif action == "stop":
+    process_dont_exist = format("! ({no_op_test})")
+    pid = format("`cat {pid_file}` >/dev/null 2>&1")
+    Execute(format("kill {pid}"),
+            not_if=process_dont_exist
+    )
+    Execute(format("kill -9 {pid}"),
+            not_if=format("sleep 2; {process_dont_exist} || sleep 20; {process_dont_exist}"),
+            ignore_failures=True
+    )
+    Execute(format("rm -f {pid_file}"))

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/32c7ea98/app-packages/storm/package/scripts/status_params.py
----------------------------------------------------------------------
diff --git a/app-packages/storm/package/scripts/status_params.py b/app-packages/storm/package/scripts/status_params.py
new file mode 100644
index 0000000..eab83cf
--- /dev/null
+++ b/app-packages/storm/package/scripts/status_params.py
@@ -0,0 +1,36 @@
+#!/usr/bin/env python
+"""
+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.
+
+"""
+from resource_management import *
+
+config = Script.get_config()
+
+pid_dir = config['configurations']['global']['app_pid_dir']
+pid_nimbus = format("{pid_dir}/nimbus.pid")
+pid_supervisor = format("{pid_dir}/supervisor.pid")
+pid_drpc = format("{pid_dir}/drpc.pid")
+pid_ui = format("{pid_dir}/ui.pid")
+pid_logviewer = format("{pid_dir}/logviewer.pid")
+pid_rest_api = format("{pid_dir}/restapi.pid")
+pid_files = {"logviewer":pid_logviewer,
+             "ui": pid_ui,
+             "nimbus": pid_nimbus,
+             "supervisor": pid_supervisor,
+             "drpc": pid_drpc,
+             "rest_api": pid_rest_api}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/32c7ea98/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
new file mode 100644
index 0000000..bce272b
--- /dev/null
+++ b/app-packages/storm/package/scripts/storm.py
@@ -0,0 +1,50 @@
+#!/usr/bin/env python
+"""
+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.
+
+"""
+
+from resource_management import *
+from yaml_config import yaml_config
+import sys
+
+def storm():
+  import params
+
+  Directory([params.log_dir, params.pid_dir, params.local_dir, params.conf_dir],
+            owner=params.storm_user,
+            group=params.user_group,
+            recursive=True
+  )
+
+  File(format("{conf_dir}/config.yaml"),
+            content=Template("config.yaml.j2"),
+            owner = params.storm_user,
+            group = params.user_group
+  )
+
+  yaml_config( "storm.yaml",
+               conf_dir = params.conf_dir,
+               configurations = params.config['configurations']['storm-site'],
+               owner = params.storm_user,
+               group = params.user_group
+  )
+  
+  if params.security_enabled:
+    TemplateConfig( format("{conf_dir}/storm_jaas.conf"),
+      owner = params.storm_user
+    )
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/32c7ea98/app-packages/storm/package/scripts/supervisor.py
----------------------------------------------------------------------
diff --git a/app-packages/storm/package/scripts/supervisor.py b/app-packages/storm/package/scripts/supervisor.py
new file mode 100644
index 0000000..47c20c9
--- /dev/null
+++ b/app-packages/storm/package/scripts/supervisor.py
@@ -0,0 +1,61 @@
+#!/usr/bin/env python
+"""
+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.
+
+"""
+
+import sys
+from resource_management import *
+from yaml_config import yaml_config
+from storm import storm
+from service import service
+
+
+class Supervisor(Script):
+  def install(self, env):
+    self.install_packages(env)
+
+  def configure(self, env):
+    import params
+    env.set_params(params)
+    storm()
+
+  def start(self, env):
+    import params
+    env.set_params(params)
+    self.configure(env)
+
+    service("supervisor", action="start")
+    service("logviewer", action="start")
+
+  def stop(self, env):
+    import params
+    env.set_params(params)
+
+    service("supervisor", action="stop")
+    service("logviewer", action="stop")
+
+  def status(self, env):
+    import status_params
+    env.set_params(status_params)
+
+    check_process_status(status_params.pid_supervisor)
+
+
+if __name__ == "__main__":
+  Supervisor().execute()
+

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/32c7ea98/app-packages/storm/package/scripts/ui_server.py
----------------------------------------------------------------------
diff --git a/app-packages/storm/package/scripts/ui_server.py b/app-packages/storm/package/scripts/ui_server.py
new file mode 100644
index 0000000..0fe7cd2
--- /dev/null
+++ b/app-packages/storm/package/scripts/ui_server.py
@@ -0,0 +1,55 @@
+#!/usr/bin/env python
+"""
+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.
+
+"""
+
+import sys
+from resource_management import *
+from storm import storm
+from service import service
+
+class UiServer(Script):
+  def install(self, env):
+    self.install_packages(env)
+
+  def configure(self, env):
+    import params
+    env.set_params(params)
+
+    storm()
+
+  def start(self, env):
+    import params
+    env.set_params(params)
+    self.configure(env)
+
+    service("ui", action="start")
+
+  def stop(self, env):
+    import params
+    env.set_params(params)
+
+    service("ui", action="stop")
+
+  def status(self, env):
+    import status_params
+    env.set_params(status_params)
+    check_process_status(status_params.pid_ui)
+
+if __name__ == "__main__":
+  UiServer().execute()

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/32c7ea98/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
new file mode 100644
index 0000000..39261be
--- /dev/null
+++ b/app-packages/storm/package/scripts/yaml_config.py
@@ -0,0 +1,69 @@
+#!/usr/bin/env python
+"""
+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.
+
+"""
+
+import re
+from resource_management import *
+
+def escape_yaml_propetry(value):
+  unquouted = False
+  unquouted_values = ["null","Null","NULL","true","True","TRUE","false","False","FALSE","YES","Yes","yes","NO","No","no","ON","On","on","OFF","Off","off"]
+  
+  if value in unquouted_values:
+    unquouted = True
+
+  # if is list [a,b,c]
+  if re.match('^\w*\[.+\]\w*$', value):
+    unquouted = True
+    
+  try:
+    int(value)
+    unquouted = True
+  except ValueError:
+    pass
+  
+  try:
+    float(value)
+    unquouted = True
+  except ValueError:
+    pass
+  
+  if not unquouted:
+    value = value.replace("'","''")
+    value = "'"+value+"'"
+    
+  return value
+
+def yaml_config(
+  filename,
+  configurations = None,
+  conf_dir = None,
+  mode = None,
+  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])
+
+    File (format("{conf_dir}/{filename}"),
+      content = config_content,
+      owner = owner,
+      group = group,
+      mode = mode
+    )

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/32c7ea98/app-packages/storm/package/templates/config.yaml.j2
----------------------------------------------------------------------
diff --git a/app-packages/storm/package/templates/config.yaml.j2 b/app-packages/storm/package/templates/config.yaml.j2
new file mode 100644
index 0000000..32d2c99
--- /dev/null
+++ b/app-packages/storm/package/templates/config.yaml.j2
@@ -0,0 +1,48 @@
+# 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.
+
+nimbusHost: {{nimbus_host}}
+nimbusPort: {{nimbus_port}}
+
+# HTTP-specific options.
+http:
+
+  # The port on which the HTTP server listens for service requests.
+  port: {{rest_api_port}}
+
+  # The port on which the HTTP server listens for administrative requests.
+  adminPort: {{rest_api_admin_port}}
+
+{% if ganglia_installed %}
+enableGanglia: {{ganglia_installed}}
+
+# ganglia configuration (necessary if ganglia reporting is enabled)
+ganglia:
+
+  # how often to report to ganglia metrics (in seconds)
+  reportInterval: {{ganglia_report_interval}}
+
+  # the hostname of the gmond server where storm cluster metrics will be sent
+  host: {{ganglia_server}}
+  port: {{ganglia_port}}
+
+  # address mode
+  # default is MULTICAST
+  addressMode: "UNICAST"
+
+  # an <IP>:<HOSTNAME> pair to spoof
+  # this allows us to simulate storm cluster metrics coming from a specific host
+  #spoof: "192.168.1.1:storm"
+{% endif %}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/32c7ea98/app-packages/storm/package/templates/storm_jaas.conf.j2
----------------------------------------------------------------------
diff --git a/app-packages/storm/package/templates/storm_jaas.conf.j2 b/app-packages/storm/package/templates/storm_jaas.conf.j2
new file mode 100644
index 0000000..4031d22
--- /dev/null
+++ b/app-packages/storm/package/templates/storm_jaas.conf.j2
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ */
+Client {
+   com.sun.security.auth.module.Krb5LoginModule required
+   useKeyTab=true
+   keyTab="{{storm_keytab_path}}"
+   storeKey=true
+   useTicketCache=false
+   serviceName="zookeeper"
+   principal="{{storm_jaas_principal}}";
+};

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/32c7ea98/app-packages/storm/resources.json
----------------------------------------------------------------------
diff --git a/app-packages/storm/resources.json b/app-packages/storm/resources.json
new file mode 100644
index 0000000..b184a40
--- /dev/null
+++ b/app-packages/storm/resources.json
@@ -0,0 +1,31 @@
+{
+  "schema" : "http://example.org/specification/v2.0.0",
+  "metadata" : {
+  },
+  "global" : {
+  },
+  "components": {
+    "slider-appmaster": {
+    },
+    "NIMBUS": {
+      "yarn.role.priority": "1",
+      "yarn.component.instances": "1"
+    },
+    "STORM_REST_API": {
+      "yarn.role.priority": "2",
+      "yarn.component.instances": "1"
+    },
+    "STORM_UI_SERVER": {
+      "yarn.role.priority": "3",
+      "yarn.component.instances": "1"
+    },
+    "DRPC_SERVER": {
+      "yarn.role.priority": "4",
+      "yarn.component.instances": "1"
+    },
+    "SUPERVISOR": {
+      "yarn.role.priority": "5",
+      "yarn.component.instances": "1"
+    }
+  }
+}
\ No newline at end of file


[2/2] git commit: SLIDER-181. Storm App Package (minor config changes and folder name changes)

Posted by sm...@apache.org.
SLIDER-181. Storm App Package (minor config changes and folder name changes)


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

Branch: refs/heads/develop
Commit: 32c7ea98a8c790852f60fc9d24214f53b1ebd572
Parents: 6f677f6
Author: Sumit Mohanty <sm...@hortonworks.com>
Authored: Tue Jul 8 17:47:44 2014 -0700
Committer: Sumit Mohanty <sm...@hortonworks.com>
Committed: Tue Jul 8 17:47:44 2014 -0700

----------------------------------------------------------------------
 app-packages/storm-v0_91/README.txt             |  33 --
 app-packages/storm-v0_91/appConfig.json         | 125 ----
 .../storm-v0_91/configuration/global.xml        |  39 --
 .../storm-v0_91/configuration/storm-site.xml    | 587 -------------------
 app-packages/storm-v0_91/ganglia_metrics.json   |  31 -
 app-packages/storm-v0_91/jmx_metrics.json       |  31 -
 app-packages/storm-v0_91/metainfo.xml           | 145 -----
 ...pache-storm-0.9.1.2.1.1.0-237.tar.gz.REPLACE |  16 -
 .../storm-v0_91/package/scripts/drpc_server.py  |  55 --
 .../storm-v0_91/package/scripts/nimbus.py       |  55 --
 .../storm-v0_91/package/scripts/params.py       |  58 --
 .../storm-v0_91/package/scripts/rest_api.py     |  57 --
 .../storm-v0_91/package/scripts/service.py      |  95 ---
 .../package/scripts/status_params.py            |  36 --
 .../storm-v0_91/package/scripts/storm.py        |  50 --
 .../storm-v0_91/package/scripts/supervisor.py   |  61 --
 .../storm-v0_91/package/scripts/ui_server.py    |  55 --
 .../storm-v0_91/package/scripts/yaml_config.py  |  69 ---
 .../package/templates/config.yaml.j2            |  48 --
 .../package/templates/storm_jaas.conf.j2        |  26 -
 app-packages/storm-v0_91/resources.json         |  31 -
 app-packages/storm/README.txt                   |  37 ++
 app-packages/storm/appConfig.json               | 126 ++++
 app-packages/storm/configuration/global.xml     |  39 ++
 app-packages/storm/configuration/storm-site.xml | 587 +++++++++++++++++++
 app-packages/storm/ganglia_metrics.json         |  31 +
 app-packages/storm/jmx_metrics.json             |  31 +
 app-packages/storm/metainfo.xml                 | 145 +++++
 ...pache-storm-0.9.1.2.1.1.0-237.tar.gz.REPLACE |  16 +
 .../storm/package/scripts/drpc_server.py        |  55 ++
 app-packages/storm/package/scripts/nimbus.py    |  55 ++
 app-packages/storm/package/scripts/params.py    |  58 ++
 app-packages/storm/package/scripts/rest_api.py  |  57 ++
 app-packages/storm/package/scripts/service.py   |  95 +++
 .../storm/package/scripts/status_params.py      |  36 ++
 app-packages/storm/package/scripts/storm.py     |  50 ++
 .../storm/package/scripts/supervisor.py         |  61 ++
 app-packages/storm/package/scripts/ui_server.py |  55 ++
 .../storm/package/scripts/yaml_config.py        |  69 +++
 .../storm/package/templates/config.yaml.j2      |  48 ++
 .../storm/package/templates/storm_jaas.conf.j2  |  26 +
 app-packages/storm/resources.json               |  31 +
 42 files changed, 1708 insertions(+), 1703 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/32c7ea98/app-packages/storm-v0_91/README.txt
----------------------------------------------------------------------
diff --git a/app-packages/storm-v0_91/README.txt b/app-packages/storm-v0_91/README.txt
deleted file mode 100644
index b547424..0000000
--- a/app-packages/storm-v0_91/README.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-<!---
-   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.
--->
-
-How to create a Slider package?
-
-Replace the placeholder tarball for Storm.
-  cp ~/Downloads/apache-storm-0.9.1.2.1.1.0-237.tar.gz package/files/
-  rm package/files/apache-storm-0.9.1.2.1.1.0-237.tar.gz.REPLACE
-
-Create a zip package at the root of the package (<slider enlistment>/app-packages/storm-v0_91/) 
-  zip -r storm_v091.zip .
-
-Verify the content using  
-  unzip -l "$@" storm_v091.zip
-
-While appConfig.json and resources.json are not required for the package they work
-well as the default configuration for Slider apps. So its advisable that when you
-create an application package for Slider, include sample/default resources.json and
-appConfig.json for a minimal Yarn cluster.

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/32c7ea98/app-packages/storm-v0_91/appConfig.json
----------------------------------------------------------------------
diff --git a/app-packages/storm-v0_91/appConfig.json b/app-packages/storm-v0_91/appConfig.json
deleted file mode 100644
index 7ccf412..0000000
--- a/app-packages/storm-v0_91/appConfig.json
+++ /dev/null
@@ -1,125 +0,0 @@
-{
-  "schema": "http://example.org/specification/v2.0.0",
-  "metadata": {
-  },
-  "global": {
-    "application.def": "/slider/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",
-    "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",
-    "site.global.security_enabled": "false",
-    "site.global.ganglia_server_host": "${NN_HOST}",
-    "site.global.ganglia_server_id": "Application2",
-    "site.global.ganglia_enabled":"true",
-    "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": "/storm",
-    "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": "[0, 0]",
-    "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": "0",
-    "site.storm-site.topology.debug": "false"
-  },
-  "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/32c7ea98/app-packages/storm-v0_91/configuration/global.xml
----------------------------------------------------------------------
diff --git a/app-packages/storm-v0_91/configuration/global.xml b/app-packages/storm-v0_91/configuration/global.xml
deleted file mode 100644
index 5cc9170..0000000
--- a/app-packages/storm-v0_91/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/32c7ea98/app-packages/storm-v0_91/configuration/storm-site.xml
----------------------------------------------------------------------
diff --git a/app-packages/storm-v0_91/configuration/storm-site.xml b/app-packages/storm-v0_91/configuration/storm-site.xml
deleted file mode 100644
index 6eca8f9..0000000
--- a/app-packages/storm-v0_91/configuration/storm-site.xml
+++ /dev/null
@@ -1,587 +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>java.library.path</name>
-    <value>/usr/local/lib:/opt/local/lib:/usr/lib</value>
-    <description>This value is passed to spawned JVMs (e.g., Nimbus, Supervisor, and Workers)
-       for the java.library.path value. java.library.path tells the JVM where
-       to look for native libraries. It is necessary to set this config correctly since
-       Storm uses the ZeroMQ and JZMQ native libs. </description>
-  </property>
-  <property>
-    <name>storm.local.dir</name>
-    <value>/hadoop/storm</value>
-    <description>A directory on the local filesystem used by Storm for any local
-       filesystem usage it needs. The directory must exist and the Storm daemons must
-       have permission to read/write from this location.</description>
-  </property>
-  <property>
-    <name>storm.zookeeper.servers</name>
-    <value>['localhost']</value>
-    <description>A list of hosts of ZooKeeper servers used to manage the cluster.</description>
-  </property>
-  <property>
-    <name>storm.zookeeper.port</name>
-    <value>2181</value>
-    <description>The port Storm will use to connect to each of the ZooKeeper servers.</description>
-  </property>
-  <property>
-    <name>storm.zookeeper.root</name>
-    <value>/storm</value>
-    <description>The root location at which Storm stores data in ZooKeeper.</description>
-  </property>
-  <property>
-    <name>storm.zookeeper.session.timeout</name>
-    <value>20000</value>
-    <description>The session timeout for clients to ZooKeeper.</description>
-  </property>
-  <property>
-    <name>storm.zookeeper.connection.timeout</name>
-    <value>15000</value>
-    <description>The connection timeout for clients to ZooKeeper.</description>
-  </property>
-  <property>
-    <name>storm.zookeeper.retry.times</name>
-    <value>5</value>
-    <description>The number of times to retry a Zookeeper operation.</description>
-  </property>
-  <property>
-    <name>storm.zookeeper.retry.interval</name>
-    <value>1000</value>
-    <description>The interval between retries of a Zookeeper operation.</description>
-  </property>
-  <property>
-    <name>storm.zookeeper.retry.intervalceiling.millis</name>
-    <value>30000</value>
-    <description>The ceiling of the interval between retries of a Zookeeper operation.</description>
-  </property>
-  <property>
-    <name>storm.cluster.mode</name>
-    <value>distributed</value>
-    <description>The mode this Storm cluster is running in. Either "distributed" or "local".</description>
-  </property>
-  <property>
-    <name>storm.local.mode.zmq</name>
-    <value>false</value>
-    <description>Whether or not to use ZeroMQ for messaging in local mode. If this is set
-       to false, then Storm will use a pure-Java messaging system. The purpose
-       of this flag is to make it easy to run Storm in local mode by eliminating
-       the need for native dependencies, which can be difficult to install.
-    </description>
-  </property>
-  <property>
-    <name>storm.thrift.transport</name>
-    <value>backtype.storm.security.auth.SimpleTransportPlugin</value>
-    <description>The transport plug-in for Thrift client/server communication.</description>
-  </property>
-  <property>
-    <name>storm.messaging.transport</name>
-    <value>backtype.storm.messaging.netty.Context</value>
-    <description>The transporter for communication among Storm tasks.</description>
-  </property>
-  <property>
-    <name>nimbus.host</name>
-    <value>localhost</value>
-    <description>The host that the master server is running on.</description>
-  </property>
-  <property>
-    <name>nimbus.thrift.port</name>
-    <value>6627</value>
-    <description> Which port the Thrift interface of Nimbus should run on. Clients should
-       connect to this port to upload jars and submit topologies.</description>
-  </property>
-  <property>
-    <name>nimbus.thrift.max_buffer_size</name>
-    <value>1048576</value>
-    <description>The maximum buffer size thrift should use when reading messages.</description>
-  </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>
-    <description>This parameter is used by the storm-deploy project to configure the jvm options for the nimbus daemon.</description>
-  </property>
-  <property>
-    <name>nimbus.task.timeout.secs</name>
-    <value>30</value>
-    <description>How long without heartbeating a task can go before nimbus will consider the task dead and reassign it to another location.</description>
-  </property>
-  <property>
-    <name>nimbus.supervisor.timeout.secs</name>
-    <value>60</value>
-    <description>How long before a supervisor can go without heartbeating before nimbus considers it dead and stops assigning new work to it.</description>
-  </property>
-  <property>
-    <name>nimbus.monitor.freq.secs</name>
-    <value>10</value>
-    <description>
-      How often nimbus should wake up to check heartbeats and do reassignments. Note
-       that if a machine ever goes down Nimbus will immediately wake up and take action.
-       This parameter is for checking for failures when there's no explicit event like that occuring.
-    </description>
-  </property>
-  <property>
-    <name>nimbus.cleanup.inbox.freq.secs</name>
-    <value>600</value>
-    <description>How often nimbus should wake the cleanup thread to clean the inbox.</description>
-  </property>
-  <property>
-    <name>nimbus.inbox.jar.expiration.secs</name>
-    <value>3600</value>
-    <description>
-      The length of time a jar file lives in the inbox before being deleted by the cleanup thread.
-
-       Probably keep this value greater than or equal to NIMBUS_CLEANUP_INBOX_JAR_EXPIRATION_SECS.
-       Note that the time it takes to delete an inbox jar file is going to be somewhat more than
-       NIMBUS_CLEANUP_INBOX_JAR_EXPIRATION_SECS (depending on how often NIMBUS_CLEANUP_FREQ_SECS is set to).
-      </description>
-  </property>
-  <property>
-    <name>nimbus.task.launch.secs</name>
-    <value>120</value>
-    <description>A special timeout used when a task is initially launched. During launch, this is the timeout
-       used until the first heartbeat, overriding nimbus.task.timeout.secs.</description>
-  </property>
-  <property>
-    <name>nimbus.reassign</name>
-    <value>true</value>
-    <description>Whether or not nimbus should reassign tasks if it detects that a task goes down.
-       Defaults to true, and it's not recommended to change this value.</description>
-  </property>
-  <property>
-    <name>nimbus.file.copy.expiration.secs</name>
-    <value>600</value>
-    <description>During upload/download with the master, how long an upload or download connection is idle
-       before nimbus considers it dead and drops the connection.</description>
-  </property>
-  <property>
-    <name>nimbus.topology.validator</name>
-    <value>backtype.storm.nimbus.DefaultTopologyValidator</value>
-    <description>A custom class that implements ITopologyValidator that is run whenever a
-       topology is submitted. Can be used to provide business-specific logic for
-       whether topologies are allowed to run or not.</description>
-  </property>
-  <property>
-    <name>ui.port</name>
-    <value>8744</value>
-    <description>Storm UI binds to this port.</description>
-  </property>
-  <property>
-    <name>ui.childopts</name>
-    <value>-Xmx768m -Djava.security.auth.login.config=/etc/storm/storm_jaas.conf</value>
-    <description>Childopts for Storm UI Java process.</description>
-  </property>
-  <property>
-    <name>logviewer.port</name>
-    <value>8000</value>
-    <description>HTTP UI port for log viewer.</description>
-  </property>
-  <property>
-    <name>logviewer.childopts</name>
-    <value>-Xmx128m</value>
-    <description>Childopts for log viewer java process.</description>
-  </property>
-  <property>
-    <name>logviewer.appender.name</name>
-    <value>A1</value>
-    <description>Appender name used by log viewer to determine log directory.</description>
-  </property>
-  <property>
-    <name>drpc.port</name>
-    <value>3772</value>
-    <description>This port is used by Storm DRPC for receiving DPRC requests from clients.</description>
-  </property>
-  <property>
-    <name>drpc.worker.threads</name>
-    <value>64</value>
-    <description>DRPC thrift server worker threads.</description>
-  </property>
-  <property>
-    <name>drpc.queue.size</name>
-    <value>128</value>
-    <description>DRPC thrift server queue size.</description>
-  </property>
-  <property>
-    <name>drpc.invocations.port</name>
-    <value>3773</value>
-    <description>This port on Storm DRPC is used by DRPC topologies to receive function invocations and send results back.</description>
-  </property>
-  <property>
-    <name>drpc.request.timeout.secs</name>
-    <value>600</value>
-    <description>The timeout on DRPC requests within the DRPC server. Defaults to 10 minutes. Note that requests can also
-       timeout based on the socket timeout on the DRPC client, and separately based on the topology message
-       timeout for the topology implementing the DRPC function.</description>
-  </property>
-  <property>
-    <name>drpc.childopts</name>
-    <value>-Xmx768m</value>
-    <description>Childopts for Storm DRPC Java process.</description>
-  </property>
-  <property>
-    <name>transactional.zookeeper.root</name>
-    <value>/transactional</value>
-    <description>The root directory in ZooKeeper for metadata about TransactionalSpouts.</description>
-  </property>
-  <property>
-    <name>transactional.zookeeper.servers</name>
-    <value>null</value>
-    <description>The list of zookeeper servers in which to keep the transactional state. If null (which is default),
-       will use storm.zookeeper.servers</description>
-  </property>
-  <property>
-    <name>transactional.zookeeper.port</name>
-    <value>null</value>
-    <description>The port to use to connect to the transactional zookeeper servers. If null (which is default),
-       will use storm.zookeeper.port</description>
-  </property>
-  <property>
-    <name>supervisor.slots.ports</name>
-    <value>[6700, 6701]</value>
-    <description>A list of ports that can run workers on this supervisor. Each worker uses one port, and
-       the supervisor will only run one worker per port. Use this configuration to tune
-       how many workers run on each machine.</description>
-  </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>
-    <description>This parameter is used by the storm-deploy project to configure the jvm options for the supervisor daemon.</description>
-  </property>
-  <property>
-    <name>supervisor.worker.start.timeout.secs</name>
-    <value>120</value>
-    <description>How long a worker can go without heartbeating during the initial launch before
-       the supervisor tries to restart the worker process. This value override
-       supervisor.worker.timeout.secs during launch because there is additional
-       overhead to starting and configuring the JVM on launch.</description>
-  </property>
-  <property>
-    <name>supervisor.worker.timeout.secs</name>
-    <value>30</value>
-    <description>How long a worker can go without heartbeating before the supervisor tries to restart the worker process.</description>
-  </property>
-  <property>
-    <name>supervisor.monitor.frequency.secs</name>
-    <value>3</value>
-    <description>How often the supervisor checks the worker heartbeats to see if any of them need to be restarted.</description>
-  </property>
-  <property>
-    <name>supervisor.heartbeat.frequency.secs</name>
-    <value>5</value>
-    <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>
-    <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>
-    <name>worker.heartbeat.frequency.secs</name>
-    <value>1</value>
-    <description>How often this worker should heartbeat to the supervisor.</description>
-  </property>
-  <property>
-    <name>task.heartbeat.frequency.secs</name>
-    <value>3</value>
-    <description>How often a task should heartbeat its status to the master.</description>
-  </property>
-  <property>
-    <name>task.refresh.poll.secs</name>
-    <value>10</value>
-    <description>How often a task should sync its connections with other tasks (if a task is
-       reassigned, the other tasks sending messages to it need to refresh their connections).
-       In general though, when a reassignment happens other tasks will be notified
-       almost immediately. This configuration is here just in case that notification doesn't
-       come through.</description>
-  </property>
-  <property>
-    <name>zmq.threads</name>
-    <value>1</value>
-    <description>The number of threads that should be used by the zeromq context in each worker process.</description>
-  </property>
-  <property>
-    <name>zmq.linger.millis</name>
-    <value>5000</value>
-    <description>How long a connection should retry sending messages to a target host when
-       the connection is closed. This is an advanced configuration and can almost
-       certainly be ignored.</description>
-  </property>
-  <property>
-    <name>zmq.hwm</name>
-    <value>0</value>
-    <description>The high water for the ZeroMQ push sockets used for networking. Use this config to prevent buffer explosion
-       on the networking layer.</description>
-  </property>
-  <property>
-    <name>storm.messaging.netty.server_worker_threads</name>
-    <value>1</value>
-    <description>Netty based messaging: The # of worker threads for the server.</description>
-  </property>
-  <property>
-    <name>storm.messaging.netty.client_worker_threads</name>
-    <value>1</value>
-    <description>Netty based messaging: The # of worker threads for the client.</description>
-  </property>
-  <property>
-    <name>storm.messaging.netty.buffer_size</name>
-    <value>5242880</value>
-    <description>Netty based messaging: The buffer size for send/recv buffer.</description>
-  </property>
-  <property>
-    <name>storm.messaging.netty.max_retries</name>
-    <value>30</value>
-    <description>Netty based messaging: The max # of retries that a peer will perform when a remote is not accessible.</description>
-  </property>
-  <property>
-    <name>storm.messaging.netty.max_wait_ms</name>
-    <value>1000</value>
-    <description>Netty based messaging: The max # of milliseconds that a peer will wait.</description>
-  </property>
-  <property>
-    <name>storm.messaging.netty.min_wait_ms</name>
-    <value>100</value>
-    <description>Netty based messaging: The min # of milliseconds that a peer will wait.</description>
-  </property>
-  <property>
-    <name>topology.enable.message.timeouts</name>
-    <value>true</value>
-    <description>True if Storm should timeout messages or not. Defaults to true. This is meant to be used
-       in unit tests to prevent tuples from being accidentally timed out during the test.</description>
-  </property>
-  <property>
-    <name>topology.debug</name>
-    <value>false</value>
-    <description>When set to true, Storm will log every message that's emitted.</description>
-  </property>
-  <property>
-    <name>topology.optimize</name>
-    <value>true</value>
-    <description>Whether or not the master should optimize topologies by running multiple tasks in a single thread where appropriate.</description>
-  </property>
-  <property>
-    <name>topology.workers</name>
-    <value>1</value>
-    <description>How many processes should be spawned around the cluster to execute this
-       topology. Each process will execute some number of tasks as threads within
-       them. This parameter should be used in conjunction with the parallelism hints
-       on each component in the topology to tune the performance of a topology.</description>
-  </property>
-  <property>
-    <name>topology.acker.executors</name>
-    <value>null</value>
-    <description>How many executors to spawn for ackers.
-
-      If this is set to 0, then Storm will immediately ack tuples as soon
-       as they come off the spout, effectively disabling reliability.
-    </description>
-  </property>
-  <property>
-    <name>topology.message.timeout.secs</name>
-    <value>30</value>
-    <description>The maximum amount of time given to the topology to fully process a message
-       emitted by a spout. If the message is not acked within this time frame, Storm
-       will fail the message on the spout. Some spouts implementations will then replay
-       the message at a later time.</description>
-  </property>
-  <property>
-    <name>topology.skip.missing.kryo.registrations</name>
-    <value>false</value>
-    <description> Whether or not Storm should skip the loading of kryo registrations for which it
-       does not know the class or have the serializer implementation. Otherwise, the task will
-       fail to load and will throw an error at runtime. The use case of this is if you want to
-       declare your serializations on the storm.yaml files on the cluster rather than every single
-       time you submit a topology. Different applications may use different serializations and so
-       a single application may not have the code for the other serializers used by other apps.
-       By setting this config to true, Storm will ignore that it doesn't have those other serializations
-       rather than throw an error.</description>
-  </property>
-  <property>
-    <name>topology.max.task.parallelism</name>
-    <value>null</value>
-    <description>The maximum parallelism allowed for a component in this topology. This configuration is
-       typically used in testing to limit the number of threads spawned in local mode.</description>
-  </property>
-  <property>
-    <name>topology.max.spout.pending</name>
-    <value>null</value>
-    <description>The maximum number of tuples that can be pending on a spout task at any given time.
-       This config applies to individual tasks, not to spouts or topologies as a whole.
-
-       A pending tuple is one that has been emitted from a spout but has not been acked or failed yet.
-       Note that this config parameter has no effect for unreliable spouts that don't tag
-       their tuples with a message id.</description>
-  </property>
-  <property>
-    <name>topology.state.synchronization.timeout.secs</name>
-    <value>60</value>
-    <description>The maximum amount of time a component gives a source of state to synchronize before it requests
-       synchronization again.</description>
-  </property>
-  <property>
-    <name>topology.stats.sample.rate</name>
-    <value>0.05</value>
-    <description>The percentage of tuples to sample to produce stats for a task.</description>
-  </property>
-  <property>
-    <name>topology.builtin.metrics.bucket.size.secs</name>
-    <value>60</value>
-    <description>The time period that builtin metrics data in bucketed into.</description>
-  </property>
-  <property>
-    <name>topology.fall.back.on.java.serialization</name>
-    <value>true</value>
-    <description>Whether or not to use Java serialization in a topology.</description>
-  </property>
-  <property>
-    <name>topology.worker.childopts</name>
-    <value>null</value>
-    <description>Topology-specific options for the worker child process. This is used in addition to WORKER_CHILDOPTS.</description>
-  </property>
-  <property>
-    <name>topology.executor.receive.buffer.size</name>
-    <value>1024</value>
-    <description>The size of the Disruptor receive queue for each executor. Must be a power of 2.</description>
-  </property>
-  <property>
-    <name>topology.executor.send.buffer.size</name>
-    <value>1024</value>
-    <description>The size of the Disruptor send queue for each executor. Must be a power of 2.</description>
-  </property>
-  <property>
-    <name>topology.receiver.buffer.size</name>
-    <value>8</value>
-    <description>The maximum number of messages to batch from the thread receiving off the network to the
-       executor queues. Must be a power of 2.</description>
-  </property>
-  <property>
-    <name>topology.transfer.buffer.size</name>
-    <value>1024</value>
-    <description>The size of the Disruptor transfer queue for each worker.</description>
-  </property>
-  <property>
-    <name>topology.tick.tuple.freq.secs</name>
-    <value>null</value>
-    <description>How often a tick tuple from the "__system" component and "__tick" stream should be sent
-       to tasks. Meant to be used as a component-specific configuration.</description>
-  </property>
-  <property>
-    <name>topology.worker.shared.thread.pool.size</name>
-    <value>4</value>
-    <description>The size of the shared thread pool for worker tasks to make use of. The thread pool can be accessed
-       via the TopologyContext.</description>
-  </property>
-  <property>
-    <name>topology.disruptor.wait.strategy</name>
-    <value>com.lmax.disruptor.BlockingWaitStrategy</value>
-    <description>Configure the wait strategy used for internal queuing. Can be used to tradeoff latency
-       vs. throughput.</description>
-  </property>
-  <property>
-    <name>topology.executor.send.buffer.size</name>
-    <value>1024</value>
-    <description>The size of the Disruptor send queue for each executor. Must be a power of 2.</description>
-  </property>
-  <property>
-    <name>topology.receiver.buffer.size</name>
-    <value>8</value>
-    <description>The maximum number of messages to batch from the thread receiving off the network to the
-       executor queues. Must be a power of 2.</description>
-  </property>
-  <property>
-    <name>topology.transfer.buffer.size</name>
-    <value>1024</value>
-    <description>The size of the Disruptor transfer queue for each worker.</description>
-  </property>
-  <property>
-    <name>topology.tick.tuple.freq.secs</name>
-    <value>null</value>
-    <description>How often a tick tuple from the "__system" component and "__tick" stream should be sent
-       to tasks. Meant to be used as a component-specific configuration.</description>
-  </property>
-  <property>
-    <name>topology.worker.shared.thread.pool.size</name>
-    <value>4</value>
-    <description>The size of the shared thread pool for worker tasks to make use of. The thread pool can be accessed
-       via the TopologyContext.</description>
-  </property>
-  <property>
-    <name>topology.spout.wait.strategy</name>
-    <value>backtype.storm.spout.SleepSpoutWaitStrategy</value>
-    <description>A class that implements a strategy for what to do when a spout needs to wait. Waiting is
-       triggered in one of two conditions:
-
-       1. nextTuple emits no tuples
-       2. The spout has hit maxSpoutPending and can't emit any more tuples</description>
-  </property>
-  <property>
-    <name>topology.sleep.spout.wait.strategy.time.ms</name>
-    <value>1</value>
-    <description>The amount of milliseconds the SleepEmptyEmitStrategy should sleep for.</description>
-  </property>
-  <property>
-    <name>topology.error.throttle.interval.secs</name>
-    <value>10</value>
-    <description>The interval in seconds to use for determining whether to throttle error reported to Zookeeper. For example,
-       an interval of 10 seconds with topology.max.error.report.per.interval set to 5 will only allow 5 errors to be
-       reported to Zookeeper per task for every 10 second interval of time.</description>
-  </property>
-  <property>
-    <name>topology.max.error.report.per.interval</name>
-    <value>5</value>
-    <description>The interval in seconds to use for determining whether to throttle error reported to Zookeeper. For example,
-       an interval of 10 seconds with topology.max.error.report.per.interval set to 5 will only allow 5 errors to be
-       reported to Zookeeper per task for every 10 second interval of time.</description>
-  </property>
-  <property>
-    <name>topology.kryo.factory</name>
-    <value>backtype.storm.serialization.DefaultKryoFactory</value>
-    <description>Class that specifies how to create a Kryo instance for serialization. Storm will then apply
-       topology.kryo.register and topology.kryo.decorators on top of this. The default implementation
-       implements topology.fall.back.on.java.serialization and turns references off.</description>
-  </property>
-  <property>
-    <name>topology.tuple.serializer</name>
-    <value>backtype.storm.serialization.types.ListDelegateSerializer</value>
-    <description>The serializer class for ListDelegate (tuple payload).
-       The default serializer will be ListDelegateSerializer</description>
-  </property>
-  <property>
-    <name>topology.trident.batch.emit.interval.millis</name>
-    <value>500</value>
-    <description>How often a batch can be emitted in a Trident topology.</description>
-  </property>
-  <property>
-    <name>dev.zookeeper.path</name>
-    <value>/tmp/dev-storm-zookeeper</value>
-    <description>The path to use as the zookeeper dir when running a zookeeper server via
-       "storm dev-zookeeper". This zookeeper instance is only intended for development;
-       it is not a production grade zookeeper setup.</description>
-  </property>
-</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/32c7ea98/app-packages/storm-v0_91/ganglia_metrics.json
----------------------------------------------------------------------
diff --git a/app-packages/storm-v0_91/ganglia_metrics.json b/app-packages/storm-v0_91/ganglia_metrics.json
deleted file mode 100644
index 861c4fa..0000000
--- a/app-packages/storm-v0_91/ganglia_metrics.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
-    "Component": {
-        "NIMBUS": {
-            "totalslots": {
-                "metric": "Total Slots",
-                "pointInTime": false,
-                "temporal": true
-            },
-            "totalexecutors": {
-                "metric": "Total Executors",
-                "pointInTime": false,
-                "temporal": true
-            },
-            "topologies": {
-                "metric": "Topologies",
-                "pointInTime": false,
-                "temporal": true
-            },
-            "totaltasks": {
-                "metric": "Total Tasks",
-                "pointInTime": false,
-                "temporal": true
-            },
-            "usedslots": {
-                "metric": "Used Slots",
-                "pointInTime": false,
-                "temporal": true
-            }
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/32c7ea98/app-packages/storm-v0_91/jmx_metrics.json
----------------------------------------------------------------------
diff --git a/app-packages/storm-v0_91/jmx_metrics.json b/app-packages/storm-v0_91/jmx_metrics.json
deleted file mode 100644
index f7d4e60..0000000
--- a/app-packages/storm-v0_91/jmx_metrics.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
-    "Component": {
-        "NIMBUS": {
-            "FreeSlots": {
-                "metric": "$['slots.free']",
-                "pointInTime": true,
-                "temporal": false
-            },
-            "Tasks": {
-                "metric": "$['tasks.total']",
-                "pointInTime": true,
-                "temporal": false
-            },
-            "Executors": {
-                "metric": "$['executors.total']",
-                "pointInTime": true,
-                "temporal": false
-            },
-            "Topologies": {
-                "metric": "$['topologies']",
-                "pointInTime": true,
-                "temporal": false
-            },
-            "NimbusUptime": {
-                "metric": "$['nimbus.uptime']",
-                "pointInTime": true,
-                "temporal": false
-            }
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/32c7ea98/app-packages/storm-v0_91/metainfo.xml
----------------------------------------------------------------------
diff --git a/app-packages/storm-v0_91/metainfo.xml b/app-packages/storm-v0_91/metainfo.xml
deleted file mode 100644
index 7edd794..0000000
--- a/app-packages/storm-v0_91/metainfo.xml
+++ /dev/null
@@ -1,145 +0,0 @@
-<?xml version="1.0"?>
-<!--
-   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.
--->
-
-<metainfo>
-  <schemaVersion>2.0</schemaVersion>
-  <application>
-    <name>STORM</name>
-    <comment>Apache Hadoop Stream processing framework</comment>
-    <version>0.9.1.2.1</version>
-
-    <exportGroups>
-      <exportGroup>
-        <name>QuickLinks</name>
-        <exports>
-          <export>
-            <name>org.apache.slider.jmx</name>
-            <value>http://${STORM_REST_API_HOST}:${site.global.rest_api_port}/api/cluster/summary</value>
-          </export>
-          <export>
-            <name>org.apache.slider.monitor</name>
-            <value>http://${STORM_UI_SERVER_HOST}:${site.storm-site.ui.port}</value>
-          </export>
-          <export>
-            <name>org.apache.slider.metrics</name>
-            <value>http://${site.global.ganglia_server_host}/cgi-bin/rrd.py?c=${site.global.ganglia_server_id}</value>
-          </export>
-          <export>
-            <name>org.apache.slider.ganglia</name>
-            <value>http://${site.global.ganglia_server_host}/ganglia?c=${site.global.ganglia_server_id}</value>
-          </export>
-        </exports>
-      </exportGroup>
-    </exportGroups>
-
-    <commandOrders>
-      <commandOrder>
-        <command>NIMBUS-START</command>
-        <requires>SUPERVISOR-INSTALLED,STORM_UI_SERVER-INSTALLED,DRPC_SERVER-INSTALLED,STORM_REST_API-INSTALLED
-        </requires>
-      </commandOrder>
-      <commandOrder>
-        <command>SUPERVISOR-START</command>
-        <requires>NIMBUS-STARTED</requires>
-      </commandOrder>
-      <commandOrder>
-        <command>DRPC_SERVER-START</command>
-        <requires>NIMBUS-STARTED</requires>
-      </commandOrder>
-      <commandOrder>
-        <command>STORM_REST_API-START</command>
-        <requires>NIMBUS-STARTED,DRPC_SERVER-STARTED,STORM_UI_SERVER-STARTED</requires>
-      </commandOrder>
-      <commandOrder>
-        <command>STORM_UI_SERVER-START</command>
-        <requires>NIMBUS-STARTED</requires>
-      </commandOrder>
-    </commandOrders>
-
-    <components>
-
-      <component>
-        <name>NIMBUS</name>
-        <category>MASTER</category>
-        <commandScript>
-          <script>scripts/nimbus.py</script>
-          <scriptType>PYTHON</scriptType>
-          <timeout>600</timeout>
-        </commandScript>
-      </component>
-
-      <component>
-        <name>STORM_REST_API</name>
-        <category>MASTER</category>
-        <commandScript>
-          <script>scripts/rest_api.py</script>
-          <scriptType>PYTHON</scriptType>
-          <timeout>600</timeout>
-        </commandScript>
-      </component>
-
-      <component>
-        <name>SUPERVISOR</name>
-        <category>SLAVE</category>
-        <commandScript>
-          <script>scripts/supervisor.py</script>
-          <scriptType>PYTHON</scriptType>
-          <timeout>600</timeout>
-        </commandScript>
-      </component>
-
-      <component>
-        <name>STORM_UI_SERVER</name>
-        <category>MASTER</category>
-        <publishConfig>true</publishConfig>
-        <commandScript>
-          <script>scripts/ui_server.py</script>
-          <scriptType>PYTHON</scriptType>
-          <timeout>600</timeout>
-        </commandScript>
-      </component>
-
-      <component>
-        <name>DRPC_SERVER</name>
-        <category>MASTER</category>
-        <commandScript>
-          <script>scripts/drpc_server.py</script>
-          <scriptType>PYTHON</scriptType>
-          <timeout>600</timeout>
-        </commandScript>
-      </component>
-    </components>
-
-    <osSpecifics>
-      <osSpecific>
-        <osType>any</osType>
-        <packages>
-          <package>
-            <type>tarball</type>
-            <name>files/apache-storm-0.9.1.2.1.1.0-237.tar.gz</name>
-          </package>
-        </packages>
-      </osSpecific>
-    </osSpecifics>
-
-    <configuration-dependencies>
-      <config-type>storm-site</config-type>
-      <config-type>global</config-type>
-    </configuration-dependencies>
-  </application>
-</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/32c7ea98/app-packages/storm-v0_91/package/files/apache-storm-0.9.1.2.1.1.0-237.tar.gz.REPLACE
----------------------------------------------------------------------
diff --git a/app-packages/storm-v0_91/package/files/apache-storm-0.9.1.2.1.1.0-237.tar.gz.REPLACE b/app-packages/storm-v0_91/package/files/apache-storm-0.9.1.2.1.1.0-237.tar.gz.REPLACE
deleted file mode 100644
index dd934d5..0000000
--- a/app-packages/storm-v0_91/package/files/apache-storm-0.9.1.2.1.1.0-237.tar.gz.REPLACE
+++ /dev/null
@@ -1,16 +0,0 @@
-# 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.
-
-Replace with the actual storm package.

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/32c7ea98/app-packages/storm-v0_91/package/scripts/drpc_server.py
----------------------------------------------------------------------
diff --git a/app-packages/storm-v0_91/package/scripts/drpc_server.py b/app-packages/storm-v0_91/package/scripts/drpc_server.py
deleted file mode 100644
index a01d0f0..0000000
--- a/app-packages/storm-v0_91/package/scripts/drpc_server.py
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/usr/bin/env python
-"""
-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.
-
-"""
-
-import sys
-from resource_management import *
-from storm import storm
-from service import service
-
-class DrpcServer(Script):
-  def install(self, env):
-    self.install_packages(env)
-
-  def configure(self, env):
-    import params
-    env.set_params(params)
-
-    storm()
-
-  def start(self, env):
-    import params
-    env.set_params(params)
-    self.configure(env)
-
-    service("drpc", action="start")
-
-  def stop(self, env):
-    import params
-    env.set_params(params)
-
-    service("drpc", action="stop")
-
-  def status(self, env):
-    import status_params
-    env.set_params(status_params)
-    check_process_status(status_params.pid_drpc)
-
-if __name__ == "__main__":
-  DrpcServer().execute()

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/32c7ea98/app-packages/storm-v0_91/package/scripts/nimbus.py
----------------------------------------------------------------------
diff --git a/app-packages/storm-v0_91/package/scripts/nimbus.py b/app-packages/storm-v0_91/package/scripts/nimbus.py
deleted file mode 100644
index c7c3120..0000000
--- a/app-packages/storm-v0_91/package/scripts/nimbus.py
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/usr/bin/env python
-"""
-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.
-
-"""
-
-import sys
-from resource_management import *
-from storm import storm
-from service import service
-
-class Nimbus(Script):
-  def install(self, env):
-    self.install_packages(env)
-
-  def configure(self, env):
-    import params
-    env.set_params(params)
-
-    storm()
-
-  def start(self, env):
-    import params
-    env.set_params(params)
-    self.configure(env)
-
-    service("nimbus", action="start")
-
-  def stop(self, env):
-    import params
-    env.set_params(params)
-
-    service("nimbus", action="stop")
-
-  def status(self, env):
-    import status_params
-    env.set_params(status_params)
-    check_process_status(status_params.pid_nimbus)
-
-if __name__ == "__main__":
-  Nimbus().execute()

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/32c7ea98/app-packages/storm-v0_91/package/scripts/params.py
----------------------------------------------------------------------
diff --git a/app-packages/storm-v0_91/package/scripts/params.py b/app-packages/storm-v0_91/package/scripts/params.py
deleted file mode 100644
index cf21b27..0000000
--- a/app-packages/storm-v0_91/package/scripts/params.py
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/usr/bin/env python
-"""
-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.
-
-"""
-
-from resource_management import *
-import status_params
-
-# server configurations
-config = Script.get_config()
-
-app_root = config['configurations']['global']['app_root']
-conf_dir = format("{app_root}/conf")
-storm_user = config['configurations']['global']['app_user']
-log_dir = config['configurations']['global']['app_log_dir']
-pid_dir = status_params.pid_dir
-local_dir = config['configurations']['storm-site']['storm.local.dir']
-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")
-
-ganglia_installed = config['configurations']['global']['ganglia_enabled']
-if ganglia_installed:
-  ganglia_report_interval = 60
-  ganglia_server = config['configurations']['global']['ganglia_server_host']
-  ganglia_port = config['configurations']['global']['ganglia_server_port']
-
-_authentication = config['configurations']['core-site']['hadoop.security.authentication']
-security_enabled = ( not is_empty(_authentication) and _authentication == 'kerberos')
-
-if security_enabled:
-  _hostname_lowercase = config['hostname'].lower()
-  _kerberos_domain = config['configurations']['global']['kerberos_domain']
-  _storm_principal_name = config['configurations']['global']['storm_principal_name']
-  storm_jaas_principal = _storm_principal_name.replace('_HOST', _hostname_lowercase)
-  storm_keytab_path = config['configurations']['global']['storm_keytab']

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/32c7ea98/app-packages/storm-v0_91/package/scripts/rest_api.py
----------------------------------------------------------------------
diff --git a/app-packages/storm-v0_91/package/scripts/rest_api.py b/app-packages/storm-v0_91/package/scripts/rest_api.py
deleted file mode 100644
index 33d8924..0000000
--- a/app-packages/storm-v0_91/package/scripts/rest_api.py
+++ /dev/null
@@ -1,57 +0,0 @@
-#!/usr/bin/env python
-"""
-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.
-
-"""
-
-import sys
-from resource_management import *
-from storm import storm
-from service import service
-
-
-class StormRestApi(Script):
-  def install(self, env):
-    self.install_packages(env)
-    self.configure(env)
-
-  def configure(self, env):
-    import params
-    env.set_params(params)
-
-    storm()
-
-  def start(self, env):
-    import params
-    env.set_params(params)
-    self.configure(env)
-
-    service("rest_api", action="start")
-
-  def stop(self, env):
-    import params
-    env.set_params(params)
-
-    service("rest_api", action="stop")
-
-  def status(self, env):
-    import status_params
-    env.set_params(status_params)
-    check_process_status(status_params.pid_rest_api)
-
-if __name__ == "__main__":
-  StormRestApi().execute()

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/32c7ea98/app-packages/storm-v0_91/package/scripts/service.py
----------------------------------------------------------------------
diff --git a/app-packages/storm-v0_91/package/scripts/service.py b/app-packages/storm-v0_91/package/scripts/service.py
deleted file mode 100644
index 10fa5b9..0000000
--- a/app-packages/storm-v0_91/package/scripts/service.py
+++ /dev/null
@@ -1,95 +0,0 @@
-#!/usr/bin/env python
-"""
-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.
-
-"""
-
-
-from resource_management import *
-import time
-
-
-def service(
-    name,
-    action='start'):
-  import params
-  import status_params
-
-  pid_file = status_params.pid_files[name]
-  no_op_test = format("ls {pid_file} >/dev/null 2>&1 && ps `cat {pid_file}` >/dev/null 2>&1")
-  jps_path = format("{java64_home}/bin/jps")
-  grep_and_awk = "| grep -v grep | awk '{print $1}'"
-
-  if name == 'ui':
-    #process_cmd = "^java.+backtype.storm.ui.core$"
-    pid_chk_cmd = format("{jps_path} -vl | grep \"^[0-9 ]*backtype.storm.ui.core\" {grep_and_awk}  > {pid_file}")
-  elif name == "rest_api":
-    process_cmd = format("{java64_home}/bin/java -jar {rest_lib_dir}/`ls {rest_lib_dir} | grep -wE storm-rest-[0-9.-]+\.jar` server")
-    crt_pid_cmd = format("pgrep -f \"{process_cmd}\" && pgrep -f \"{process_cmd}\" > {pid_file}")
-  else:
-    #process_cmd = format("^java.+backtype.storm.daemon.{name}$")
-    pid_chk_cmd = format("{jps_path} -vl | grep \"^[0-9 ]*backtype.storm.daemon.{name}\" {grep_and_awk}  > {pid_file}")
-
-  if action == "start":
-    if name == "rest_api":
-      cmd = format("{process_cmd} {rest_api_conf_file} > {log_dir}/restapi.log")
-    else:
-      cmd = format("env JAVA_HOME={java64_home} PATH=$PATH:{java64_home}/bin STORM_BASE_DIR={app_root} STORM_CONF_DIR={conf_dir} {storm_bin} {name}")
-
-    Execute(cmd,
-            not_if=no_op_test,
-            user=params.storm_user,
-            logoutput=False,
-            wait_for_finish=False
-    )
-
-    if name == "rest_api":
-      Execute(crt_pid_cmd,
-              user=params.storm_user,
-              logoutput=True,
-              tries=6,
-              try_sleep=10
-      )
-    else:
-      content = None
-      for i in xrange(12):
-        Execute(pid_chk_cmd,
-                user=params.storm_user,
-                logoutput=True
-        )
-        with open(pid_file) as f:
-          content = f.readline().strip()
-        if content.isdigit():
-          break;
-        File(pid_file, action = "delete")
-        time.sleep(10)
-        pass
-
-      if not content.isdigit():
-        raise Fail(format("Unable to start {name}"))
-
-  elif action == "stop":
-    process_dont_exist = format("! ({no_op_test})")
-    pid = format("`cat {pid_file}` >/dev/null 2>&1")
-    Execute(format("kill {pid}"),
-            not_if=process_dont_exist
-    )
-    Execute(format("kill -9 {pid}"),
-            not_if=format("sleep 2; {process_dont_exist} || sleep 20; {process_dont_exist}"),
-            ignore_failures=True
-    )
-    Execute(format("rm -f {pid_file}"))

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/32c7ea98/app-packages/storm-v0_91/package/scripts/status_params.py
----------------------------------------------------------------------
diff --git a/app-packages/storm-v0_91/package/scripts/status_params.py b/app-packages/storm-v0_91/package/scripts/status_params.py
deleted file mode 100644
index eab83cf..0000000
--- a/app-packages/storm-v0_91/package/scripts/status_params.py
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/env python
-"""
-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.
-
-"""
-from resource_management import *
-
-config = Script.get_config()
-
-pid_dir = config['configurations']['global']['app_pid_dir']
-pid_nimbus = format("{pid_dir}/nimbus.pid")
-pid_supervisor = format("{pid_dir}/supervisor.pid")
-pid_drpc = format("{pid_dir}/drpc.pid")
-pid_ui = format("{pid_dir}/ui.pid")
-pid_logviewer = format("{pid_dir}/logviewer.pid")
-pid_rest_api = format("{pid_dir}/restapi.pid")
-pid_files = {"logviewer":pid_logviewer,
-             "ui": pid_ui,
-             "nimbus": pid_nimbus,
-             "supervisor": pid_supervisor,
-             "drpc": pid_drpc,
-             "rest_api": pid_rest_api}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/32c7ea98/app-packages/storm-v0_91/package/scripts/storm.py
----------------------------------------------------------------------
diff --git a/app-packages/storm-v0_91/package/scripts/storm.py b/app-packages/storm-v0_91/package/scripts/storm.py
deleted file mode 100644
index bce272b..0000000
--- a/app-packages/storm-v0_91/package/scripts/storm.py
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/usr/bin/env python
-"""
-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.
-
-"""
-
-from resource_management import *
-from yaml_config import yaml_config
-import sys
-
-def storm():
-  import params
-
-  Directory([params.log_dir, params.pid_dir, params.local_dir, params.conf_dir],
-            owner=params.storm_user,
-            group=params.user_group,
-            recursive=True
-  )
-
-  File(format("{conf_dir}/config.yaml"),
-            content=Template("config.yaml.j2"),
-            owner = params.storm_user,
-            group = params.user_group
-  )
-
-  yaml_config( "storm.yaml",
-               conf_dir = params.conf_dir,
-               configurations = params.config['configurations']['storm-site'],
-               owner = params.storm_user,
-               group = params.user_group
-  )
-  
-  if params.security_enabled:
-    TemplateConfig( format("{conf_dir}/storm_jaas.conf"),
-      owner = params.storm_user
-    )
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/32c7ea98/app-packages/storm-v0_91/package/scripts/supervisor.py
----------------------------------------------------------------------
diff --git a/app-packages/storm-v0_91/package/scripts/supervisor.py b/app-packages/storm-v0_91/package/scripts/supervisor.py
deleted file mode 100644
index 47c20c9..0000000
--- a/app-packages/storm-v0_91/package/scripts/supervisor.py
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/usr/bin/env python
-"""
-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.
-
-"""
-
-import sys
-from resource_management import *
-from yaml_config import yaml_config
-from storm import storm
-from service import service
-
-
-class Supervisor(Script):
-  def install(self, env):
-    self.install_packages(env)
-
-  def configure(self, env):
-    import params
-    env.set_params(params)
-    storm()
-
-  def start(self, env):
-    import params
-    env.set_params(params)
-    self.configure(env)
-
-    service("supervisor", action="start")
-    service("logviewer", action="start")
-
-  def stop(self, env):
-    import params
-    env.set_params(params)
-
-    service("supervisor", action="stop")
-    service("logviewer", action="stop")
-
-  def status(self, env):
-    import status_params
-    env.set_params(status_params)
-
-    check_process_status(status_params.pid_supervisor)
-
-
-if __name__ == "__main__":
-  Supervisor().execute()
-

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/32c7ea98/app-packages/storm-v0_91/package/scripts/ui_server.py
----------------------------------------------------------------------
diff --git a/app-packages/storm-v0_91/package/scripts/ui_server.py b/app-packages/storm-v0_91/package/scripts/ui_server.py
deleted file mode 100644
index 0fe7cd2..0000000
--- a/app-packages/storm-v0_91/package/scripts/ui_server.py
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/usr/bin/env python
-"""
-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.
-
-"""
-
-import sys
-from resource_management import *
-from storm import storm
-from service import service
-
-class UiServer(Script):
-  def install(self, env):
-    self.install_packages(env)
-
-  def configure(self, env):
-    import params
-    env.set_params(params)
-
-    storm()
-
-  def start(self, env):
-    import params
-    env.set_params(params)
-    self.configure(env)
-
-    service("ui", action="start")
-
-  def stop(self, env):
-    import params
-    env.set_params(params)
-
-    service("ui", action="stop")
-
-  def status(self, env):
-    import status_params
-    env.set_params(status_params)
-    check_process_status(status_params.pid_ui)
-
-if __name__ == "__main__":
-  UiServer().execute()

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/32c7ea98/app-packages/storm-v0_91/package/scripts/yaml_config.py
----------------------------------------------------------------------
diff --git a/app-packages/storm-v0_91/package/scripts/yaml_config.py b/app-packages/storm-v0_91/package/scripts/yaml_config.py
deleted file mode 100644
index 39261be..0000000
--- a/app-packages/storm-v0_91/package/scripts/yaml_config.py
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/usr/bin/env python
-"""
-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.
-
-"""
-
-import re
-from resource_management import *
-
-def escape_yaml_propetry(value):
-  unquouted = False
-  unquouted_values = ["null","Null","NULL","true","True","TRUE","false","False","FALSE","YES","Yes","yes","NO","No","no","ON","On","on","OFF","Off","off"]
-  
-  if value in unquouted_values:
-    unquouted = True
-
-  # if is list [a,b,c]
-  if re.match('^\w*\[.+\]\w*$', value):
-    unquouted = True
-    
-  try:
-    int(value)
-    unquouted = True
-  except ValueError:
-    pass
-  
-  try:
-    float(value)
-    unquouted = True
-  except ValueError:
-    pass
-  
-  if not unquouted:
-    value = value.replace("'","''")
-    value = "'"+value+"'"
-    
-  return value
-
-def yaml_config(
-  filename,
-  configurations = None,
-  conf_dir = None,
-  mode = None,
-  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])
-
-    File (format("{conf_dir}/{filename}"),
-      content = config_content,
-      owner = owner,
-      group = group,
-      mode = mode
-    )

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/32c7ea98/app-packages/storm-v0_91/package/templates/config.yaml.j2
----------------------------------------------------------------------
diff --git a/app-packages/storm-v0_91/package/templates/config.yaml.j2 b/app-packages/storm-v0_91/package/templates/config.yaml.j2
deleted file mode 100644
index 32d2c99..0000000
--- a/app-packages/storm-v0_91/package/templates/config.yaml.j2
+++ /dev/null
@@ -1,48 +0,0 @@
-# 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.
-
-nimbusHost: {{nimbus_host}}
-nimbusPort: {{nimbus_port}}
-
-# HTTP-specific options.
-http:
-
-  # The port on which the HTTP server listens for service requests.
-  port: {{rest_api_port}}
-
-  # The port on which the HTTP server listens for administrative requests.
-  adminPort: {{rest_api_admin_port}}
-
-{% if ganglia_installed %}
-enableGanglia: {{ganglia_installed}}
-
-# ganglia configuration (necessary if ganglia reporting is enabled)
-ganglia:
-
-  # how often to report to ganglia metrics (in seconds)
-  reportInterval: {{ganglia_report_interval}}
-
-  # the hostname of the gmond server where storm cluster metrics will be sent
-  host: {{ganglia_server}}
-  port: {{ganglia_port}}
-
-  # address mode
-  # default is MULTICAST
-  addressMode: "UNICAST"
-
-  # an <IP>:<HOSTNAME> pair to spoof
-  # this allows us to simulate storm cluster metrics coming from a specific host
-  #spoof: "192.168.1.1:storm"
-{% endif %}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/32c7ea98/app-packages/storm-v0_91/package/templates/storm_jaas.conf.j2
----------------------------------------------------------------------
diff --git a/app-packages/storm-v0_91/package/templates/storm_jaas.conf.j2 b/app-packages/storm-v0_91/package/templates/storm_jaas.conf.j2
deleted file mode 100644
index 4031d22..0000000
--- a/app-packages/storm-v0_91/package/templates/storm_jaas.conf.j2
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * 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.
- */
-Client {
-   com.sun.security.auth.module.Krb5LoginModule required
-   useKeyTab=true
-   keyTab="{{storm_keytab_path}}"
-   storeKey=true
-   useTicketCache=false
-   serviceName="zookeeper"
-   principal="{{storm_jaas_principal}}";
-};

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/32c7ea98/app-packages/storm-v0_91/resources.json
----------------------------------------------------------------------
diff --git a/app-packages/storm-v0_91/resources.json b/app-packages/storm-v0_91/resources.json
deleted file mode 100644
index b184a40..0000000
--- a/app-packages/storm-v0_91/resources.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
-  "schema" : "http://example.org/specification/v2.0.0",
-  "metadata" : {
-  },
-  "global" : {
-  },
-  "components": {
-    "slider-appmaster": {
-    },
-    "NIMBUS": {
-      "yarn.role.priority": "1",
-      "yarn.component.instances": "1"
-    },
-    "STORM_REST_API": {
-      "yarn.role.priority": "2",
-      "yarn.component.instances": "1"
-    },
-    "STORM_UI_SERVER": {
-      "yarn.role.priority": "3",
-      "yarn.component.instances": "1"
-    },
-    "DRPC_SERVER": {
-      "yarn.role.priority": "4",
-      "yarn.component.instances": "1"
-    },
-    "SUPERVISOR": {
-      "yarn.role.priority": "5",
-      "yarn.component.instances": "1"
-    }
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/32c7ea98/app-packages/storm/README.txt
----------------------------------------------------------------------
diff --git a/app-packages/storm/README.txt b/app-packages/storm/README.txt
new file mode 100644
index 0000000..971cf14
--- /dev/null
+++ b/app-packages/storm/README.txt
@@ -0,0 +1,37 @@
+<!---
+   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.
+-->
+
+How to create a Slider app package for Storm?
+
+To create the app package you will need the Storm tarball copied to a specific location.
+Various configurations provided in this sample are customized for apache-storm-0.9.1.2.1.1.0-237.tar.gz.
+So if you use a different version you may need to edit a few config values.
+
+Replace the placeholder tarball for Storm.
+  cp ~/Downloads/apache-storm-0.9.1.2.1.1.0-237.tar.gz package/files/
+  rm package/files/apache-storm-0.9.1.2.1.1.0-237.tar.gz.REPLACE
+
+Create a zip package at the root of the package (<slider enlistment>/app-packages/storm-v0_91/) 
+  zip -r storm_v091.zip .
+
+Verify the content using  
+  unzip -l "$@" storm_v091.zip
+
+While appConfig.json and resources.json are not required for the package they work
+well as the default configuration for Slider apps. So its advisable that when you
+create an application package for Slider, include sample/default resources.json and
+appConfig.json for a minimal Yarn cluster.