falcon-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From venkat...@apache.org
Subject [7/8] FALCON-1 Create packaging and scripts to install and try Apache Falcon. Contributed by Srikanth Sundarrajan
Date Wed, 10 Jul 2013 20:05:37 GMT
http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/61417357/oozie-el-extensions/src/test/java/org/apache/oozie/extensions/TestOozieELExtensions.java
----------------------------------------------------------------------
diff --git a/oozie-el-extensions/src/test/java/org/apache/oozie/extensions/TestOozieELExtensions.java b/oozie-el-extensions/src/test/java/org/apache/oozie/extensions/TestOozieELExtensions.java
new file mode 100644
index 0000000..b1e5e4f
--- /dev/null
+++ b/oozie-el-extensions/src/test/java/org/apache/oozie/extensions/TestOozieELExtensions.java
@@ -0,0 +1,278 @@
+/**
+ * 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.
+ */
+
+package org.apache.oozie.extensions;
+
+import java.io.File;
+
+import org.apache.oozie.client.CoordinatorJob.Timeunit;
+import org.apache.oozie.client.OozieClient;
+import org.apache.oozie.coord.CoordELFunctions;
+import org.apache.oozie.coord.SyncCoordAction;
+import org.apache.oozie.coord.SyncCoordDataset;
+import org.apache.oozie.coord.TimeUnit;
+import org.apache.oozie.service.ConfigurationService;
+import org.apache.oozie.service.ELService;
+import org.apache.oozie.service.Services;
+import org.apache.oozie.util.DateUtils;
+import org.apache.oozie.util.ELEvaluator;
+import org.testng.Assert;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
+/**
+ * Test class for Falcon - Oozie el extensions.
+ */
+public class TestOozieELExtensions {
+
+    private ELEvaluator instEval;
+    private ELEvaluator createEval;
+
+    @BeforeClass
+    public void setUp() throws Exception {
+        String curPath = new File(".").getAbsolutePath();
+        System.setProperty(Services.OOZIE_HOME_DIR, curPath);
+        String confPath = new File(getClass().getResource("/oozie-site.xml").getFile()).getParent();
+        System.setProperty(ConfigurationService.OOZIE_CONFIG_DIR, confPath);
+        Services.setOozieHome();
+
+        Services services = new Services();
+        services.getConf().set("oozie.services", "org.apache.oozie.service.ELService");
+        services.init();
+
+        instEval = Services.get().get(ELService.class).createEvaluator("coord-action-create-inst");
+        instEval.setVariable(OozieClient.USER_NAME, "test_user");
+        instEval.setVariable(OozieClient.GROUP_NAME, "test_group");
+        createEval = Services.get().get(ELService.class).createEvaluator("coord-action-create");
+        createEval.setVariable(OozieClient.USER_NAME, "test_user");
+        createEval.setVariable(OozieClient.GROUP_NAME, "test_group");
+    }
+
+    @Test
+    public void testActionExpressions() throws Exception {
+        ELEvaluator eval = createActionStartEvaluator();
+        Assert.assertEquals(CoordELFunctions.evalAndWrap(eval, "${now(0, 0)}"), "2009-09-02T10:00Z");
+        Assert.assertEquals(CoordELFunctions.evalAndWrap(eval, "${now(1, 0)}"), "2009-09-02T11:00Z");
+
+        Assert.assertEquals(CoordELFunctions.evalAndWrap(eval, "${today(0, 0)}"), "2009-09-02T00:00Z");
+        Assert.assertEquals(CoordELFunctions.evalAndWrap(eval, "${today(-1, 0)}"), "2009-09-01T23:00Z");
+
+        Assert.assertEquals(CoordELFunctions.evalAndWrap(eval, "${yesterday(0, 0)}"), "2009-09-01T00:00Z");
+        Assert.assertEquals(CoordELFunctions.evalAndWrap(eval, "${yesterday(0, 60)}"), "2009-09-01T01:00Z");
+
+        Assert.assertEquals(CoordELFunctions.evalAndWrap(eval, "${currentMonth(0, 0, 0)}"), "2009-09-01T00:00Z");
+        Assert.assertEquals(CoordELFunctions.evalAndWrap(eval, "${currentMonth(-1, 0, 0)}"), "2009-08-31T00:00Z");
+
+        Assert.assertEquals(CoordELFunctions.evalAndWrap(eval, "${lastMonth(0, 0, 0)}"), "2009-08-01T00:00Z");
+        Assert.assertEquals(CoordELFunctions.evalAndWrap(eval, "${lastMonth(0, 1, 0)}"), "2009-08-01T01:00Z");
+
+        Assert.assertEquals(CoordELFunctions.evalAndWrap(eval, "${currentYear(0, 0, 0, 0)}"), "2009-01-01T00:00Z");
+        Assert.assertEquals(CoordELFunctions.evalAndWrap(eval, "${currentYear(0, -1, 0, 0)}"), "2008-12-31T00:00Z");
+
+        Assert.assertEquals(CoordELFunctions.evalAndWrap(eval, "${lastYear(0, 0, 0, 0)}"), "2008-01-01T00:00Z");
+        Assert.assertEquals(CoordELFunctions.evalAndWrap(eval, "${lastYear(1, 0, 0, 0)}"), "2008-02-01T00:00Z");
+
+        Assert.assertEquals(CoordELFunctions.evalAndWrap(eval, "${instanceTime()}"), "2009-09-02T10:00Z");
+
+        Assert.assertEquals(CoordELFunctions.evalAndWrap(eval, "${dateOffset(instanceTime(), 1, 'DAY')}"),
+                "2009-09-03T10:00Z");
+
+        Assert.assertEquals(CoordELFunctions.evalAndWrap(eval, "${formatTime(instanceTime(), 'yyyy-MMM-dd')}"),
+                "2009-Sep-02");
+    }
+
+    @Test
+    public void testUser() throws Exception {
+        ELEvaluator eval = Services.get().get(ELService.class).createEvaluator("coord-action-start");
+        eval.setVariable(OozieClient.USER_NAME, "test");
+        Assert.assertEquals(CoordELFunctions.evalAndWrap(eval, "${user()}"), "test");
+    }
+
+    @Test
+    public void testDataIn() throws Exception {
+        ELEvaluator eval = createActionStartEvaluator();
+        String uris = "hdfs://localhost:8020/clicks/2009/09/02/10,hdfs://localhost:8020/clicks/2009/09/02/09";
+        eval.setVariable(".datain.clicks", uris);
+        String expuris =
+                "hdfs://localhost:8020/clicks/2009/09/02/10/*/US,hdfs://localhost:8020/clicks/2009/09/02/09/*/US";
+        Assert.assertEquals(expuris, CoordELFunctions.evalAndWrap(eval, "${dataIn('clicks', '*/US')}"));
+
+        //test optional input
+        String inName = "clicks";
+        SyncCoordDataset ds = createDataSet("2007-09-30T010:00Z");
+        eval.setVariable(inName + ".frequency", String.valueOf(ds.getFrequency()));
+        eval.setVariable(inName + ".freq_timeunit", ds.getTimeUnit().name());
+        eval.setVariable(inName + ".timezone", ds.getTimeZone().getID());
+        eval.setVariable(inName + ".end_of_duration", Timeunit.NONE.name());
+        eval.setVariable(inName + ".initial-instance", DateUtils.formatDateUTC(ds.getInitInstance()));
+        eval.setVariable(inName + ".done-flag", "notused");
+        eval.setVariable(inName + ".uri-template", ds.getUriTemplate());
+        eval.setVariable(inName + ".start-instance", "now(-1,0)");
+        eval.setVariable(inName + ".end-instance", "now(0,0)");
+        eval.setVariable(".datain.clicks", null);
+        Assert.assertEquals(expuris, CoordELFunctions.evalAndWrap(eval, "${dataIn('clicks', '*/US')}"));
+    }
+
+    @Test
+    public void testCurrentMonth() throws Exception {
+        initForCurrentThread();
+
+        String expr = "${currentMonth(0,0,0)}";
+        String instResult = CoordELFunctions.evalAndWrap(instEval, expr);
+        Assert.assertEquals("2009-09-01T00:00Z", CoordELFunctions.evalAndWrap(createEval, getELExpression(instResult)));
+
+        expr = "${currentMonth(2,-1,0)}";
+        instResult = CoordELFunctions.evalAndWrap(instEval, expr);
+        Assert.assertEquals("2009-09-02T23:00Z", CoordELFunctions.evalAndWrap(createEval, getELExpression(instResult)));
+    }
+
+    private String getELExpression(String expr) {
+        if (expr != null) {
+            return "${" + expr + "}";
+        }
+        return null;
+    }
+
+    @Test
+    public void testToday() throws Exception {
+        initForCurrentThread();
+
+        String expr = "${today(0,0)}";
+        String instResult = CoordELFunctions.evalAndWrap(instEval, expr);
+        Assert.assertEquals("2009-09-02T00:00Z", CoordELFunctions.evalAndWrap(createEval, getELExpression(instResult)));
+
+        expr = "${today(1,-20)}";
+        instResult = CoordELFunctions.evalAndWrap(instEval, expr);
+        Assert.assertEquals("2009-09-02T00:00Z", CoordELFunctions.evalAndWrap(createEval, getELExpression(instResult)));
+    }
+
+    @Test
+    public void testNow() throws Exception {
+        initForCurrentThread();
+
+        String expr = "${now(0,0)}";
+        String instResult = CoordELFunctions.evalAndWrap(instEval, expr);
+        Assert.assertEquals("2009-09-02T10:00Z", CoordELFunctions.evalAndWrap(createEval, getELExpression(instResult)));
+
+        expr = "${now(2,-10)}";
+        instResult = CoordELFunctions.evalAndWrap(instEval, expr);
+        Assert.assertEquals("2009-09-02T12:00Z", CoordELFunctions.evalAndWrap(createEval, getELExpression(instResult)));
+    }
+
+    @Test
+    public void testYesterday() throws Exception {
+        initForCurrentThread();
+
+        String expr = "${yesterday(0,0)}";
+        String instResult = CoordELFunctions.evalAndWrap(instEval, expr);
+        Assert.assertEquals("2009-09-01T00:00Z", CoordELFunctions.evalAndWrap(createEval, getELExpression(instResult)));
+
+        expr = "${yesterday(1,10)}";
+        instResult = CoordELFunctions.evalAndWrap(instEval, expr);
+        Assert.assertEquals("2009-09-01T01:00Z", CoordELFunctions.evalAndWrap(createEval, getELExpression(instResult)));
+    }
+
+    @Test
+    public void testLastMonth() throws Exception {
+        initForCurrentThread();
+
+        String expr = "${lastMonth(0,0,0)}";
+        String instResult = CoordELFunctions.evalAndWrap(instEval, expr);
+        Assert.assertEquals("2009-08-01T00:00Z", CoordELFunctions.evalAndWrap(createEval, getELExpression(instResult)));
+
+        expr = "${lastMonth(1,1,10)}";
+        instResult = CoordELFunctions.evalAndWrap(instEval, expr);
+        Assert.assertEquals("2009-08-02T01:00Z", CoordELFunctions.evalAndWrap(createEval, getELExpression(instResult)));
+    }
+
+    @Test
+    public void testCurrentYear() throws Exception {
+        initForCurrentThread();
+
+        String expr = "${currentYear(0,0,0,0)}";
+        String instResult = CoordELFunctions.evalAndWrap(instEval, expr);
+        Assert.assertEquals("2009-01-01T00:00Z", CoordELFunctions.evalAndWrap(createEval, getELExpression(instResult)));
+
+        expr = "${currentYear(1,0,1,0)}";
+        instResult = CoordELFunctions.evalAndWrap(instEval, expr);
+        Assert.assertEquals("2009-02-01T01:00Z", CoordELFunctions.evalAndWrap(createEval, getELExpression(instResult)));
+    }
+
+    @Test
+    public void testLastYear() throws Exception {
+        initForCurrentThread();
+
+        String expr = "${lastYear(0,0,0,0)}";
+        String instResult = CoordELFunctions.evalAndWrap(instEval, expr);
+        Assert.assertEquals("2008-01-01T00:00Z", CoordELFunctions.evalAndWrap(createEval, getELExpression(instResult)));
+
+        expr = "${lastYear(1,0,1,0)}";
+        instResult = CoordELFunctions.evalAndWrap(instEval, expr);
+        Assert.assertEquals("2008-02-01T01:00Z", CoordELFunctions.evalAndWrap(createEval, getELExpression(instResult)));
+    }
+
+    @Test
+    public void testNominalGreaterThanInitial() throws Exception {
+        initForCurrentThread("2009-08-30T010:00Z", "2009-09-02T11:30Z", "2009-09-02T10:30Z");
+        String expr = "${currentYear(0,0,0,0)}";
+        Assert.assertEquals("", CoordELFunctions.evalAndWrap(instEval, expr));
+    }
+
+    private void initForCurrentThread() throws Exception {
+        initForCurrentThread("2007-09-30T010:00Z", "2009-09-02T11:30Z", "2009-09-02T10:30Z");
+    }
+
+    private SyncCoordDataset createDataSet(String initialInstance) throws Exception {
+        SyncCoordDataset ds;
+        ds = new SyncCoordDataset();
+        ds.setFrequency(1);
+        ds.setInitInstance(DateUtils.parseDateUTC(initialInstance));
+        ds.setTimeUnit(TimeUnit.HOUR);
+        ds.setTimeZone(DateUtils.getTimeZone("UTC"));
+        ds.setName("test");
+        ds.setUriTemplate("hdfs://localhost:8020/clicks/${YEAR}/${MONTH}/${DAY}/${HOUR}");
+        ds.setType("SYNC");
+        ds.setDoneFlag("");
+        return ds;
+    }
+
+    private SyncCoordAction createCoordAction(String actualTime, String nominalTime) throws Exception {
+        SyncCoordAction appInst;
+        appInst = new SyncCoordAction();
+        appInst.setActualTime(DateUtils.parseDateUTC(actualTime));
+        appInst.setNominalTime(DateUtils.parseDateUTC(nominalTime));
+        appInst.setTimeZone(DateUtils.getTimeZone("UTC"));
+        appInst.setActionId("00000-oozie-C@1");
+        appInst.setName("mycoordinator-app");
+        return appInst;
+    }
+
+    private void initForCurrentThread(String initialInstance, String actualTime, String nominalTime) throws Exception {
+        SyncCoordDataset ds = createDataSet(initialInstance);
+        SyncCoordAction appInst = createCoordAction(actualTime, nominalTime);
+        CoordELFunctions.configureEvaluator(instEval, ds, appInst);
+        CoordELFunctions.configureEvaluator(createEval, ds, appInst);
+    }
+
+    private ELEvaluator createActionStartEvaluator() throws Exception {
+        SyncCoordAction appInst = createCoordAction("2009-09-02T11:30Z", "2009-09-02T10:00Z");
+        ELEvaluator eval = Services.get().get(ELService.class).createEvaluator("coord-action-start");
+        CoordELFunctions.configureEvaluator(eval, null, appInst);
+        return eval;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/61417357/oozie-el-extensions/src/test/resources/oozie-site.xml
----------------------------------------------------------------------
diff --git a/oozie-el-extensions/src/test/resources/oozie-site.xml b/oozie-el-extensions/src/test/resources/oozie-site.xml
new file mode 100644
index 0000000..9e8ba9b
--- /dev/null
+++ b/oozie-el-extensions/src/test/resources/oozie-site.xml
@@ -0,0 +1,363 @@
+<?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. -->
+<configuration>
+
+    <!-- Refer to the oozie-default.xml file for the complete list of Oozie configuration properties and their default values. -->
+
+    <!-- Uncomment to enable additional actions (email). <property> <name>oozie.service.ActionService.executor.ext.classes</name> <value> org.apache.oozie.action.email.EmailActionExecutor 
+        </value> </property> <property> <name>oozie.service.SchemaService.wf.ext.schemas</name> <value>email-action-0.1.xsd</value> </property> -->
+
+    <property>
+        <name>oozie.system.id</name>
+        <value>oozie-${user.name}</value>
+        <description>
+            The Oozie system ID.
+        </description>
+    </property>
+
+    <property>
+        <name>oozie.systemmode</name>
+        <value>NORMAL</value>
+        <description>
+            System mode for Oozie at startup.
+        </description>
+    </property>
+
+    <property>
+        <name>oozie.service.AuthorizationService.security.enabled</name>
+        <value>false</value>
+        <description>
+            Specifies whether security (user name/admin role) is enabled or not.
+            If disabled any user can manage Oozie system and manage any job.
+        </description>
+    </property>
+
+    <property>
+        <name>oozie.service.PurgeService.older.than</name>
+        <value>30</value>
+        <description>
+            Jobs older than this value, in days, will be purged by the PurgeService.
+        </description>
+    </property>
+
+    <property>
+        <name>oozie.service.PurgeService.purge.interval</name>
+        <value>3600</value>
+        <description>
+            Interval at which the purge service will run, in seconds.
+        </description>
+    </property>
+
+    <property>
+        <name>oozie.service.CallableQueueService.queue.size</name>
+        <value>1000</value>
+        <description>Max callable queue size</description>
+    </property>
+
+    <property>
+        <name>oozie.service.CallableQueueService.threads</name>
+        <value>10</value>
+        <description>Number of threads used for executing callables</description>
+    </property>
+
+    <property>
+        <name>oozie.service.CallableQueueService.callable.concurrency</name>
+        <value>3</value>
+        <description>
+            Maximum concurrency for a given callable type.
+            Each command is a callable type (submit, start, run, signal, job, jobs, suspend,resume, etc).
+            Each action type is
+            a callable type (Map-Reduce, Pig, SSH, FS, sub-workflow, etc).
+            All commands that use action executors (action-start, action-end, action-kill and action-check) use
+            the
+            action type as the callable type.
+        </description>
+    </property>
+
+    <property>
+        <name>oozie.service.coord.normal.default.timeout
+        </name>
+        <value>120</value>
+        <description>Default timeout for a coordinator action input check (in minutes) for normal job.
+            -1 means infinite timeout
+        </description>
+    </property>
+
+    <property>
+        <name>oozie.db.schema.name</name>
+        <value>oozie</value>
+        <description>
+            Oozie DataBase Name
+        </description>
+    </property>
+
+    <property>
+        <name>oozie.service.StoreService.create.db.schema</name>
+        <value>true</value>
+        <description>
+            Creates Oozie DB.
+
+            If set to true, it creates the DB schema if it does not exist. If the DB schema exists is a NOP.
+            If set to false, it does not create the DB
+            schema. If the DB schema does not exist it fails start up.
+        </description>
+    </property>
+
+    <property>
+        <name>oozie.service.StoreService.jdbc.driver</name>
+        <value>org.apache.derby.jdbc.EmbeddedDriver</value>
+        <description>
+            JDBC driver class.
+        </description>
+    </property>
+
+    <property>
+        <name>oozie.service.StoreService.jdbc.url</name>
+        <value>jdbc:derby:${oozie.data.dir}/${oozie.db.schema.name}-db;create=true</value>
+        <description>
+            JDBC URL.
+        </description>
+    </property>
+
+    <property>
+        <name>oozie.service.StoreService.jdbc.username</name>
+        <value>sa</value>
+        <description>
+            DB user name.
+        </description>
+    </property>
+
+    <property>
+        <name>oozie.service.StoreService.jdbc.password</name>
+        <value>
+        </value>
+        <description>
+            DB user password.
+
+            IMPORTANT: if password is emtpy leave a 1 space string, the service trims the value,
+            if empty Configuration assumes it is NULL.
+
+            IMPORTANT: if
+            the StoreServicePasswordService is active, it will reset this value with the value given in
+            the console.
+        </description>
+    </property>
+
+    <property>
+        <name>oozie.service.StoreService.pool.max.active.conn</name>
+        <value>10</value>
+        <description>
+            Max number of connections.
+        </description>
+    </property>
+
+    <property>
+        <name>oozie.service.HadoopAccessorService.kerberos.enabled</name>
+        <value>false</value>
+        <description>
+            Indicates if Oozie is configured to use Kerberos.
+        </description>
+    </property>
+
+    <property>
+        <name>local.realm</name>
+        <value>LOCALHOST</value>
+        <description>
+            Kerberos Realm used by Oozie and Hadoop. Using 'local.realm' to be aligned with Hadoop configuration
+        </description>
+    </property>
+
+    <property>
+        <name>oozie.service.HadoopAccessorService.keytab.file</name>
+        <value>${user.home}/oozie.keytab</value>
+        <description>
+            Location of the Oozie user keytab file.
+        </description>
+    </property>
+
+    <property>
+        <name>oozie.service.HadoopAccessorService.kerberos.principal</name>
+        <value>${user.name}/localhost@${local.realm}</value>
+        <description>
+            Kerberos principal for Oozie service.
+        </description>
+    </property>
+
+    <property>
+        <name>oozie.service.HadoopAccessorService.jobTracker.whitelist</name>
+        <value>
+        </value>
+        <description>
+            Whitelisted job tracker for Oozie service.
+        </description>
+    </property>
+
+    <property>
+        <name>oozie.service.HadoopAccessorService.nameNode.whitelist</name>
+        <value>
+        </value>
+        <description>
+            Whitelisted job tracker for Oozie service.
+        </description>
+    </property>
+
+    <property>
+        <name>oozie.service.WorkflowAppService.system.libpath</name>
+        <value>/user/${user.name}/share/lib</value>
+        <description>
+            System library path to use for workflow applications.
+            This path is added to workflow application if their job properties sets
+            the property
+            'oozie.use.system.libpath' to true.
+        </description>
+    </property>
+
+    <property>
+        <name>use.system.libpath.for.mapreduce.and.pig.jobs</name>
+        <value>false</value>
+        <description>
+            If set to true, submissions of MapReduce and Pig jobs will include
+            automatically the system library path, thus not requiring users to
+            specify where the Pig JAR
+            files are. Instead, the ones from the system
+            library path are used.
+        </description>
+    </property>
+
+    <property>
+        <name>oozie.service.ELService.ext.functions.coord-job-submit-instances</name>
+        <value>
+            now=org.apache.oozie.extensions.OozieELExtensions#ph1_now_echo,
+            today=org.apache.oozie.extensions.OozieELExtensions#ph1_today_echo,
+            yesterday=org.apache.oozie.extensions.OozieELExtensions#ph1_yesterday_echo,
+            currentMonth=org.apache.oozie.extensions.OozieELExtensions#ph1_currentMonth_echo,
+            lastMonth=org.apache.oozie.extensions.OozieELExtensions#ph1_lastMonth_echo,
+            currentYear=org.apache.oozie.extensions.OozieELExtensions#ph1_currentYear_echo,
+            lastYear=org.apache.oozie.extensions.OozieELExtensions#ph1_lastYear_echo,
+            formatTime=org.apache.oozie.coord.CoordELFunctions#ph1_coord_formatTime_echo
+        </value>
+        <description>
+            EL functions declarations, separated by commas, format is [PREFIX:]NAME=CLASS#METHOD.
+            This property is a convenience property to add extensions to the built in
+            executors without having to
+            include all the built in ones.
+        </description>
+    </property>
+    <property>
+        <name>oozie.service.ELService.ext.functions.coord-action-create-inst</name>
+        <value>
+            now=org.apache.oozie.extensions.OozieELExtensions#ph2_now_inst,
+            today=org.apache.oozie.extensions.OozieELExtensions#ph2_today_inst,
+            yesterday=org.apache.oozie.extensions.OozieELExtensions#ph2_yesterday_inst,
+            currentMonth=org.apache.oozie.extensions.OozieELExtensions#ph2_currentMonth_inst,
+            lastMonth=org.apache.oozie.extensions.OozieELExtensions#ph2_lastMonth_inst,
+            currentYear=org.apache.oozie.extensions.OozieELExtensions#ph2_currentYear_inst,
+            lastYear=org.apache.oozie.extensions.OozieELExtensions#ph2_lastYear_inst,
+            latest=org.apache.oozie.coord.CoordELFunctions#ph2_coord_latest_echo,
+            future=org.apache.oozie.coord.CoordELFunctions#ph2_coord_future_echo,
+            formatTime=org.apache.oozie.coord.CoordELFunctions#ph2_coord_formatTime,
+            user=org.apache.oozie.coord.CoordELFunctions#coord_user
+        </value>
+        <description>
+            EL functions declarations, separated by commas, format is [PREFIX:]NAME=CLASS#METHOD.
+            This property is a convenience property to add extensions to the built in
+            executors without having to
+            include all the built in ones.
+        </description>
+    </property>
+    <property>
+        <name>oozie.service.ELService.ext.functions.coord-action-create</name>
+        <value>
+            now=org.apache.oozie.extensions.OozieELExtensions#ph2_now,
+            today=org.apache.oozie.extensions.OozieELExtensions#ph2_today,
+            yesterday=org.apache.oozie.extensions.OozieELExtensions#ph2_yesterday,
+            currentMonth=org.apache.oozie.extensions.OozieELExtensions#ph2_currentMonth,
+            lastMonth=org.apache.oozie.extensions.OozieELExtensions#ph2_lastMonth,
+            currentYear=org.apache.oozie.extensions.OozieELExtensions#ph2_currentYear,
+            lastYear=org.apache.oozie.extensions.OozieELExtensions#ph2_lastYear,
+            latest=org.apache.oozie.coord.CoordELFunctions#ph2_coord_latest_echo,
+            future=org.apache.oozie.coord.CoordELFunctions#ph2_coord_future_echo,
+            formatTime=org.apache.oozie.coord.CoordELFunctions#ph2_coord_formatTime,
+            user=org.apache.oozie.coord.CoordELFunctions#coord_user
+        </value>
+        <description>
+            EL functions declarations, separated by commas, format is [PREFIX:]NAME=CLASS#METHOD.
+            This property is a convenience property to add extensions to the built in
+            executors without having to
+            include all the built in ones.
+        </description>
+    </property>
+    <property>
+        <name>oozie.service.ELService.ext.functions.coord-job-submit-data</name>
+        <value>
+            now=org.apache.oozie.extensions.OozieELExtensions#ph1_now_echo,
+            today=org.apache.oozie.extensions.OozieELExtensions#ph1_today_echo,
+            yesterday=org.apache.oozie.extensions.OozieELExtensions#ph1_yesterday_echo,
+            currentMonth=org.apache.oozie.extensions.OozieELExtensions#ph1_currentMonth_echo,
+            lastMonth=org.apache.oozie.extensions.OozieELExtensions#ph1_lastMonth_echo,
+            currentYear=org.apache.oozie.extensions.OozieELExtensions#ph1_currentYear_echo,
+            lastYear=org.apache.oozie.extensions.OozieELExtensions#ph1_lastYear_echo,
+            dataIn=org.apache.oozie.extensions.OozieELExtensions#ph1_dataIn_echo,
+            instanceTime=org.apache.oozie.coord.CoordELFunctions#ph1_coord_nominalTime_echo_wrap,
+            formatTime=org.apache.oozie.coord.CoordELFunctions#ph1_coord_formatTime_echo,
+            dateOffset=org.apache.oozie.coord.CoordELFunctions#ph1_coord_dateOffset_echo,
+            user=org.apache.oozie.coord.CoordELFunctions#coord_user
+        </value>
+        <description>
+            EL constant declarations, separated by commas, format is [PREFIX:]NAME=CLASS#CONSTANT.
+            This property is a convenience property to add extensions to the built in
+            executors without having to
+            include all the built in ones.
+        </description>
+    </property>
+    <property>
+        <name>oozie.service.ELService.ext.functions.coord-action-start</name>
+        <value>
+            now=org.apache.oozie.extensions.OozieELExtensions#ph2_now,
+            today=org.apache.oozie.extensions.OozieELExtensions#ph2_today,
+            yesterday=org.apache.oozie.extensions.OozieELExtensions#ph2_yesterday,
+            currentMonth=org.apache.oozie.extensions.OozieELExtensions#ph2_currentMonth,
+            lastMonth=org.apache.oozie.extensions.OozieELExtensions#ph2_lastMonth,
+            currentYear=org.apache.oozie.extensions.OozieELExtensions#ph2_currentYear,
+            lastYear=org.apache.oozie.extensions.OozieELExtensions#ph2_lastYear,
+            latest=org.apache.oozie.coord.CoordELFunctions#ph3_coord_latest,
+            future=org.apache.oozie.coord.CoordELFunctions#ph3_coord_future,
+            dataIn=org.apache.oozie.extensions.OozieELExtensions#ph3_dataIn,
+            instanceTime=org.apache.oozie.coord.CoordELFunctions#ph3_coord_nominalTime,
+            dateOffset=org.apache.oozie.coord.CoordELFunctions#ph3_coord_dateOffset,
+            formatTime=org.apache.oozie.coord.CoordELFunctions#ph3_coord_formatTime,
+            user=org.apache.oozie.coord.CoordELFunctions#coord_user
+        </value>
+        <description>
+            EL functions declarations, separated by commas, format is [PREFIX:]NAME=CLASS#METHOD.
+            This property is a convenience property to add extensions to the built in
+            executors without having to
+            include all the built in ones.
+        </description>
+    </property>
+    <property>
+        <name>oozie.service.ELService.ext.functions.coord-sla-submit</name>
+        <value>
+            instanceTime=org.apache.oozie.coord.CoordELFunctions#ph1_coord_nominalTime_echo_fixed,
+            user=org.apache.oozie.coord.CoordELFunctions#coord_user
+        </value>
+        <description>
+            EL functions declarations, separated by commas, format is [PREFIX:]NAME=CLASS#METHOD.
+        </description>
+    </property>
+    <property>
+        <name>oozie.service.ELService.ext.functions.coord-sla-create</name>
+        <value>
+            instanceTime=org.apache.oozie.coord.CoordELFunctions#ph2_coord_nominalTime,
+            user=org.apache.oozie.coord.CoordELFunctions#coord_user
+        </value>
+        <description>
+            EL functions declarations, separated by commas, format is [PREFIX:]NAME=CLASS#METHOD.
+        </description>
+    </property>
+</configuration>
+

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/61417357/oozie/pom.xml
----------------------------------------------------------------------
diff --git a/oozie/pom.xml b/oozie/pom.xml
index f813ff0..0497c8b 100644
--- a/oozie/pom.xml
+++ b/oozie/pom.xml
@@ -34,6 +34,11 @@
     <dependencies>
         <dependency>
             <groupId>org.apache.falcon</groupId>
+            <artifactId>falcon-oozie-el-extension</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.falcon</groupId>
             <artifactId>falcon-messaging</artifactId>
         </dependency>
 

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/61417357/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 5b59f03..854210b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -100,6 +100,7 @@
         <hadoop-distcp.version>0.3</hadoop-distcp.version>
         <jetty.version>6.1.26</jetty.version>
         <internal.maven.repo>file:///tmp/falcontemprepo</internal.maven.repo>
+        <skipCheck>false</skipCheck>
     </properties>
 
     <profiles>
@@ -110,9 +111,11 @@
                 <module>metrics</module>
                 <module>common</module>
                 <module>test-util</module>
+                <module>hadoop-webapp</module>
                 <module>feed</module>
                 <module>messaging</module>
                 <module>process</module>
+                <module>oozie-el-extensions</module>
                 <module>oozie</module>
                 <module>acquisition</module>
                 <module>replication</module>
@@ -131,9 +134,11 @@
         <module>client</module>
         <module>common</module>
         <module>test-util</module>
+        <module>hadoop-webapp</module>
         <module>feed</module>
         <module>messaging</module>
         <module>process</module>
+        <module>oozie-el-extensions</module>
         <module>oozie</module>
         <module>acquisition</module>
         <module>replication</module>
@@ -325,13 +330,13 @@
             <dependency>
                 <groupId>com.sun.jersey</groupId>
                 <artifactId>jersey-client</artifactId>
-                <version>1.9</version>
+                <version>1.8</version>
             </dependency>
 
             <dependency>
                 <groupId>com.sun.jersey</groupId>
                 <artifactId>jersey-json</artifactId>
-                <version>1.9</version>
+                <version>1.8</version>
             </dependency>
 
             <dependency>
@@ -393,7 +398,7 @@
             <dependency>
                 <groupId>com.sun.jersey</groupId>
                 <artifactId>jersey-server</artifactId>
-                <version>1.9</version>
+                <version>1.8</version>
             </dependency>
 
             <dependency>
@@ -472,6 +477,19 @@
             </dependency>
 
             <dependency>
+                <groupId>org.apache.oozie</groupId>
+                <artifactId>oozie-core</artifactId>
+                <version>${oozie.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>org.apache.oozie</groupId>
+                <artifactId>oozie-webapp</artifactId>
+                <version>${oozie.version}</version>
+                <type>war</type>
+            </dependency>
+
+            <dependency>
                 <groupId>org.apache.hadoop</groupId>
                 <artifactId>hadoop-core</artifactId>
                 <version>${hadoop.version}</version>
@@ -532,6 +550,12 @@
 
             <dependency>
                 <groupId>org.apache.falcon</groupId>
+                <artifactId>falcon-oozie-el-extension</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>org.apache.falcon</groupId>
                 <artifactId>falcon-feed</artifactId>
                 <version>${project.version}</version>
             </dependency>
@@ -569,9 +593,16 @@
             </dependency>
 
             <dependency>
-            	<groupId>net.sourceforge.findbugs</groupId>
-            	<artifactId>annotations</artifactId>
-            	<version>1.3.2</version>
+                <groupId>org.apache.falcon</groupId>
+                <artifactId>falcon-hadoop-webapp</artifactId>
+                <version>${project.version}</version>
+                <type>war</type>
+            </dependency>
+
+            <dependency>
+                <groupId>net.sourceforge.findbugs</groupId>
+                <artifactId>annotations</artifactId>
+                <version>1.3.2</version>
             </dependency>
         </dependencies>
     </dependencyManagement>
@@ -684,10 +715,12 @@
                     <doUpdate>false</doUpdate>
                 </configuration>
             </plugin>
+
             <plugin>
                 <groupId>org.codehaus.mojo</groupId>
                 <artifactId>build-helper-maven-plugin</artifactId>
             </plugin>
+
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-compiler-plugin</artifactId>
@@ -696,32 +729,45 @@
                     <target>1.6</target>
                 </configuration>
             </plugin>
+
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-source-plugin</artifactId>
                 <executions>
                     <execution>
                         <id>attach-sources</id>
-                        <phase>deploy</phase>
+                        <phase>package</phase>
                         <goals>
                             <goal>jar-no-fork</goal>
                         </goals>
                     </execution>
                 </executions>
             </plugin>
+
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-javadoc-plugin</artifactId>
                 <executions>
                     <execution>
                         <id>attach-javadocs</id>
-                        <phase>deploy</phase>
+                        <phase>package</phase>
                         <goals>
                             <goal>jar</goal>
                         </goals>
                     </execution>
                 </executions>
             </plugin>
+
+            <plugin>
+                <artifactId>maven-assembly-plugin</artifactId>
+                <configuration>
+                    <descriptors>
+                        <descriptor>src/main/assemblies/package.xml</descriptor>
+                    </descriptors>
+                    <finalName>falcon-${project.version}</finalName>
+                </configuration>
+            </plugin>
+
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
@@ -729,6 +775,7 @@
                     <argLine>-Djava.security.krb5.realm= -Djava.security.krb5.kdc=</argLine>
                 </configuration>
             </plugin>
+
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-deploy-plugin</artifactId>
@@ -761,6 +808,8 @@
                         <exclude>**/activemq-data/**</exclude>
                         <exclude>**/build/**</exclude>
                         <exclude>*.patch</exclude>
+                        <exclude>derby.log</exclude>
+                        <exclude>**/logs/**</exclude>
                     </excludes>
                 </configuration>
                 <executions>
@@ -795,6 +844,7 @@
                             <includeTestSourceDirectory>true</includeTestSourceDirectory>
                             <configLocation>falcon/checkstyle.xml</configLocation>
                             <failOnViolation>true</failOnViolation>
+                            <skip>${skipCheck}</skip>
                         </configuration>
                     </execution>
                 </executions>
@@ -807,6 +857,7 @@
                     <xmlOutput>true</xmlOutput>
                     <excludeFilterFile>${basedir}/../build-tools/src/main/resources/falcon/findbugs-exclude.xml</excludeFilterFile>
                     <failOnError>true</failOnError>
+                    <skip>${skipCheck}</skip>
                 </configuration>
                 <executions>
                     <execution>

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/61417357/prism/src/main/resources/log4j.xml
----------------------------------------------------------------------
diff --git a/prism/src/main/resources/log4j.xml b/prism/src/main/resources/log4j.xml
index ea08108..ef53274 100644
--- a/prism/src/main/resources/log4j.xml
+++ b/prism/src/main/resources/log4j.xml
@@ -28,7 +28,7 @@
     </appender>
 
     <appender name="FILE" class="org.apache.log4j.DailyRollingFileAppender">
-        <param name="File" value="/var/log/falcon/prism.log"/>
+        <param name="File" value="${user.dir}/logs/prism.log"/>
         <param name="Append" value="true"/>
         <param name="Threshold" value="debug"/>
         <layout class="org.apache.log4j.PatternLayout">
@@ -37,7 +37,7 @@
     </appender>
 
     <appender name="AUDIT" class="org.apache.log4j.DailyRollingFileAppender">
-        <param name="File" value="/var/log/falcon/prism-audit.log"/>
+        <param name="File" value="${user.dir}/logs/prism-audit.log"/>
         <param name="Append" value="true"/>
         <param name="Threshold" value="debug"/>
         <layout class="org.apache.log4j.PatternLayout">
@@ -46,7 +46,7 @@
     </appender>
 
     <appender name="TRANSACTIONLOG" class="org.apache.log4j.DailyRollingFileAppender">
-        <param name="File" value="/var/log/falcon/prsim-tranlog.log"/>
+        <param name="File" value="${user.dir}/logs/prsim-tranlog.log"/>
         <param name="Append" value="true"/>
         <param name="Threshold" value="debug"/>
         <layout class="org.apache.log4j.PatternLayout">
@@ -55,7 +55,7 @@
     </appender>
 
     <appender name="METRIC" class="org.apache.log4j.DailyRollingFileAppender">
-        <param name="File" value="/var/log/falcon/prism-metric.log"/>
+        <param name="File" value="${user.dir}/logs/prism-metric.log"/>
         <param name="Append" value="true"/>
         <param name="Threshold" value="debug"/>
         <layout class="org.apache.log4j.PatternLayout">

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/61417357/process/src/test/java/org/apache/falcon/converter/OozieProcessMapperTest.java
----------------------------------------------------------------------
diff --git a/process/src/test/java/org/apache/falcon/converter/OozieProcessMapperTest.java b/process/src/test/java/org/apache/falcon/converter/OozieProcessMapperTest.java
index 9ed7baf..fe3cc58 100644
--- a/process/src/test/java/org/apache/falcon/converter/OozieProcessMapperTest.java
+++ b/process/src/test/java/org/apache/falcon/converter/OozieProcessMapperTest.java
@@ -41,6 +41,7 @@ import org.apache.falcon.oozie.coordinator.SYNCDATASET;
 import org.apache.falcon.oozie.workflow.ACTION;
 import org.apache.falcon.oozie.workflow.DECISION;
 import org.apache.falcon.oozie.workflow.WORKFLOWAPP;
+import org.apache.falcon.util.StartupProperties;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
@@ -57,6 +58,7 @@ import javax.xml.validation.Schema;
 import javax.xml.validation.SchemaFactory;
 import java.io.BufferedReader;
 import java.io.ByteArrayInputStream;
+import java.io.File;
 import java.io.InputStreamReader;
 
 import static org.testng.Assert.assertEquals;
@@ -154,6 +156,10 @@ public class OozieProcessMapperTest extends AbstractTestBase {
 
     @Test
     public void testBundle() throws Exception {
+        String path = StartupProperties.get().getProperty("system.lib.location");
+        if (!new File(path).exists()) {
+            Assert.assertTrue(new File(path).mkdirs());
+        }
         Process process = ConfigurationStore.get().get(EntityType.PROCESS, "clicksummary");
         Cluster cluster = ConfigurationStore.get().get(EntityType.CLUSTER, "corp");
         OozieProcessMapper mapper = new OozieProcessMapper(process);

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/61417357/src/bin/falcon
----------------------------------------------------------------------
diff --git a/src/bin/falcon b/src/bin/falcon
new file mode 100644
index 0000000..7c1bc63
--- /dev/null
+++ b/src/bin/falcon
@@ -0,0 +1,50 @@
+#!/bin/bash
+#
+# Licensed 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. See accompanying LICENSE file.
+#
+
+# resolve links - $0 may be a softlink
+PRG="${0}"
+
+while [ -h "${PRG}" ]; do
+  ls=`ls -ld "${PRG}"`
+  link=`expr "$ls" : '.*-> \(.*\)$'`
+  if expr "$link" : '/.*' > /dev/null; then
+    PRG="$link"
+  else
+    PRG=`dirname "${PRG}"`/"$link"
+  fi
+done
+
+BASEDIR=`dirname ${PRG}`
+BASEDIR=`cd ${BASEDIR}/..;pwd`
+
+FALCONCPPATH="${BASEDIR}/conf:"
+for i in "${BASEDIR}/client/lib/"*.jar; do
+  FALCONCPPATH="${FALCONCPPATH}:$i"
+done
+
+
+if test -z ${JAVA_HOME}
+then
+    JAVA_BIN=java
+else
+    JAVA_BIN=${JAVA_HOME}/bin/java
+fi
+
+JAVA_PROPERTIES=""
+while [[ ${1} =~ ^\-D ]]; do
+  JAVA_PROPERTIES="${JAVA_PROPERTIES} ${1}"
+  shift
+done
+${JAVA_BIN} ${JAVA_PROPERTIES} -cp ${FALCONCPPATH} org.apache.falcon.cli.FalconCLI "${@}"

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/61417357/src/bin/falcon-start
----------------------------------------------------------------------
diff --git a/src/bin/falcon-start b/src/bin/falcon-start
new file mode 100644
index 0000000..df79200
--- /dev/null
+++ b/src/bin/falcon-start
@@ -0,0 +1,55 @@
+#!/bin/bash
+#
+# Licensed 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. See accompanying LICENSE file.
+#
+
+# resolve links - $0 may be a softlink
+PRG="${0}"
+
+while [ -h "${PRG}" ]; do
+  ls=`ls -ld "${PRG}"`
+  link=`expr "$ls" : '.*-> \(.*\)$'`
+  if expr "$link" : '/.*' > /dev/null; then
+    PRG="$link"
+  else
+    PRG=`dirname "${PRG}"`/"$link"
+  fi
+done
+
+BASEDIR=`dirname ${PRG}`
+BASEDIR=`cd ${BASEDIR}/..;pwd`
+
+FALCONCPPATH="${BASEDIR}/conf:${BASEDIR}/server/webapp/classes:"
+for i in "${BASEDIR}/server/webapp/lib/"*.jar; do
+  FALCONCPPATH="${FALCONCPPATH}:$i"
+done
+
+mkdir -p ${BASEDIR}/logs
+
+if test -z ${JAVA_HOME}
+then
+    JAVA_BIN=java
+else
+    JAVA_BIN=${JAVA_HOME}/bin/java
+fi
+
+pushd ${BASEDIR} > /dev/null
+JAVA_PROPERTIES="-Dactivemq.base=${BASEDIR}/logs"
+while [[ ${1} =~ ^\-D ]]; do
+  JAVA_PROPERTIES="${JAVA_PROPERTIES} ${1}"
+  shift
+done
+TIME=`date +%Y%m%d%H%M%s`
+nohup ${JAVA_BIN} ${JAVA_PROPERTIES} -cp ${FALCONCPPATH} org.apache.falcon.Main ${BASEDIR}/server/webapp/falcon.war 2> ${BASEDIR}/logs/falcon.out.$TIME &
+echo $! > ${BASEDIR}/logs/falcon.pid
+popd > /dev/null

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/61417357/src/bin/falcon-stop
----------------------------------------------------------------------
diff --git a/src/bin/falcon-stop b/src/bin/falcon-stop
new file mode 100644
index 0000000..1e6e6b8
--- /dev/null
+++ b/src/bin/falcon-stop
@@ -0,0 +1,37 @@
+#!/bin/bash
+#
+# Licensed 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. See accompanying LICENSE file.
+#
+
+# resolve links - $0 may be a softlink
+PRG="${0}"
+
+while [ -h "${PRG}" ]; do
+  ls=`ls -ld "${PRG}"`
+  link=`expr "$ls" : '.*-> \(.*\)$'`
+  if expr "$link" : '/.*' > /dev/null; then
+    PRG="$link"
+  else
+    PRG=`dirname "${PRG}"`/"$link"
+  fi
+done
+
+BASEDIR=`dirname ${PRG}`
+BASEDIR=`cd ${BASEDIR}/..;pwd`
+
+if [ -f ${BASEDIR}/logs/falcon.pid ]
+then
+   kill -15 `cat ${BASEDIR}/logs/falcon.pid`
+else
+   echo "pid file ${BASEDIR}/logs/falcon.pid not present"
+fi

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/61417357/src/bin/package.sh
----------------------------------------------------------------------
diff --git a/src/bin/package.sh b/src/bin/package.sh
new file mode 100644
index 0000000..caad0af
--- /dev/null
+++ b/src/bin/package.sh
@@ -0,0 +1,66 @@
+#!/bin/bash
+
+# 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.
+
+if [ "${1}"x == "x" ]
+then
+  echo "Usage ${0} <<hadoop-version>>"
+  exit 1
+fi
+
+# resolve links - $0 may be a softlink
+PRG="${0}"
+
+while [ -h "${PRG}" ]; do
+  ls=`ls -ld "${PRG}"`
+  link=`expr "$ls" : '.*-> \(.*\)$'`
+  if expr "$link" : '/.*' > /dev/null; then
+    PRG="$link"
+  else
+    PRG=`dirname "${PRG}"`/"$link"
+  fi
+done
+
+BASEDIR=`dirname ${PRG}`
+BASEDIR=`cd ${BASEDIR};pwd`
+
+FALCON_SRC=${BASEDIR}/../..
+PACKAGE_HOME=${FALCON_SRC}/target/package
+
+pushd ${FALCON_SRC}
+echo "Building falcon & falcon-oozie-el-extensions ....."
+mvn clean assembly:assembly -Dhadoop.version=${1} -DskipTests -DskipCheck=true > /dev/null
+popd
+
+mkdir -p ${PACKAGE_HOME}
+pushd ${PACKAGE_HOME}
+rm -rf oozie-3.2.0-incubating*
+echo "Getting oozie release tar ball of version 3.2.0-incubating ..."
+curl "http://www.gtlib.gatech.edu/pub/apache/oozie/3.2.0-incubating/oozie-3.2.0-incubating.tar.gz" -o oozie-3.2.0-incubating.tgz
+tar -xzvf oozie-3.2.0-incubating.tgz 2> /dev/null
+rm oozie-3.2.0-incubating.tgz
+cd oozie-3.2.0-incubating
+echo "Patching oozie with falcon extensions and marking version as 3.2.2 (custom) ..."
+patch -p0 < ${FALCON_SRC}/oozie-3.2.0-incubating-el.patch
+patch -p0 < ${FALCON_SRC}/oozie-bundle-el-extension.patch
+echo "Building oozie & creating tar ball ..."
+bin/mkdistro.sh -DskipTests > /dev/null
+
+echo "Falcon pacakge is available in ${FALCON_SRC}/target/falcon-<<version>>/falcon-<<version>>.tar.gz"
+echo "Oozie pacakge is available in ${FALCON_SRC}/target/package/oozie-3.2.0-incubating/distro/target/oozie-3.2.2-distro.tar.gz"
+popd
+

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/61417357/src/conf/client.properties
----------------------------------------------------------------------
diff --git a/src/conf/client.properties b/src/conf/client.properties
new file mode 100644
index 0000000..9ff0631
--- /dev/null
+++ b/src/conf/client.properties
@@ -0,0 +1,23 @@
+#
+# 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.
+#
+
+####################################################
+####    This is used for falcon packaging only. ####
+####################################################
+
+falcon.url=http://localhost:15000/

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/61417357/src/conf/log4j.xml
----------------------------------------------------------------------
diff --git a/src/conf/log4j.xml b/src/conf/log4j.xml
new file mode 100644
index 0000000..738beb5
--- /dev/null
+++ b/src/conf/log4j.xml
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+  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.
+  -->
+
+<!--
+    This is used for falcon packaging only.
+  -->
+
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
+
+    <appender name="FILE" class="org.apache.log4j.DailyRollingFileAppender">
+        <param name="File" value="${user.dir}/logs/application.log"/>
+        <param name="Append" value="true"/>
+        <param name="Threshold" value="debug"/>
+        <layout class="org.apache.log4j.PatternLayout">
+            <param name="ConversionPattern" value="%d %-5p - [%t:%x] ~ %m (%c{1}:%L)%n"/>
+        </layout>
+    </appender>
+
+    <appender name="AUDIT" class="org.apache.log4j.DailyRollingFileAppender">
+        <param name="File" value="${user.dir}/logs/audit.log"/>
+        <param name="Append" value="true"/>
+        <param name="Threshold" value="debug"/>
+        <layout class="org.apache.log4j.PatternLayout">
+            <param name="ConversionPattern" value="%d %x %m%n"/>
+        </layout>
+    </appender>
+
+    <appender name="TRANSACTIONLOG" class="org.apache.log4j.DailyRollingFileAppender">
+        <param name="File" value="${user.dir}/logs/tranlog.log"/>
+        <param name="Append" value="true"/>
+        <param name="Threshold" value="debug"/>
+        <layout class="org.apache.log4j.PatternLayout">
+            <param name="ConversionPattern" value="%d %x %m%n"/>
+        </layout>
+    </appender>
+
+    <appender name="METRIC" class="org.apache.log4j.DailyRollingFileAppender">
+        <param name="File" value="${user.dir}/logs/metric.log"/>
+        <param name="Append" value="true"/>
+        <param name="Threshold" value="debug"/>
+        <layout class="org.apache.log4j.PatternLayout">
+            <param name="ConversionPattern" value="%d %m%n"/>
+        </layout>
+    </appender>
+
+    <logger name="org.apache.falcon">
+        <level value="debug"/>
+        <appender-ref ref="FILE"/>
+    </logger>
+
+    <logger name="AUDIT">
+        <level value="info"/>
+        <appender-ref ref="AUDIT"/>
+    </logger>
+
+    <logger name="TRANSACTIONLOG">
+        <level value="info"/>
+        <appender-ref ref="TRANSACTIONLOG"/>
+    </logger>
+
+    <logger name="METRIC">
+        <level value="info"/>
+        <appender-ref ref="METRIC"/>
+    </logger>
+
+    <root>
+        <priority value="info"/>
+        <appender-ref ref="FILE"/>
+    </root>
+
+</log4j:configuration>

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/61417357/src/conf/runtime.properties
----------------------------------------------------------------------
diff --git a/src/conf/runtime.properties b/src/conf/runtime.properties
new file mode 100644
index 0000000..3a1b62e
--- /dev/null
+++ b/src/conf/runtime.properties
@@ -0,0 +1,29 @@
+#
+# 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.
+#
+
+####################################################
+####    This is used for falcon packaging only. ####
+####################################################
+
+*.domain=debug
+
+*.log.cleanup.frequency.minutes.retention =hours(6)
+*.log.cleanup.frequency.hours.retention =minutes(1)
+*.log.cleanup.frequency.days.retention =days(7)
+*.log.cleanup.frequency.months.retention =months(3)
+

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/61417357/src/conf/startup.properties
----------------------------------------------------------------------
diff --git a/src/conf/startup.properties b/src/conf/startup.properties
new file mode 100644
index 0000000..a1fdab2
--- /dev/null
+++ b/src/conf/startup.properties
@@ -0,0 +1,63 @@
+#
+# 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.
+#
+
+####################################################
+####    This is used for falcon packaging only. ####
+####################################################
+
+*.domain=debug
+
+######### Implementation classes #########
+## DONT MODIFY UNLESS SURE ABOUT CHANGE ##
+*.workflow.engine.impl=org.apache.falcon.workflow.engine.OozieWorkflowEngine
+*.oozie.process.workflow.builder=org.apache.falcon.workflow.OozieProcessWorkflowBuilder
+*.oozie.feed.workflow.builder=org.apache.falcon.workflow.OozieFeedWorkflowBuilder
+*.journal.impl=org.apache.falcon.transaction.SharedFileSystemJournal
+*.SchedulableEntityManager.impl=org.apache.falcon.resource.SchedulableEntityManager
+*.ConfigSyncService.impl=org.apache.falcon.resource.ConfigSyncService
+*.ProcessInstanceManager.impl=org.apache.falcon.resource.InstanceManager
+*.application.services=org.apache.falcon.entity.store.ConfigurationStore,\
+                        org.apache.falcon.service.ProcessSubscriberService,\
+                        org.apache.falcon.rerun.service.RetryService,\
+						org.apache.falcon.rerun.service.LateRunService,\
+						org.apache.falcon.service.SLAMonitoringService,\
+						org.apache.falcon.service.LogCleanupService
+*.configstore.listeners=org.apache.falcon.entity.v0.EntityGraph,\
+                        org.apache.falcon.entity.ColoClusterRelation,\
+                        org.apache.falcon.group.FeedGroupMap,\
+                        org.apache.falcon.service.SharedLibraryHostingService
+*.broker.impl.class=org.apache.activemq.ActiveMQConnectionFactory
+*.shared.libs=activemq-core,ant,geronimo-j2ee-management,hadoop-distcp,jms,json-simple,oozie-client,spring-jms,s4fs-0.1.jar
+
+######### Implementation classes #########
+
+debug.config.store.uri=file://${user.dir}/store
+debug.system.lib.location=${user.dir}/server/lib
+debug.broker.url=tcp://localhost:61616
+debug.retry.recorder.path=${user.dir}/logs/retry
+
+*.falcon.cleanup.service.frequency=days(1)
+
+#default time-to-live for a JMS message 3 days (time in minutes)
+*.broker.ttlInMins=4320
+*.entity.topic=FALCON.ENTITY.TOPIC
+*.max.retry.failure.count=1
+*.retry.recorder.path=${user.dir}/logs/retry
+
+######### Properties for configuring iMon client and metric #########
+*.internal.queue.size=1000

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/61417357/src/main/assemblies/package.xml
----------------------------------------------------------------------
diff --git a/src/main/assemblies/package.xml b/src/main/assemblies/package.xml
new file mode 100644
index 0000000..fd600f2
--- /dev/null
+++ b/src/main/assemblies/package.xml
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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.
+-->
+<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
+    <formats>
+        <format>dir</format>
+        <format>tar.gz</format>
+    </formats>
+    <fileSets>
+        <fileSet>
+            <directory>src/conf/</directory>
+            <outputDirectory>conf</outputDirectory>
+        </fileSet>
+
+        <fileSet>
+            <directory>client/target/dependency</directory>
+            <outputDirectory>client/lib</outputDirectory>
+        </fileSet>
+
+        <fileSet>
+            <directory>.</directory>
+            <outputDirectory>src</outputDirectory>
+            <includes>
+                <include>**/target/*sources.jar</include>
+            </includes>
+        </fileSet>
+
+        <fileSet>
+            <directory>.</directory>
+            <outputDirectory>docs</outputDirectory>
+            <includes>
+                <include>**/target/*javadoc.jar</include>
+            </includes>
+        </fileSet>
+
+        <fileSet>
+            <directory>client/target/dependency</directory>
+            <outputDirectory>client/lib</outputDirectory>
+        </fileSet>
+
+        <fileSet>
+            <directory>src/bin</directory>
+            <outputDirectory>bin</outputDirectory>
+            <fileMode>0755</fileMode>
+            <directoryMode>0755</directoryMode>
+        </fileSet>
+
+        <fileSet>
+            <directory>logs</directory>
+            <outputDirectory>logs</outputDirectory>
+            <directoryMode>0777</directoryMode>
+            <excludes>
+                <exclude>*</exclude>
+                <exclude>**/**</exclude>
+            </excludes>
+        </fileSet>
+
+        <fileSet>
+            <directory>./</directory>
+            <outputDirectory>/</outputDirectory>
+            <includes>
+                <include>LICENSE.txt</include>
+                <include>CHANGES.txt</include>
+                <include>README</include>
+            </includes>
+        </fileSet>
+
+        <fileSet>
+            <directory>webapp/target/falcon-webapp-${project.version}/WEB-INF/classes</directory>
+            <outputDirectory>server/webapp/classes</outputDirectory>
+            <includes>
+                <include>**/*.class</include>
+            </includes>
+        </fileSet>
+
+        <fileSet>
+            <directory>webapp/target/falcon-webapp-${project.version}/WEB-INF/lib</directory>
+            <outputDirectory>server/webapp/lib</outputDirectory>
+        </fileSet>
+    </fileSets>
+
+    <files>
+        <file>
+            <source>client/target/falcon-client-${project.version}.jar</source>
+            <outputDirectory>client/lib</outputDirectory>
+        </file>
+
+        <file>
+            <source>webapp/target/falcon-webapp-${project.version}.war</source>
+            <outputDirectory>server/webapp</outputDirectory>
+            <destName>falcon.war</destName>
+        </file>
+    </files>
+</assembly>
+    

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/61417357/webapp/pom.xml
----------------------------------------------------------------------
diff --git a/webapp/pom.xml b/webapp/pom.xml
index 0d86a8c..f73470e 100644
--- a/webapp/pom.xml
+++ b/webapp/pom.xml
@@ -133,6 +133,19 @@
             <groupId>org.testng</groupId>
             <artifactId>testng</artifactId>
         </dependency>
+
+        <dependency>
+            <groupId>org.apache.falcon</groupId>
+            <artifactId>falcon-oozie-el-extension</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.falcon</groupId>
+            <artifactId>falcon-hadoop-webapp</artifactId>
+            <type>war</type>
+            <scope>provided</scope>
+        </dependency>
     </dependencies>
 
     <build>
@@ -150,6 +163,167 @@
                     </webResources>
                 </configuration>
             </plugin>
+
+            <plugin>
+                <artifactId>maven-resources-plugin</artifactId>
+                <version>2.6</version>
+                <executions>
+                    <execution>
+                        <id>copy-resources</id>
+                        <phase>validate</phase>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals>
+                        <configuration>
+                            <outputDirectory>${project.build.directory}/webapps</outputDirectory>
+                            <resources>
+                                <resource>
+                                    <directory>src/conf</directory>
+                                    <filtering>true</filtering>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <version>2.8</version>
+                <executions>
+                    <execution>
+                        <id>copy-dependencies</id>
+                        <phase>process-resources</phase>
+                        <goals>
+                            <goal>copy</goal>
+                        </goals>
+                        <configuration>
+                            <artifactItems>
+                                <artifactItem>
+                                    <groupId>org.apache.falcon</groupId>
+                                    <artifactId>falcon-hadoop-webapp</artifactId>
+                                    <version>${project.version}</version>
+                                    <type>war</type>
+                                    <overWrite>true</overWrite>
+                                    <outputDirectory>${project.build.directory}/webapps</outputDirectory>
+                                    <destFileName>hadoop.war</destFileName>
+                                </artifactItem>
+                            </artifactItems>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-antrun-plugin</artifactId>
+                <version>1.6</version>
+                <executions>
+                    <execution>
+                        <configuration>
+                            <target>
+                                <copy file="../hadoop-webapp/target/oozie.war" toDir="target/webapps" />
+                                <delete dir="../target/store" />
+                            </target>
+                        </configuration>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                        <phase>process-resources</phase>
+                    </execution>
+                </executions>
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-failsafe-plugin</artifactId>
+                <version>2.15</version>
+                <executions>
+                    <execution>
+                        <id>integration-test</id>
+                        <goals>
+                            <goal>integration-test</goal>
+                        </goals>
+                    </execution>
+                    <execution>
+                        <id>verify</id>
+                        <goals>
+                            <goal>verify</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+
+            <plugin>
+                <groupId>org.mortbay.jetty</groupId>
+                <artifactId>maven-jetty-plugin</artifactId>
+                <version>${jetty.version}</version>
+                <configuration>
+                    <connectors>
+                        <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
+                            <port>41000</port>
+                            <maxIdleTime>60000</maxIdleTime>
+                        </connector>
+                    </connectors>
+                    <webApp>${project.build.directory}/falcon-webapp-${project.version}</webApp>
+                    <useTestClasspath>true</useTestClasspath>
+                    <contextHandlers>
+                        <contextHandler implementation="org.mortbay.jetty.webapp.WebAppContext">
+                            <war>${project.build.directory}/webapps/oozie.war</war>
+                            <contextPath>/oozie</contextPath>
+                        </contextHandler>
+                        <contextHandler implementation="org.mortbay.jetty.webapp.WebAppContext">
+                            <war>${project.build.directory}/webapps/hadoop.war</war>
+                            <contextPath>/hadoop</contextPath>
+                        </contextHandler>
+                    </contextHandlers>
+                    <systemProperties>
+                        <systemProperty>
+                            <name>hadoop.conf.dir</name>
+                            <value>${project.build.directory}/webapps/hadoop/conf</value>
+                        </systemProperty>
+                        <systemProperty>
+                            <name>hadoop.tmp.dir</name>
+                            <value>${project.build.directory}/tmp-hadoop-${user.name}</value>
+                        </systemProperty>
+                        <systemProperty>
+                            <name>hadoop.log.dir</name>
+                            <value>${project.build.directory}/logs</value>
+                        </systemProperty>
+                        <systemProperty>
+                            <name>oozie.home.dir</name>
+                            <value>${project.build.directory}/webapps/oozie</value>
+                        </systemProperty>
+                        <systemProperty>
+                            <name>oozie.data.dir</name>
+                            <value>${project.build.directory}/webapps/oozie/data</value>
+                        </systemProperty>
+                    </systemProperties>
+                    <stopKey>falcon-stop</stopKey>
+                    <stopPort>41001</stopPort>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>start-jetty</id>
+                        <phase>pre-integration-test</phase>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                        <configuration>
+                            <skip>${skipCheck}</skip>
+                            <daemon>true</daemon>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>stop-jetty</id>
+                        <phase>post-integration-test</phase>
+                        <goals>
+                            <goal>stop</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
         </plugins>
     </build>
 
@@ -177,5 +351,4 @@
         </profile>
     </profiles>
 
-
 </project>

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/61417357/webapp/src/conf/oozie/conf/action-conf/distcp-action-0.1.xsd
----------------------------------------------------------------------
diff --git a/webapp/src/conf/oozie/conf/action-conf/distcp-action-0.1.xsd b/webapp/src/conf/oozie/conf/action-conf/distcp-action-0.1.xsd
new file mode 100644
index 0000000..b77e039
--- /dev/null
+++ b/webapp/src/conf/oozie/conf/action-conf/distcp-action-0.1.xsd
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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.
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+           xmlns:distcp="uri:oozie:distcp-action:0.1" elementFormDefault="qualified"
+           targetNamespace="uri:oozie:distcp-action:0.1">
+
+    <xs:element name="distcp" type="distcp:ACTION"/>
+
+    <xs:complexType name="ACTION">
+        <xs:sequence>
+                <xs:element name="job-tracker" type="xs:string" minOccurs="1" maxOccurs="1"/>
+                <xs:element name="name-node" type="xs:string" minOccurs="1" maxOccurs="1"/>
+                <xs:element name="prepare" type="distcp:PREPARE" minOccurs="0" maxOccurs="1"/>
+                <xs:element name="configuration" type="distcp:CONFIGURATION" minOccurs="0" maxOccurs="1"/>
+                <xs:element name="java-opts" type="xs:string" minOccurs="0" maxOccurs="1"/>
+                <xs:element name="arg" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:complexType>
+    
+    <xs:complexType name="CONFIGURATION">
+        <xs:sequence>
+            <xs:element name="property" minOccurs="1" maxOccurs="unbounded">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="name" minOccurs="1" maxOccurs="1" type="xs:string"/>
+                        <xs:element name="value" minOccurs="1" maxOccurs="1" type="xs:string"/>
+                        <xs:element name="description" minOccurs="0" maxOccurs="1" type="xs:string"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+        </xs:sequence>
+    </xs:complexType>
+    
+    <xs:complexType name="PREPARE">
+        <xs:sequence>
+            <xs:element name="delete" type="distcp:DELETE" minOccurs="0" maxOccurs="unbounded"/>
+            <xs:element name="mkdir" type="distcp:MKDIR" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="DELETE">
+        <xs:attribute name="path" type="xs:string" use="required"/>
+    </xs:complexType>
+
+    <xs:complexType name="MKDIR">
+        <xs:attribute name="path" type="xs:string" use="required"/>
+    </xs:complexType>
+    
+</xs:schema>

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/61417357/webapp/src/conf/oozie/conf/action-conf/distcp-action-0.2.xsd
----------------------------------------------------------------------
diff --git a/webapp/src/conf/oozie/conf/action-conf/distcp-action-0.2.xsd b/webapp/src/conf/oozie/conf/action-conf/distcp-action-0.2.xsd
new file mode 100644
index 0000000..f478e92
--- /dev/null
+++ b/webapp/src/conf/oozie/conf/action-conf/distcp-action-0.2.xsd
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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.
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+           xmlns:distcp="uri:oozie:distcp-action:0.2" elementFormDefault="qualified"
+           targetNamespace="uri:oozie:distcp-action:0.2">
+
+    <xs:element name="distcp" type="distcp:ACTION"/>
+
+    <xs:complexType name="ACTION">
+        <xs:sequence>
+                <xs:element name="job-tracker" type="xs:string" minOccurs="0" maxOccurs="1"/>
+                <xs:element name="name-node" type="xs:string" minOccurs="0" maxOccurs="1"/>
+                <xs:element name="prepare" type="distcp:PREPARE" minOccurs="0" maxOccurs="1"/>
+                <xs:element name="configuration" type="distcp:CONFIGURATION" minOccurs="0" maxOccurs="1"/>
+                <xs:element name="java-opts" type="xs:string" minOccurs="0" maxOccurs="1"/>
+                <xs:element name="arg" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:complexType>
+    
+    <xs:complexType name="CONFIGURATION">
+        <xs:sequence>
+            <xs:element name="property" minOccurs="1" maxOccurs="unbounded">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="name" minOccurs="1" maxOccurs="1" type="xs:string"/>
+                        <xs:element name="value" minOccurs="1" maxOccurs="1" type="xs:string"/>
+                        <xs:element name="description" minOccurs="0" maxOccurs="1" type="xs:string"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+        </xs:sequence>
+    </xs:complexType>
+    
+    <xs:complexType name="PREPARE">
+        <xs:sequence>
+            <xs:element name="delete" type="distcp:DELETE" minOccurs="0" maxOccurs="unbounded"/>
+            <xs:element name="mkdir" type="distcp:MKDIR" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="DELETE">
+        <xs:attribute name="path" type="xs:string" use="required"/>
+    </xs:complexType>
+
+    <xs:complexType name="MKDIR">
+        <xs:attribute name="path" type="xs:string" use="required"/>
+    </xs:complexType>
+    
+</xs:schema>

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/61417357/webapp/src/conf/oozie/conf/action-conf/email-action-0.1.xsd
----------------------------------------------------------------------
diff --git a/webapp/src/conf/oozie/conf/action-conf/email-action-0.1.xsd b/webapp/src/conf/oozie/conf/action-conf/email-action-0.1.xsd
new file mode 100644
index 0000000..c8b4ca2
--- /dev/null
+++ b/webapp/src/conf/oozie/conf/action-conf/email-action-0.1.xsd
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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.
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+           xmlns:email="uri:oozie:email-action:0.1" elementFormDefault="qualified"
+           targetNamespace="uri:oozie:email-action:0.1">
+
+    <xs:element name="email" type="email:ACTION"/>
+
+    <xs:complexType name="ACTION">
+        <xs:sequence>
+            <xs:element name="to" type="xs:string" minOccurs="1" maxOccurs="1"/>
+            <xs:element name="cc" type="xs:string" minOccurs="0" maxOccurs="1"/>
+            <xs:element name="subject" type="xs:string" minOccurs="1" maxOccurs="1"/>
+            <xs:element name="body" type="xs:string" minOccurs="1" maxOccurs="1"/>
+        </xs:sequence>
+    </xs:complexType>
+</xs:schema>

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/61417357/webapp/src/conf/oozie/conf/action-conf/gms-oozie-sla-0.1.xsd
----------------------------------------------------------------------
diff --git a/webapp/src/conf/oozie/conf/action-conf/gms-oozie-sla-0.1.xsd b/webapp/src/conf/oozie/conf/action-conf/gms-oozie-sla-0.1.xsd
new file mode 100644
index 0000000..64cc0ad
--- /dev/null
+++ b/webapp/src/conf/oozie/conf/action-conf/gms-oozie-sla-0.1.xsd
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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.
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+           xmlns:sla="uri:oozie:sla:0.1" elementFormDefault="qualified"
+           targetNamespace="uri:oozie:sla:0.1">
+
+    <xs:element name="info" type="sla:SLA-INFO"/>
+
+    <xs:complexType name="SLA-INFO">
+        <xs:sequence>
+            <xs:element name="app-name" type="xs:string" minOccurs="1"
+                        maxOccurs="1"/>
+
+            <xs:element name="nominal-time" type="xs:string"
+                        minOccurs="1" maxOccurs="1"/>
+            <xs:element name="should-start" type="xs:string"
+                        minOccurs="1" maxOccurs="1"/>
+            <xs:element name="should-end" type="xs:string" minOccurs="1"
+                        maxOccurs="1"/>
+
+            <xs:element name="parent-client-id" type="xs:string"
+                        minOccurs="0" maxOccurs="1"/>
+            <xs:element name="parent-sla-id" type="xs:string"
+                        minOccurs="0" maxOccurs="1"/>
+
+            <xs:element name="notification-msg" type="xs:string"
+                        minOccurs="0" maxOccurs="1"/>
+            <xs:element name="alert-contact" type="xs:string"
+                        minOccurs="1" maxOccurs="1"/>
+            <xs:element name="dev-contact" type="xs:string" minOccurs="1"
+                        maxOccurs="1"/>
+            <xs:element name="qa-contact" type="xs:string" minOccurs="1"
+                        maxOccurs="1"/>
+            <xs:element name="se-contact" type="xs:string" minOccurs="1"
+                        maxOccurs="1"/>
+            <xs:element name="alert-frequency" type="sla:alert-frequencyType"
+                        minOccurs="0" maxOccurs="1"/>
+            <xs:element name="alert-percentage" type="sla:alert-percentageType"
+                        minOccurs="0" maxOccurs="1"/>
+
+            <xs:element name="upstream-apps" type="xs:string"
+                        minOccurs="0" maxOccurs="1"/>
+
+        </xs:sequence>
+    </xs:complexType>
+    <xs:simpleType name="alert-percentageType">
+        <xs:restriction base="xs:integer">
+            <xs:minInclusive value="0"/>
+            <xs:maxInclusive value="100"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="alert-frequencyType">
+        <xs:restriction base="xs:string">
+            <xs:enumeration value="NONE"></xs:enumeration>
+            <xs:enumeration value="LAST_HOUR"></xs:enumeration>
+            <xs:enumeration value="LAST_DAY"></xs:enumeration>
+            <xs:enumeration value="LAST_MONTH"></xs:enumeration>
+        </xs:restriction>
+    </xs:simpleType>
+
+</xs:schema>


Mime
View raw message