falcon-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sowmya...@apache.org
Subject [01/22] falcon git commit: FALCON-1315 Update falcon ui for HiveDR, secure clusters and bug fixes. Contributed by Armando Reyna/Venkat Ranganathan.
Date Tue, 13 Oct 2015 00:03:54 GMT
Repository: falcon
Updated Branches:
  refs/heads/master d81820082 -> 86180d932


http://git-wip-us.apache.org/repos/asf/falcon/blob/86180d93/falcon-ui/express-data/mockData.js
----------------------------------------------------------------------
diff --git a/falcon-ui/express-data/mockData.js b/falcon-ui/express-data/mockData.js
index cdd783c..1c52358 100644
--- a/falcon-ui/express-data/mockData.js
+++ b/falcon-ui/express-data/mockData.js
@@ -16,34 +16,110 @@
  * limitations under the License.
  */
 (function () {
-  'use strict';  
-  
+  'use strict';
+
   function findByNameInList(type, name) {
     var i;
     for (i = 0; i < entitiesList[type].entity.length; i++) {
-      if (entitiesList[type].entity[i]["name"] === name) {       
-        return i;     
+      if (entitiesList[type].entity[i]["name"] === name) {
+        return i;
+      }
+    }
+  };
+
+  function findByStartEnd(type, start, end) {
+    for (var i = 0; i < instancesList[type].length; i++) {
+      if (instancesList[type][i].startTime === start && instancesList[type][i].endTime === end) {
+        return i;
       }
-    } 
-  }
+    }
+  };
 
   var entitiesList = {
     cluster : {
       "entity":[
-        {"type":"cluster","name":"completeCluster","status":"SUBMITTED","list":{"tag":["uruguay=mvd","argentina=bsas","mexico=mex", "usa=was"]}},
+        {"type":"cluster","name":"completeCluster","status":"SUBMITTED","tags":{"tag":["uruguay=mvd","argentina=bsas","mexico=mex", "usa=was"]}},
         {"type":"cluster","name":"primaryCluster","status":"SUBMITTED"}
       ]
     },
     feed: {
       "entity":[
-        {"type":"FEED","name":"feedOne","status":"SUBMITTED","list":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
-        {"type":"FEED","name":"feedTwo","status":"RUNNING","list":{"tag":["owner=USMarketing","classification=Secure","externalSource=USProdEmailServers","externalTarget=BITools"]}}
+        {"type":"FEED","name":"feedOne","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}, "clusters": {"cluster":"primaryCluster"}},
+        {"type":"FEED","name":"feedTwo","status":"RUNNING","tags":{"tag":["owner=USMarketing","classification=Secure","externalSource=USProdEmailServers","externalTarget=BITools"]}, "clusters": {"cluster":["SampleCluster1","primaryCluster"]}},
+        {"type":"FEED","name":"feedTree","status":"SUBMITTED","tags":{"tag":"externalSystem=USWestEmailServers"}},
+        {"type":"FEED","name":"feedFour","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feedFive","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feedSix","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feedSeven","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feedEight","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feedNine","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feedTen","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed11","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed12","status":"RUNNING","tags":{"tag":["owner=USMarketing","classification=Secure"]}},
+        {"type":"FEED","name":"feed13","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed14","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed15","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed16","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed17","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed18","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed19","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed20","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed21","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed22","status":"RUNNING","tags":{"tag":["owner=USMarketing"]}},
+        {"type":"FEED","name":"feed23","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed24","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed25","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed26","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed27","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed28","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed29","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed30","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed31","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed32","status":"RUNNING","tags":{"tag":["owner=USMarketing"]}},
+        {"type":"FEED","name":"feed33","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed34","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed35","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed36","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed37","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed38","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed39","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed40","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed41","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed42","status":"RUNNING","tags":{"tag":["owner=USMarketing"]}},
+        {"type":"FEED","name":"feed43","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed44","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed45","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed46","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed47","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed48","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed49","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed50","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed51","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed52","status":"RUNNING","tags":{"tag":["owner=USMarketing"]}},
+        {"type":"FEED","name":"feed53","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed54","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed55","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed56","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed57","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed58","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed59","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed60","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed61","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}},
+        {"type":"FEED","name":"feed62","status":"RUNNING","tags":{"tag":["owner=USMarketing"]}},
+        {"type":"FEED","name":"feed63","status":"SUBMITTED","tags":{"tag":["externalSystem=USWestEmailServers","classification=secure"]}}
       ]
     },
     process:{"entity":[
-      {"type":"process","name":"processOne","status":"SUBMITTED","list":{"tag":["pipeline=churnAnalysisDataPipeline","owner=ETLGroup","montevideo=mvd"]}},
-      {"type":"process","name":"processTwo","status":"SUBMITTED","list":{"tag":["pipeline=churnAnalysisDataPipeline","owner=ETLGroup","externalSystem=USWestEmailServers"]}}]}
-    },
+      {"type":"process","name":"processOne","status":"SUBMITTED","tags":{"tag":["pipeline=churnAnalysisDataPipeline","owner=ETLGroup","montevideo=mvd"]}},
+      {"type":"process","name":"processTwo","status":"SUBMITTED","tags":{"tag":["pipeline=churnAnalysisDataPipeline","owner=ETLGroup","externalSystem=USWestEmailServers"]}},
+      {"type":"process","name":"hdfs-mirror-test","status":"SUBMITTED","tags":{"tag":["_falcon_mirroring_type=HDFS"]}},
+      {"type":"process","name":"hdfs-azure-mirror-test","status":"SUBMITTED","tags":{"tag":["_falcon_mirroring_type=HDFS","runsOn=target"]}},
+      {"type":"process","name":"hdfs-s3-mirror-test","status":"SUBMITTED","tags":{"tag":["_falcon_mirroring_type=HDFS","runsOn=target"]}},
+      {"type":"process","name":"hive-databases-mirror-test","status":"SUBMITTED","tags":{"tag":["_falcon_mirroring_type=HIVE","runsOn=target"]}},
+      {"type":"process","name":"hive-db-tables-mirror-test","status":"SUBMITTED","tags":{"tag":["_falcon_mirroring_type=HIVE","runsOn=source"]}},
+      {"type":"process","name":"mirror4","status":"SUBMITTED","tags":{"tag":["_falcon_mirroring_type=HDFS","runsOn=source"]}}
+    ]}
+  },
     definitions = {
       CLUSTER: {
         completeCluster : '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' +
@@ -65,7 +141,7 @@
             '<ACL owner="ambari-qa" group="users" permission="0755"/>' +
             '<properties>' +
               '<property name="this" value="property"/>' +
-            '</properties>' +   
+            '</properties>' +
           '</cluster>',
         primaryCluster: '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' +
           '<cluster name="primaryCluster" description="oregonHadoopCluster" colo="USWestOregon" xmlns="uri:falcon:cluster:0.1">' +
@@ -88,7 +164,7 @@
           '<feed name="feedOne" description="Raw customer email feed" xmlns="uri:falcon:feed:0.1">' +
             '<tags>externalSystem=USWestEmailServers,classification=secure</tags>' +
             '<frequency>hours(1)</frequency>' +
-            '<timezone>UTC</timezone>' +
+            '<timezone>GMT+00:00</timezone>' +
             '<late-arrival cut-off="hours(4)"/>' +
             '<clusters>' +
               '<cluster name="primaryCluster" type="source">' +
@@ -122,7 +198,7 @@
             '<tags>owner=USMarketing,classification=Secure,externalSource=USProdEmailServers,externalTarget=BITools</tags>' +
             '<groups>churnAnalysisDataPipeline</groups>' +
             '<frequency>hours(1)</frequency>' +
-            '<timezone>UTC</timezone>' +
+            '<timezone>GMT+00:00</timezone>' +
             '<clusters>' +
               '<cluster name="primaryCluster" type="source">' +
                 '<validity start="2014-02-28T00:00Z" end="2016-04-01T00:00Z"/>' +
@@ -187,18 +263,352 @@
             '<parallel>1</parallel>' +
             '<order>FIFO</order>' +
             '<frequency>hours(1)</frequency>' +
-            '<timezone>UTC</timezone>' +
+            '<timezone>GMT+00:00</timezone>' +
             '<outputs>' +
               '<output name="output" feed="rawEmailFeed" instance="now(0,0)"/>' +
             '</outputs>' +
             '<workflow name="emailIngestWorkflow" version="2.0.0" engine="oozie" path="/user/ambari-qa/falcon/demo/apps/ingest/fs"/>' +
             '<retry policy="periodic" delay="minutes(15)" attempts="3"/>' +
-          '</process>'
+          '</process>',
+
+        'hdfs-mirror-test': "<?xml version='1.0' encoding='UTF-8' standalone='yes'?><process xmlns='uri:falcon:process:0.1' name='hdfs-mirror-test'><tags>_falcon_mirroring_type=HDFS</tags><clusters><cluster name='completeCluster'><validity start='2015-03-28T07:32:00.000Z' end='2015-12-31T20:00:00.000Z'/></cluster></clusters><parallel>1</parallel><order>LAST_ONLY</order><frequency>days(7)</frequency><timezone>GMT+00:00</timezone><properties><property name='oozie.wf.subworkflow.classpath.inheritance' value='true'></property><property name='distcpMaxMaps' value='50'></property><property name='distcpMapBandwidth' value='1100'></property><property name='drSourceDir' value='first-path/source/cluster'></property><property name='drTargetDir' value='second-path/source/cluster'></property><property name='drTargetClusterFS' value='hdfs://sandbox.hortonworks.com:8020'></property><property name='drSourceClusterFS' value='hdfs://sandbox.hortonworks.com:8020'></property><property name='drNotifyEma
 il' value='first-test@hdfs.com'></property><property name='targetCluster' value='primaryCluster'></property><property name='sourceCluster' value='completeCluster'></property></properties><workflow name='hdfs-mirror-test2-WF' engine='oozie' path='hdfs://node-1.example.com:8020/apps/falcon/recipe/hdfs-replication/resources/runtime/hdfs-replication-workflow.xml' lib=''/><retry policy='EXPONENTIAL_BACKOFF' delay='days(60)' attempts='7'/><ACL owner='ambari-qa' group='users2' permission='0x755'/></process>",
+
+        'hdfs-azure-mirror-test': "<?xml version='1.0' encoding='UTF-8' standalone='yes'?><process xmlns='uri:falcon:process:0.1' name='hdfs-azure-mirror-test'><tags>_falcon_mirroring_type=HDFS,runsOn=target</tags><clusters><cluster name='completeCluster'><validity start='2015-03-28T06:32:00.000Z' end='2015-12-31T21:00:00.000Z'/></cluster></clusters><parallel>1</parallel><order>LAST_ONLY</order><frequency>hours(7)</frequency><timezone>GMT+00:00</timezone><properties><property name='oozie.wf.subworkflow.classpath.inheritance' value='true'></property><property name='distcpMaxMaps' value='340'></property><property name='distcpMapBandwidth' value='2200'></property><property name='drSourceDir' value='first-path/azure/something'></property><property name='drTargetDir' value='second-path/target/cluster'></property><property name='drTargetClusterFS' value='hdfs://sandbox.hortonworks.com:8020'></property><property name='drSourceClusterFS' value='http://some.addres.blob.core.windows.net'></pr
 operty><property name='drNotifyEmail' value='first-test@hdfs.com,second-test@azure.com'></property><property name='targetCluster' value='completeCluster'></property><property name='sourceCluster' value=''></property></properties><workflow name='hdfs-azure-mirror-test-WF' engine='oozie' path='hdfs://node-1.example.com:8020/apps/falcon/recipe/hdfs-replication/resources/runtime/hdfs-replication-workflow.xml' lib=''/><retry policy='EXPONENTIAL_BACKOFF' delay='days(60)' attempts='1'/><ACL owner='ambari-qa' group='users2' permission='0x755'/></process>",
+
+        'hdfs-s3-mirror-test': "<?xml version='1.0' encoding='UTF-8' standalone='yes'?><process xmlns='uri:falcon:process:0.1' name='hdfs-s3-mirror-test'><tags>_falcon_mirroring_type=HDFS,runsOn=target</tags><clusters><cluster name='completeCluster'><validity start='2015-04-03T00:42:00.000Z' end='2015-12-08T21:00:00.000Z'/></cluster></clusters><parallel>1</parallel><order>LAST_ONLY</order><frequency>months(7)</frequency><timezone>GMT+00:00</timezone><properties><property name='oozie.wf.subworkflow.classpath.inheritance' value='true'></property><property name='distcpMaxMaps' value='3340'></property><property name='distcpMapBandwidth' value='5500'></property><property name='drSourceDir' value='first-path/s3/something'></property><property name='drTargetDir' value='third-path/target/cluster'></property><property name='drTargetClusterFS' value='hdfs://sandbox.hortonworks.com:8020'></property><property name='drSourceClusterFS' value='s3://some.address..amazonaws.com'></property><property
  name='drNotifyEmail' value='second-test@s3.com'></property><property name='targetCluster' value='completeCluster'></property><property name='sourceCluster' value=''></property></properties><workflow name='hdfs-s3-mirror-test-WF' engine='oozie' path='hdfs://node-1.example.com:8020/apps/falcon/recipe/hdfs-replication/resources/runtime/hdfs-replication-workflow.xml' lib=''/><retry policy='FINAL' delay='months(60)' attempts='15'/><ACL owner='ambari-qa' group='users' permission='0x755'/></process>",
+
+        'hive-databases-mirror-test': "<?xml version='1.0' encoding='UTF-8' standalone='yes'?><process xmlns='uri:falcon:process:0.1' name='hive-databases-mirror-test'><tags>_falcon_mirroring_type=HIVE,runsOn=target</tags><clusters><cluster name='completeCluster'><validity start='2015-04-14T15:42:00.000Z' end='2016-01-22T14:04:00.000Z'/></cluster></clusters><parallel>1</parallel><order>LAST_ONLY</order><frequency>months(7)</frequency><timezone>GMT+00:00</timezone><properties><property name='oozie.wf.subworkflow.classpath.inheritance' value='true'></property><property name='distcpMaxMaps' value='111'></property><property name='distcpMapBandwidth' value='678'></property><property name='targetCluster' value='primaryCluster'></property><property name='sourceCluster' value='completeCluster'></property><property name='targetHiveServer2Uri' value='some/path/staging'></property><property name='sourceHiveServer2Uri' value='thrift://localhost:10000'></property><property name='sourceStagingPat
 h' value='/apps/falcon/backupCluster/staging'></property><property name='targetStagingPath' value='*'></property><property name='targetNN' value='hdfs://sandbox.hortonworks.com:8020'></property><property name='sourceNN' value='hdfs://sandbox.hortonworks.com:8020'></property><property name='sourceServicePrincipal' value='hive'></property><property name='targetServicePrincipal' value='hive'></property><property name='targetMetastoreUri' value=''></property><property name='sourceMetastoreUri' value='thrift://localhost:9083'></property><property name='sourceTable' value='*'></property><property name='sourceDatabase' value='db1,db2,db3'></property><property name='maxEvents' value='-10'></property><property name='replicationMaxMaps' value='52'></property><property name='clusterForJobRun' value='primaryCluster'></property><property name='clusterForJobRunWriteEP' value='hdfs://sandbox.hortonworks.com:8020'></property><property name='drJobName' value='hive-databases-mirror-test'></property><
 property name='drNotifyEmail' value='hive-databases@test.com'></property></properties><workflow name='falcon-dr-hive-workflow' engine='oozie' path='hdfs://node-1.example.com:8020/apps/falcon/recipe/hive-disaster-recovery/resources/runtime/hive-disaster-recovery-workflow.xml' lib=''/><retry policy='PERIODIC' delay='months(60)' attempts='15'/><ACL owner='ambari-qa' group='users' permission='0x755'/></process>",
+
+        'hive-db-tables-mirror-test': "<?xml version='1.0' encoding='UTF-8' standalone='yes'?><process xmlns='uri:falcon:process:0.1' name='hive-db-tables-mirror-test'><tags>_falcon_mirroring_type=HIVE,runsOn=source</tags><clusters><cluster name='completeCluster'><validity start='2015-05-01T09:42:00.000Z' end='2016-04-09T09:04:00.000Z'/></cluster></clusters><parallel>1</parallel><order>LAST_ONLY</order><frequency>months(7)</frequency><timezone>GMT+00:00</timezone><properties><property name='oozie.wf.subworkflow.classpath.inheritance' value='true'></property><property name='distcpMaxMaps' value='111'></property><property name='distcpMapBandwidth' value='678'></property><property name='targetCluster' value='primaryCluster'></property><property name='sourceCluster' value='completeCluster'></property><property name='targetHiveServer2Uri' value='some/path/staging'></property><property name='sourceHiveServer2Uri' value='thrift://localhost:10000'></property><property name='sourceStagingPat
 h' value='/apps/falcon/backupCluster/staging'></property><property name='targetStagingPath' value='/apps/falcon/some/staging'></property><property name='targetNN' value='hdfs://sandbox.hortonworks.com:8020'></property><property name='sourceNN' value='hdfs://sandbox.hortonworks.com:8020'></property><property name='sourceServicePrincipal' value='hive'></property><property name='targetServicePrincipal' value='hive'></property><property name='targetMetastoreUri' value=''></property><property name='sourceMetastoreUri' value='thrift://localhost:9083'></property><property name='sourceTable' value='table1,table2,table3'></property><property name='sourceDatabase' value='database1'></property><property name='maxEvents' value='-10'></property><property name='replicationMaxMaps' value='52'></property><property name='clusterForJobRun' value='completeCluster'></property><property name='clusterForJobRunWriteEP' value='hdfs://sandbox.hortonworks.com:8020'></property><property name='drJobName' value
 ='hive-db-tables-mirror-test'></property><property name='drNotifyEmail' value='hive-tables@test.com'></property></properties><workflow name='falcon-dr-hive-workflow' engine='oozie' path='hdfs://node-1.example.com:8020/apps/falcon/recipe/hive-disaster-recovery/resources/runtime/hive-disaster-recovery-workflow.xml' lib=''/><retry policy='PERIODIC' delay='months(60)' attempts='15'/><ACL owner='ambari-qa' group='users' permission='0x755'/></process>"
+
+      }
+
+    },
+    instancesList = {
+      FEED: [
+        {
+          "details": "",
+          "endTime": "2014-10-21T14:40:26-07:00",
+          "startTime": "2015-10-21T14:39:56-07:00",
+          "cluster": "primary-cluster",
+          "logFile": "http:\/\/localhost:11000\/oozie?job=0000070-131021115933395-oozie-rgau-W",
+          "status": "SUCCEEDED",
+          "instance": "2012-04-01T07:00Z"
+        }, {
+          "details": "",
+          "endTime": "2014-10-21T14:42:26-07:00",
+          "startTime": "2015-10-21T14:41:56-07:00",
+          "cluster": "primary-cluster",
+          "logFile": "http:\/\/localhost:11000\/oozie?job=0000070-131021115933397-oozie-rgau-W",
+          "status": "RUNNING",
+          "instance": "2012-04-02T08:00Z"
+        }, {
+          "details": "",
+          "endTime": "2014-10-21T14:42:26-07:00",
+          "startTime": "2015-10-21T14:41:56-07:00",
+          "cluster": "primary-cluster",
+          "logFile": "http:\/\/localhost:11000\/oozie?job=0000070-131021115933397-oozie-rgau-W",
+          "status": "SUSPENDED",
+          "instance": "2012-04-03T08:00Z"
+        }, {
+          "details": "",
+          "endTime": "2014-10-21T14:42:26-07:00",
+          "startTime": "2015-10-21T14:41:56-07:00",
+          "cluster": "primary-cluster",
+          "logFile": "http:\/\/localhost:11000\/oozie?job=0000070-131021115933397-oozie-rgau-W",
+          "status": "KILLED",
+          "instance": "2012-04-04T08:00Z"
+        }, {
+          "details": "",
+          "endTime": "2014-10-21T14:42:26-07:00",
+          "startTime": "2015-10-21T14:41:56-07:00",
+          "cluster": "primary-cluster",
+          "logFile": "http:\/\/localhost:11000\/oozie?job=0000070-131021115933397-oozie-rgau-W",
+          "status": "SUCCEEDED",
+          "instance": "2012-04-05T08:00Z"
+        }, {
+          "details": "",
+          "endTime": "2014-10-21T14:42:26-07:00",
+          "startTime": "2015-10-21T14:41:56-07:00",
+          "cluster": "primary-cluster",
+          "logFile": "http:\/\/localhost:11000\/oozie?job=0000070-131021115933397-oozie-rgau-W",
+          "status": "WAITING",
+          "instance": "2012-04-06T08:00Z"
+        }, {
+          "details": "",
+          "endTime": "2014-10-21T14:42:26-07:00",
+          "startTime": "2015-10-21T14:41:56-07:00",
+          "cluster": "primary-cluster",
+          "logFile": "http:\/\/localhost:11000\/oozie?job=0000070-131021115933397-oozie-rgau-W",
+          "status": "FAILED",
+          "instance": "2012-04-07T08:00Z"
+        }, {
+          "details": "",
+          "endTime": "2014-10-21T14:42:26-07:00",
+          "startTime": "2015-10-21T14:41:56-07:00",
+          "cluster": "primary-cluster",
+          "logFile": "http:\/\/localhost:11000\/oozie?job=0000070-131021115933397-oozie-rgau-W",
+          "status": "SUCCEEDED",
+          "instance": "2012-04-08T08:00Z"
+        }, {
+          "details": "",
+          "endTime": "2014-10-21T14:42:26-07:00",
+          "startTime": "2015-10-21T14:41:56-07:00",
+          "cluster": "primary-cluster",
+          "logFile": "http:\/\/localhost:11000\/oozie?job=0000070-131021115933397-oozie-rgau-W",
+          "status": "SUSPENDED",
+          "instance": "2012-04-09T08:00Z"
+        },{
+          "details": "",
+          "endTime": "2014-10-21T14:40:26-07:00",
+          "startTime": "2015-10-21T14:39:56-07:00",
+          "cluster": "primary-cluster",
+          "logFile": "http:\/\/localhost:11000\/oozie?job=0000070-131021115933395-oozie-rgau-W",
+          "status": "SUSPENDED",
+          "instance": "2012-04-10T07:00Z"
+        }, {
+          "details": "",
+          "endTime": "2014-10-21T14:42:26-07:00",
+          "startTime": "2015-10-21T14:41:56-07:00",
+          "cluster": "primary-cluster",
+          "logFile": "http:\/\/localhost:11000\/oozie?job=0000070-131021115933397-oozie-rgau-W",
+          "status": "RUNNING",
+          "instance": "2012-04-11T08:00Z"
+        }, {
+          "details": "",
+          "endTime": "2014-10-21T14:42:26-07:00",
+          "startTime": "2015-10-21T14:41:56-07:00",
+          "cluster": "primary-cluster",
+          "logFile": "http:\/\/localhost:11000\/oozie?job=0000070-131021115933397-oozie-rgau-W",
+          "status": "SUSPENDED",
+          "instance": "2012-04-12T08:00Z"
+        }, {
+          "details": "",
+          "endTime": "2014-10-21T14:42:26-07:00",
+          "startTime": "2015-10-21T14:41:56-07:00",
+          "cluster": "primary-cluster",
+          "logFile": "http:\/\/localhost:11000\/oozie?job=0000070-131021115933397-oozie-rgau-W",
+          "status": "KILLED",
+          "instance": "2012-04-13T08:00Z"
+        }, {
+          "details": "",
+          "endTime": "2014-10-21T14:42:26-07:00",
+          "startTime": "2015-10-21T14:41:56-07:00",
+          "cluster": "primary-cluster",
+          "logFile": "http:\/\/localhost:11000\/oozie?job=0000070-131021115933397-oozie-rgau-W",
+          "status": "SUCCEEDED",
+          "instance": "2012-04-14T08:00Z"
+        }, {
+          "details": "",
+          "endTime": "2014-10-21T14:42:26-07:00",
+          "startTime": "2015-10-21T14:41:56-07:00",
+          "cluster": "primary-cluster",
+          "logFile": "http:\/\/localhost:11000\/oozie?job=0000070-131021115933397-oozie-rgau-W",
+          "status": "SUCCEEDED",
+          "instance": "2012-04-15T08:00Z"
+        }, {
+          "details": "",
+          "endTime": "2014-10-21T14:42:26-07:00",
+          "startTime": "2015-10-21T14:41:56-07:00",
+          "cluster": "primary-cluster",
+          "logFile": "http:\/\/localhost:11000\/oozie?job=0000070-131021115933397-oozie-rgau-W",
+          "status": "SUCCEEDED",
+          "instance": "2012-04-16T08:00Z"
+        }, {
+          "details": "",
+          "endTime": "2014-10-21T14:42:26-07:00",
+          "startTime": "2015-10-21T14:41:56-07:00",
+          "cluster": "primary-cluster",
+          "logFile": "http:\/\/localhost:11000\/oozie?job=0000070-131021115933397-oozie-rgau-W",
+          "status": "SUCCEEDED",
+          "instance": "2012-04-17T08:00Z"
+        }, {
+          "details": "",
+          "endTime": "2014-10-21T14:42:26-07:00",
+          "startTime": "2015-10-21T14:41:56-07:00",
+          "cluster": "primary-cluster",
+          "logFile": "http:\/\/localhost:11000\/oozie?job=0000070-131021115933397-oozie-rgau-W",
+          "status": "SUCCEEDED",
+          "instance": "2012-04-18T08:00Z"
+        }, {
+          "details": "",
+          "endTime": "2014-10-21T14:42:26-07:00",
+          "startTime": "2015-10-21T14:41:56-07:00",
+          "cluster": "primary-cluster",
+          "logFile": "http:\/\/localhost:11000\/oozie?job=0000070-131021115933397-oozie-rgau-W",
+          "status": "SUCCEEDED",
+          "instance": "2012-04-19T08:00Z"
+        }, {
+          "details": "",
+          "endTime": "2014-10-21T14:42:26-07:00",
+          "startTime": "2015-10-21T14:41:56-07:00",
+          "cluster": "primary-cluster",
+          "logFile": "http:\/\/localhost:11000\/oozie?job=0000070-131021115933397-oozie-rgau-W",
+          "status": "SUCCEEDED",
+          "instance": "2012-04-20T08:00Z"
+        }, {
+          "details": "",
+          "endTime": "2014-10-21T14:42:26-07:00",
+          "startTime": "2015-10-21T14:41:56-07:00",
+          "cluster": "primary-cluster",
+          "logFile": "http:\/\/localhost:11000\/oozie?job=0000070-131021115933397-oozie-rgau-W",
+          "status": "SUCCEEDED",
+          "instance": "2012-04-21T08:00Z"
+        }, {
+          "details": "",
+          "endTime": "2014-10-21T14:42:26-07:00",
+          "startTime": "2015-10-21T14:41:56-07:00",
+          "cluster": "primary-cluster",
+          "logFile": "http:\/\/localhost:11000\/oozie?job=0000070-131021115933397-oozie-rgau-W",
+          "status": "SUCCEEDED",
+          "instance": "2012-04-22T08:00Z"
+        }, {
+          "details": "",
+          "endTime": "2014-10-21T14:42:26-07:00",
+          "startTime": "2015-10-21T14:41:56-07:00",
+          "cluster": "primary-cluster",
+          "logFile": "http:\/\/localhost:11000\/oozie?job=0000070-131021115933397-oozie-rgau-W",
+          "status": "SUCCEEDED",
+          "instance": "2012-04-18T08:00Z"
+        }, {
+          "details": "",
+          "endTime": "2014-10-21T14:42:26-07:00",
+          "startTime": "2015-10-21T14:41:56-07:00",
+          "cluster": "primary-cluster",
+          "logFile": "http:\/\/localhost:11000\/oozie?job=0000070-131021115933397-oozie-rgau-W",
+          "status": "SUCCEEDED",
+          "instance": "2012-04-19T08:00Z"
+        }, {
+          "details": "",
+          "endTime": "2014-10-21T14:42:26-07:00",
+          "startTime": "2015-10-21T14:41:56-07:00",
+          "cluster": "primary-cluster",
+          "logFile": "http:\/\/localhost:11000\/oozie?job=0000070-131021115933397-oozie-rgau-W",
+          "status": "SUCCEEDED",
+          "instance": "2012-04-20T08:00Z"
+        }, {
+          "details": "",
+          "endTime": "2014-10-21T14:42:26-07:00",
+          "startTime": "2015-10-21T14:41:56-07:00",
+          "cluster": "primary-cluster",
+          "logFile": "http:\/\/localhost:11000\/oozie?job=0000070-131021115933397-oozie-rgau-W",
+          "status": "SUCCEEDED",
+          "instance": "2012-04-21T08:00Z"
+        }, {
+          "details": "",
+          "endTime": "2014-10-21T14:42:26-07:00",
+          "startTime": "2015-10-21T14:41:56-07:00",
+          "cluster": "primary-cluster",
+          "logFile": "http:\/\/localhost:11000\/oozie?job=0000070-131021115933397-oozie-rgau-W",
+          "status": "SUCCEEDED",
+          "instance": "2012-04-22T08:00Z"
+        }, {
+          "details": "",
+          "endTime": "2014-10-21T14:42:26-07:00",
+          "startTime": "2015-10-21T14:41:56-07:00",
+          "cluster": "primary-cluster",
+          "logFile": "http:\/\/localhost:11000\/oozie?job=0000070-131021115933397-oozie-rgau-W",
+          "status": "SUCCEEDED",
+          "instance": "2012-04-18T08:00Z"
+        }, {
+          "details": "",
+          "endTime": "2014-10-21T14:42:26-07:00",
+          "startTime": "2015-10-21T14:41:56-07:00",
+          "cluster": "primary-cluster",
+          "logFile": "http:\/\/localhost:11000\/oozie?job=0000070-131021115933397-oozie-rgau-W",
+          "status": "SUCCEEDED",
+          "instance": "2012-04-19T08:00Z"
+        }, {
+          "details": "",
+          "endTime": "2014-10-21T14:42:26-07:00",
+          "startTime": "2015-10-21T14:41:56-07:00",
+          "cluster": "primary-cluster",
+          "logFile": "http:\/\/localhost:11000\/oozie?job=0000070-131021115933397-oozie-rgau-W",
+          "status": "SUCCEEDED",
+          "instance": "2012-04-20T08:00Z"
+        }, {
+          "details": "",
+          "endTime": "2014-10-21T14:42:26-07:00",
+          "startTime": "2015-10-21T14:41:56-07:00",
+          "cluster": "primary-cluster",
+          "logFile": "http:\/\/localhost:11000\/oozie?job=0000070-131021115933397-oozie-rgau-W",
+          "status": "SUCCEEDED",
+          "instance": "2012-04-20T08:00Z"
         }
-      };
-  
+      ],
+      PROCESS: [
+        {
+          "details": "",
+          "endTime": "2014-10-21T14:40:26-07:00",
+          "startTime": "2015-10-21T14:39:56-07:00",
+          "cluster": "primary-cluster",
+          "logFile": "http:\/\/localhost:11000\/oozie?job=0000070-131021115933395-oozie-rgau-W",
+          "status": "SUCCEEDED",
+          "instance": "2012-04-03T07:00Z"
+        },
+        {
+          "details": "",
+          "endTime": "2014-10-21T14:42:26-07:00",
+          "startTime": "2015-10-21T14:41:56-07:00",
+          "cluster": "primary-cluster",
+          "logFile": "http:\/\/localhost:11000\/oozie?job=0000070-131021115933397-oozie-rgau-W",
+          "status": "SUCCEEDED",
+          "instance": "2012-04-03T08:00Z"
+        }
+      ]
+    },
+    entityDependencies = {
+      "entity": [
+        {
+          "name": "SampleInput",
+          "type": "feed",
+          "tag": ["Input"]
+          //"list": {"tag": ["Input"]}
+        },
+        {
+          "name": "SampleOutput",
+          "type": "feed",
+          "tag": ["Output"]
+          //"list": {"tag": ["Output"]}
+        },
+        {
+          "name": "primary-cluster",
+          "type": "cluster"
+        }
+      ]
+    },
+    vertices = {
+      "results":[{"timestamp":"2015-03-26T20:24Z","name":"SampleProcess3\/2014-11-01T23:00Z","type":"process-instance","version":"1.0","_id":40108,"_type":"vertex"}],"totalSize":1
+    },
+    verticesDirection = [
+      {"results":[{"_id":"2wm3-aqU-4u","_type":"edge","_outV":40108,"_inV":16,"_label":"owned-by"},{"_id":"2wm1-aqU-5o","_type":"edge","_outV":40108,"_inV":4,"_label":"runs-on"},{"_id":"2wm7-apq-5w","_type":"edge","_outV":40016,"_inV":40108,"_label":"input"},{"_id":"2wm5-aqU-5E","_type":"edge","_outV":40108,"_inV":40012,"_label":"output"},{"_id":"2wlZ-aqU-86","_type":"edge","_outV":40108,"_inV":32,"_label":"instance-of"}],"totalSize":5},
+      {"results":[{"timestamp":"2015-03-26T02:45Z","name":"ambari-qa","type":"user","_id":16,"_type":"vertex"},{"timestamp":"2015-03-26T02:42Z","name":"primaryCluster","type":"cluster-entity","_id":4,"_type":"vertex"},{"timestamp":"2015-03-26T20:21Z","name":"SampleFeed1\/yearno=2014\/monthno=11","type":"feed-instance","_id":40016,"_type":"vertex"},{"timestamp":"2015-03-26T20:21Z","name":"SampleFeed6\/yearno=2014\/monthno=11","type":"feed-instance","_id":40012,"_type":"vertex"},{"timestamp":"2015-03-26T02:46Z","name":"SampleProcess3","type":"process-entity","version":"1.0","_id":32,"_type":"vertex"}],"totalSize":5},
+      {"results":[{"_id":"2w9d-apm-4u","_type":"edge","_outV":40012,"_inV":16,"_label":"owned-by"},{"_id":"2w9b-apm-4S","_type":"edge","_outV":40012,"_inV":4,"_label":"stored-in"},{"_id":"2whH-aqo-5E","_type":"edge","_outV":40076,"_inV":40012,"_label":"output"},{"_id":"2wif-aqs-5E","_type":"edge","_outV":40080,"_inV":40012,"_label":"output"},{"_id":"2w9f-api-5E","_type":"edge","_outV":40008,"_inV":40012,"_label":"output"},{"_id":"2wiN-aqw-5E","_type":"edge","_outV":40084,"_inV":40012,"_label":"output"},{"_id":"2wa1-apu-5E","_type":"edge","_outV":40020,"_inV":40012,"_label":"output"},{"_id":"2wjl-aqA-5E","_type":"edge","_outV":40088,"_inV":40012,"_label":"output"},{"_id":"2waz-apy-5E","_type":"edge","_outV":40024,"_inV":40012,"_label":"output"},{"_id":"2wjT-aqE-5E","_type":"edge","_outV":40092,"_inV":40012,"_label":"output"},{"_id":"2wb7-apC-5E","_type":"edge","_outV":40028,"_inV":40012,"_label":"output"},{"_id":"2wkr-aqI-5E","_type":"edge","_outV":40096,"_inV":40012,"_label":"output
 "},{"_id":"2wbF-apG-5E","_type":"edge","_outV":40032,"_inV":40012,"_label":"output"},{"_id":"2wkZ-aqM-5E","_type":"edge","_outV":40100,"_inV":40012,"_label":"output"},{"_id":"2wcd-apK-5E","_type":"edge","_outV":40036,"_inV":40012,"_label":"output"},{"_id":"2wlx-aqQ-5E","_type":"edge","_outV":40104,"_inV":40012,"_label":"output"},{"_id":"2wcL-apO-5E","_type":"edge","_outV":40040,"_inV":40012,"_label":"output"},{"_id":"2wm5-aqU-5E","_type":"edge","_outV":40108,"_inV":40012,"_label":"output"},{"_id":"2wdj-apS-5E","_type":"edge","_outV":40044,"_inV":40012,"_label":"output"},{"_id":"2wdR-apW-5E","_type":"edge","_outV":40048,"_inV":40012,"_label":"output"},{"_id":"2wep-aq0-5E","_type":"edge","_outV":40052,"_inV":40012,"_label":"output"},{"_id":"2weX-aq4-5E","_type":"edge","_outV":40056,"_inV":40012,"_label":"output"},{"_id":"2wfv-aq8-5E","_type":"edge","_outV":40060,"_inV":40012,"_label":"output"},{"_id":"2wg3-aqc-5E","_type":"edge","_outV":40064,"_inV":40012,"_label":"output"},{"_id":"2w
 gB-aqg-5E","_type":"edge","_outV":40068,"_inV":40012,"_label":"output"},{"_id":"2wh9-aqk-5E","_type":"edge","_outV":40072,"_inV":40012,"_label":"output"},{"_id":"2w99-apm-86","_type":"edge","_outV":40012,"_inV":28,"_label":"instance-of"}],"totalSize":27},
+      {"results":[{"_id":"2w9t-apq-4u","_type":"edge","_outV":40016,"_inV":16,"_label":"owned-by"},{"_id":"2w9r-apq-4S","_type":"edge","_outV":40016,"_inV":4,"_label":"stored-in"},{"_id":"2wih-apq-5w","_type":"edge","_outV":40016,"_inV":40080,"_label":"input"},{"_id":"2wiP-apq-5w","_type":"edge","_outV":40016,"_inV":40084,"_label":"input"},{"_id":"2wa3-apq-5w","_type":"edge","_outV":40016,"_inV":40020,"_label":"input"},{"_id":"2wjn-apq-5w","_type":"edge","_outV":40016,"_inV":40088,"_label":"input"},{"_id":"2waB-apq-5w","_type":"edge","_outV":40016,"_inV":40024,"_label":"input"},{"_id":"2w9v-apq-5w","_type":"edge","_outV":40016,"_inV":40008,"_label":"input"},{"_id":"2wjV-apq-5w","_type":"edge","_outV":40016,"_inV":40092,"_label":"input"},{"_id":"2wb9-apq-5w","_type":"edge","_outV":40016,"_inV":40028,"_label":"input"},{"_id":"2wkt-apq-5w","_type":"edge","_outV":40016,"_inV":40096,"_label":"input"},{"_id":"2wbH-apq-5w","_type":"edge","_outV":40016,"_inV":40032,"_label":"input"},{"_id":
 "2wl1-apq-5w","_type":"edge","_outV":40016,"_inV":40100,"_label":"input"},{"_id":"2wcf-apq-5w","_type":"edge","_outV":40016,"_inV":40036,"_label":"input"},{"_id":"2wlz-apq-5w","_type":"edge","_outV":40016,"_inV":40104,"_label":"input"},{"_id":"2wcN-apq-5w","_type":"edge","_outV":40016,"_inV":40040,"_label":"input"},{"_id":"2wm7-apq-5w","_type":"edge","_outV":40016,"_inV":40108,"_label":"input"},{"_id":"2wdl-apq-5w","_type":"edge","_outV":40016,"_inV":40044,"_label":"input"},{"_id":"2wdT-apq-5w","_type":"edge","_outV":40016,"_inV":40048,"_label":"input"},{"_id":"2wer-apq-5w","_type":"edge","_outV":40016,"_inV":40052,"_label":"input"},{"_id":"2weZ-apq-5w","_type":"edge","_outV":40016,"_inV":40056,"_label":"input"},{"_id":"2wfx-apq-5w","_type":"edge","_outV":40016,"_inV":40060,"_label":"input"},{"_id":"2wg5-apq-5w","_type":"edge","_outV":40016,"_inV":40064,"_label":"input"},{"_id":"2wgD-apq-5w","_type":"edge","_outV":40016,"_inV":40068,"_label":"input"},{"_id":"2whb-apq-5w","_type":"ed
 ge","_outV":40016,"_inV":40072,"_label":"input"},{"_id":"2whJ-apq-5w","_type":"edge","_outV":40016,"_inV":40076,"_label":"input"},{"_id":"2w9p-apq-86","_type":"edge","_outV":40016,"_inV":12,"_label":"instance-of"}],"totalSize":27}
+    ],
+    verticesProps = {
+      "results":
+      {
+        "timestamp":"2014-04-25T22:20Z",
+        "name":"local",
+        "type":"cluster-entity"
+      },
+      "totalSize":3
+    },
+    server = {
+      //"properties":[{key: "authentication", value: "kerberos"}]
+      "properties":[{key: "authentication", value: "simple"}]
+    };
+
   exports.findByNameInList = findByNameInList;
+  exports.findByStartEnd = findByStartEnd;
   exports.entitiesList = entitiesList;
   exports.definitions = definitions;
-  
+  exports.instancesList = instancesList;
+  exports.entityDependencies = entityDependencies;
+  exports.vertices = vertices;
+  exports.verticesDirection = verticesDirection;
+  exports.verticesProps = verticesProps;
+  exports.server = server;
+
 })();
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/falcon/blob/86180d93/falcon-ui/package.json
----------------------------------------------------------------------
diff --git a/falcon-ui/package.json b/falcon-ui/package.json
index dda4855..bee5174 100644
--- a/falcon-ui/package.json
+++ b/falcon-ui/package.json
@@ -16,6 +16,7 @@
     "file": "~0.2.2",
     "grunt": "~0.4.4",
     "grunt-cli": "~0.1.9",
+    "grunt-concurrent": "^1.0.0",
     "grunt-contrib-clean": "^0.6.0",
     "grunt-contrib-copy": "~0.5.0",
     "grunt-contrib-concat": "^0.5.0",
@@ -27,6 +28,7 @@
     "grunt-datauri": "~0.4.0",
     "grunt-express-server": "~0.4.13",
     "grunt-karma": "^0.9.0",
+    "grunt-protractor-runner": "^1.1.4",
     "grunt-scp": "^0.1.7",
     "jasmine": "^2.0.1",
     "karma": "^0.12.23",

http://git-wip-us.apache.org/repos/asf/falcon/blob/86180d93/falcon-ui/pom.xml
----------------------------------------------------------------------
diff --git a/falcon-ui/pom.xml b/falcon-ui/pom.xml
index adb219b..6469b3d 100644
--- a/falcon-ui/pom.xml
+++ b/falcon-ui/pom.xml
@@ -76,7 +76,6 @@
               <arguments>test</arguments>
             </configuration>
           </execution>
-
         </executions>
       </plugin>
 
@@ -89,7 +88,9 @@
             <exclude>app/css/bootstrap/**</exclude>
             <exclude>app/test/lib/**</exclude>
             <exclude>app/css/fonts/**</exclude>
-            <exclude>app/config/loginData.js</exclude>
+            <exclude>app/css/styles/**</exclude>
+            <exclude>app/config/loginData.json</exclude>
+            <exclude>README.md</exclude>
             <exclude>dist/**</exclude>
             <exclude>node/**</exclude>
 	    <exclude>node_modules/**</exclude>
@@ -98,7 +99,9 @@
             <exclude>karma.conf.js</exclude>
             <exclude>bower.json</exclude>
             <exclude>app/css/main.css</exclude>
+	    <exclude>app/css/img/**</exclude>
             <exclude>app/test/e2e/protractor.js</exclude>
+            <exclude>app/js/directives/ng-tags-input.js</exclude>
           </excludes>
         </configuration>
       </plugin>

http://git-wip-us.apache.org/repos/asf/falcon/blob/86180d93/falcon-ui/server.js
----------------------------------------------------------------------
diff --git a/falcon-ui/server.js b/falcon-ui/server.js
index 422bcf9..298e10a 100644
--- a/falcon-ui/server.js
+++ b/falcon-ui/server.js
@@ -21,6 +21,7 @@
   var bodyParser = require('body-parser'),
     express = require('express'),
     mockData = require('./express-data/mockData.js'),
+    chartData = require('./express-data/chartData.js'),
     server = express(),
     PORT = 3000;
 
@@ -37,18 +38,117 @@
     }
   });
 
+  function searchByName(name, list){
+    var result = [];
+    var index = 0;
+    for(var i=0; i<list.length; i++){
+      //if(list[i].name === name){
+      if(list[i].name.indexOf(name) !== -1){
+        result[index++] = list[i];
+      }
+    }
+    return result;
+  }
+
+  function searchTag(tag, list){
+    var result = [];
+    var index = 0;
+    for(var j=0; j<list.length; j++){
+      for(var k=0; k<list[j].tags.tag.length; k++){
+        if(list[j].tags.tag[k].indexOf(tag) !== -1){
+            result[index++] = list[j];
+          break;
+        }
+      }
+    }
+    return result;
+  }
+
+  function searchByTags(tags, list){
+    var arrTags = tags.split(",");
+    var result = list;
+    for(var i=0; i<arrTags.length; i++){
+      result = searchTag(arrTags[i], result);
+    }
+    return result;
+  }
+
+  function searchInstancesByDate(type, date, list){
+    var result = [];
+    var index = 0;
+    for(var i=0; i<list.length; i++){
+      var actualDate = new Date(list[i][type]);
+      if(date <= actualDate){
+        result[index++] = list[i];
+      }
+    }
+    return result;
+  }
+
+  function searchInstancesByStatus(status, list){
+    var result = [];
+    var index = 0;
+    for(var i=0; i<list.length; i++){
+      if(list[i].status === status){
+        result[index++] = list[i];
+      }
+    }
+    return result;
+  }
+
   server.get('/api/entities/list/:type', function (req, res) {
     var type = req.params.type;
-    res.json(mockData.entitiesList[type]);
+    var name = req.query.nameseq === undefined ? "" : req.query.nameseq;
+    var tags = req.query.tagkeys === undefined ? "" : req.query.tagkeys;
+    var offset = parseInt(req.query.offset === undefined ? 0 : req.query.offset);
+    var numResults = parseInt(req.query.numResults === undefined ? 10 : req.query.numResults);
+
+    var paginated = {};
+    paginated.entity = [];
+
+    //if(type === "all"){
+    //if(type === "schedulable"){
+    if(type === "feed,process"){
+      paginated.entity = paginated.entity.concat(mockData.entitiesList.feed.entity,
+          mockData.entitiesList.process.entity);
+    }else{
+      paginated.entity = paginated.entity.concat(mockData.entitiesList[type].entity);
+    }
+
+    if(tags !== "" && name !== "" && name !== "*"){
+      //console.log("Search by name " + name + " & tags " + tags);
+      paginated.entity = searchByName(name, paginated.entity);
+      paginated.entity = searchByTags(tags, paginated.entity);
+      paginated.totalResults = paginated.entity.length;
+      paginated.entity = paginated.entity.slice(offset, offset+numResults);
+    }else if(tags !== ""){
+      //console.log("Search by tags " + tags);
+      paginated.entity = searchByTags(tags, paginated.entity);
+      paginated.totalResults = paginated.entity.length;
+      paginated.entity = paginated.entity.slice(offset, offset+numResults);
+    }else if(name !== ""){
+      //console.log("Search by name " + name);
+      paginated.entity = searchByName(name, paginated.entity);
+      paginated.totalResults = paginated.entity.length;
+      paginated.entity = paginated.entity.slice(offset, offset+numResults);
+    }else{
+      //console.log("Search all type:"+type);
+      paginated.totalResults = paginated.entity.length;
+      paginated.entity = paginated.entity.slice(offset, offset+numResults);
+    }
+
+    res.json(paginated);
   });
 
+
   server.get('/api/entities/definition/:type/:name', function(req, res) {
     var type = req.params.type.toUpperCase(),
       name = req.params.name;
     if (mockData.definitions[type][name]) {
+      //console.log(mockData.definitions[type][name]);
       res.send(200, mockData.definitions[type][name]);
     } else {
-      res.send(404, "not found");
+      res.send(404, '<?xml version="1.0" encoding="UTF-8" standalone="yes"?><result><status>FAILED</status><message>(' + type + ') '+ name +' not found.</message><requestId>586fffcd-10c1-4975-8dda-4b34a712f2f4</requestId></result>');
     }
   });
 
@@ -56,27 +156,34 @@
     var type = req.params.type.toUpperCase(),
       text = req.text,
       name,
+      tags,
       indexInArray,
       responseSuccessMessage,
       responseFailedMessage,
-      initialIndex = text.indexOf("name") + 6,
-      finalIndex = getFinalIndexOfName(),
+      initialIndexName = text.indexOf("name") + 6,
+      finalIndexName = getFinalIndexOfName(),
+      initialIndexTags = text.indexOf("<tags>")+6,
+      finalIndexTags = text.indexOf("</tags>"),
       i;
     function getFinalIndexOfName () {
-      for (i = initialIndex; i < text.length; i++) {
+      for (i = initialIndexName; i < text.length; i++) {
         if (text[i] === '"' || text[i] === "'") {
           return i;
         }
       }
     }
-    name = text.slice(initialIndex, finalIndex);
+    name = text.slice(initialIndexName, finalIndexName);
+    tags = text.slice(initialIndexTags, finalIndexTags);
+    tags = tags.split(",");
     responseSuccessMessage = {"status": "SUCCEEDED", "message": "default/successful (" + type + ") " + name + "\n\n","requestId":"default/546cbe05-2cb3-4e5c-8e7a-b1559d866c99\n"};
     responseFailedMessage = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?><result><status>FAILED</status><message>(' + type + ') '+ name +' already registered with configuration store. Can\'t be submitted again. Try removing before submitting.</message><requestId>586fffcd-10c1-4975-8dda-4b34a712f2f4</requestId></result>';
 
+    if(name.length < 3) { res.send(404, responseFailedMessage); return; }
+
     if (!mockData.definitions[type][name]) {
       mockData.definitions[type][name] = text;
       mockData.entitiesList[type.toLowerCase()].entity.push(
-        {"type": type, "name": name, "status": "SUBMITTED"}
+        {"type": type, "name": name, "status": "SUBMITTED", "tags":{"tag":tags}}
       );
       res.send(200, responseSuccessMessage);
     } else {
@@ -136,6 +243,282 @@
     res.json(200, responseMessage);
   });
 
+  function getInstanceList(req, res){
+    var type = req.params.type.toUpperCase(),
+        name = req.params.name,
+        start = req.query.start === undefined ? "" : req.query.start,
+        end = req.query.end === undefined ? "" : req.query.end,
+        status = req.query.filterBy === undefined ? "" : req.query.filterBy.substring(7),
+        numResults = parseInt(req.query.numResults === undefined ? 5 : req.query.numResults),
+        offset = parseInt(req.query.offset === undefined ? 0 : req.query.offset),
+        responseMessage = {
+          "instances": [],
+          "requestId": "falcon/default/13015853-8e40-4923-9d32-6d01053c31c6\n\n",
+          "message": "default\/STATUS\n",
+          "status": "SUCCEEDED"
+        };
+
+    var instances = [];
+    instances = instances.concat(mockData.instancesList[type]);
+
+    if(status !== ""){
+      instances = searchInstancesByStatus(status, instances);
+    }
+    //if(start !== ""){
+    //  start = new Date(start);
+    //  instances = searchInstancesByDate("startTime", start, instances);
+    //}
+    //if(end !== ""){
+    //  end = new Date(end);
+    //  instances = searchInstancesByDate("endTime", end, instances);
+    //}
+
+    responseMessage.instances = instances;
+
+    var paginated = responseMessage;
+    paginated.instances = paginated.instances.slice(offset, offset+numResults);
+    return paginated;
+  }
+
+  server.get('/api/instance/logs/:type/:name', function(req, res) {
+    res.json(getInstanceList(req, res));
+  });
+
+  server.get('/api/instance/list/:type/:name', function(req, res) {
+    res.json(getInstanceList(req, res));
+  });
+
+  server.post('/api/instance/suspend/:type/:name', function (req, res) {
+    var type = req.params.type.toUpperCase(),
+        name = req.params.name,
+        start = req.query.start,
+        end = req.query.end,
+        indexInArray = mockData.findByStartEnd(type, start, end),
+        responseMessage = {
+          "status": "SUCCEEDED",
+          "message": "default/" + name + "(" + type + ") start:" + start + " end: " + end + "suspended successfully\n",
+          "requestId": "default/546cbe05-2cb3-4e5c-8e7a-b1559d866c99\n"
+        };
+    mockData.instancesList[type].forEach(function (item) {
+      if (item.instance === start) {
+        item.status = "SUSPENDED";
+      }
+    });
+    //mockData.instancesList[type][indexInArray].status = "SUSPENDED";
+    res.json(200, responseMessage);
+  });
+
+  server.post('/api/instance/resume/:type/:name', function (req, res) {
+    var type = req.params.type.toUpperCase(),
+        name = req.params.name,
+        start = req.query.start,
+        end = req.query.end,
+        indexInArray = mockData.findByStartEnd(type, start, end),
+        responseMessage = {
+          "status": "SUCCEEDED",
+          "message": "default/" + name + "(" + type + ") start:" + start + " end: " + end + "resumed successfully\n",
+          "requestId": "default/546cbe05-2cb3-4e5c-8e7a-b1559d866c99\n"
+        };
+    mockData.instancesList[type].forEach(function (item) {
+      if (item.instance === start) {
+        item.status = "RUNNING";
+      }
+    });
+
+    //mockData.instancesList[type][indexInArray].status = "RUNNING";
+    res.json(200, responseMessage);
+  });
+
+  server.post('/api/instance/rerun/:type/:name', function (req, res) {
+    var type = req.params.type.toUpperCase(),
+        name = req.params.name,
+        start = req.query.start,
+        end = req.query.end,
+        indexInArray = mockData.findByStartEnd(type, start, end),
+        responseMessage = {
+          "status": "SUCCEEDED",
+          "message": "default/" + name + "(" + type + ") start:" + start + " end: " + end + "resumed successfully\n",
+          "requestId": "default/546cbe05-2cb3-4e5c-8e7a-b1559d866c99\n"
+        };
+
+    mockData.instancesList[type].forEach(function (item) {
+      if (item.instance === start) {
+        item.status = "RUNNING";
+      }
+    });//Its badly done makes no sense
+    //mockData.instancesList[type][indexInArray].status = "RUNNING";
+    res.json(200, responseMessage);
+  });
+
+  server.post('/api/instance/kill/:type/:name', function (req, res) {
+    var type = req.params.type.toUpperCase(),
+        name = req.params.name,
+        start = req.query.start,
+        end = req.query.end,
+        indexInArray = mockData.findByStartEnd(type, start, end),
+        responseMessage = {
+          "status": "SUCCEEDED",
+          "message": "default/" + name + "(" + type + ") start:" + start + " end: " + end + "killed successfully\n",
+          "requestId": "default/546cbe05-2cb3-4e5c-8e7a-b1559d866c99\n"
+        };
+    mockData.instancesList[type].forEach(function (item) {
+      if (item.instance === start) {
+        item.status = "KILLED";
+      }
+    });
+    //mockData.instancesList[type][indexInArray].status = "KILLED";
+    res.json(200, responseMessage);
+  });
+
+  server.get('/api/entities/dependencies/:type/:name', function (req, res) {
+    var type = req.params.type.toUpperCase(),
+        name = req.params.name;
+    res.json(200, mockData.entityDependencies);
+  });
+
+  server.get('/api/metadata/lineage/vertices', function (req, res) {
+    res.json(200, mockData.vertices);
+  });
+
+  server.get('/api/metadata/lineage/vertices/:id/:direction', function (req, res) {
+    var id = req.params.id,
+        direction = req.params.direction,
+        response = "";
+    if(id === "40108" && direction === "bothE"){
+      response = mockData.verticesDirection[0];
+    }else if(id === "40108" && direction === "both"){
+      response = mockData.verticesDirection[1];
+    }else if(id === "40012" && direction === "bothE"){
+      response = mockData.verticesDirection[2];
+    }else if(id === "40016" && direction === "bothE"){
+      response = mockData.verticesDirection[3];
+    }
+    res.json(200, response);
+  });
+
+  server.get('/api/metadata/lineage/properties/:id', function (req, res) {
+    var type = req.params.id;
+    res.json(200, mockData.verticesProps);
+  });
+
+
+  /*server.post('/api/entities/prepareAndSubmitRecipe', function (req, res) {
+    var file = req.text,
+      responseMessage = {
+        "requestId": "default\/d72a41f7-6420-487b-8199-62d66e492e35\n",
+        "message": "default\/Submit successful (recipe)\n",
+        "status": "SUCCEEDED"
+      };
+    console.log(file);
+    res.json(200, responseMessage);
+  });*/
+  /*
+   *
+   * CHART
+   *
+   */
+
+  server.get('/api/instance/summary/:type/:mode', function(req, res) {
+
+    var type = req.params.type,
+        mode = req.params.mode,
+        from = req.query.start,
+        fromDate = new Date(from.slice(0,4), (from.slice(5,7)-1), from.slice(8,10), 0, 0, 0),
+        response,
+        selectedArray;
+
+    if (mode === 'hourly') {
+      response = {"summary": [],"requestId":"23c44f3f-f528-4a94-bc0e-f95019729b42","message":"date not found","status":"FAILED"}
+      chartData[type + 'Hours'].forEach(function (item) {
+        item.summary.forEach(function (date) {
+          var currentDate = new Date(
+            date.startTime.slice(0,4),
+            (date.startTime.slice(5,7) - 1),
+            date.startTime.slice(8,10), 0, 0, 0
+          );
+          if (fromDate >= currentDate && fromDate <= currentDate) {
+            response = item;
+            return;
+          }
+
+        });
+      });
+      if (response.status === 'SUCCEEDED') {
+        res.send(200, response);
+      } else {
+        res.send(404, response);
+      }
+    } else if (mode === 'daily') {
+      response = {"summary": [],"requestId":"23c44f3f-f528-4a94-bc0e-f95019729b42","message":"date range not found","status":"FAILED"}
+
+      chartData[type + 'Days'].forEach(function (item) {
+        item.summary.forEach(function (date, index) {
+          var currentDate = new Date(
+            date.startTime.slice(0,4),
+            (date.startTime.slice(5,7) - 1),
+            date.startTime.slice(8,10), 0, 0, 0
+          );
+
+          if (fromDate >= currentDate && fromDate <= currentDate) {
+            if (index + 14 < item.summary.length) {
+              selectedArray = item.summary.slice(index, (index + 14));
+              response = {"summary": selectedArray,"requestId":"23c44f3f-f528-4a94-bc0e-f95019729b42","message":"default\\/STATUS\\n","status":"SUCCEEDED"};
+              return;
+            }
+          }
+
+        });
+      });
+
+      if (response.status === 'SUCCEEDED') {
+        res.send(200, response);
+      } else {
+        res.send(404, response);
+      }
+
+    } else {
+      console.log('error');
+    }
+
+  });
+
+  server.get('/api/entities/top/:entityType', function(req, res) {
+    var type = req.params.entityType,
+        start = req.query.start,
+        end = req.query.end,
+        from = new Date(start.slice(0,4), (start.slice(5,7)-1), start.slice(8,10), 0, 0, 0),
+        to = new Date(end.slice(0,4), (end.slice(5,7)-1), end.slice(8,10), 0, 0, 0),
+        objectToGive = Math.floor(Math.random() * 2),
+        response;
+
+    response = chartData.topEntities[objectToGive];
+
+    chartData.topEntities.forEach(function (item) {
+      //console.log(item);
+    });
+
+    if (response.status === 'SUCCEEDED') {
+      res.send(200, response);
+    } else {
+      res.send(404, response);
+    }
+
+  });
+
+  server.get('/api/admin/version', function(req, res) {
+    setTimeout(function(){
+      res.send(200, mockData.server);
+    }, 3000);
+  });
+
+  server.get('/api/admin/clearuser', function(req, res) {
+    res.send(200, "cleared");
+  });
+
+  server.get('/api/admin/getuser', function(req, res) {
+    res.send(200, "ambari-qa");
+  });
+
   server.listen(PORT, function () {
     console.log('Dev server listening on port ' + PORT);
   });

http://git-wip-us.apache.org/repos/asf/falcon/blob/86180d93/webapp/pom.xml
----------------------------------------------------------------------
diff --git a/webapp/pom.xml b/webapp/pom.xml
index 8043ac8..e63aa44 100644
--- a/webapp/pom.xml
+++ b/webapp/pom.xml
@@ -541,6 +541,9 @@
               <artifactId>apache-rat-plugin</artifactId>
               <configuration>
                 <excludes>
+		  <exclude>**/loginData.json</exclude>
+		  <exclude>**/src/main/webapp/css/*</exclude>
+		  <exclude>**/src/main/webapp/js/*</exclude>
 		  <exclude>*.txt</exclude>
 	          <exclude>**/*.txt</exclude>
 	          <exclude>.git/**</exclude>

http://git-wip-us.apache.org/repos/asf/falcon/blob/86180d93/webapp/src/main/webapp/index.html
----------------------------------------------------------------------
diff --git a/webapp/src/main/webapp/index.html b/webapp/src/main/webapp/index.html
index 3dc9c89..13fbe35 100644
--- a/webapp/src/main/webapp/index.html
+++ b/webapp/src/main/webapp/index.html
@@ -1,31 +1,44 @@
 <!--
-  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
+/**
+ * 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.
+ */
+-->
+<!DOCTYPE html>
+<html ng-app="app">
+  <head>
+    <title>Falcon Web UI</title>
+    <meta charset="utf-8">
+    <meta name="viewport" content="user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
+    <link rel="stylesheet" href="css/main.css"/>
+    <link rel="icon" type="image/x-icon"
+      href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAKL2lDQ1BJQ0MgUHJvZmlsZQAASMedlndUVNcWh8+9d3qhzTDSGXqTLjCA9C4gHQRRGGYGGMoAwwxNbIioQEQREQFFkKCAAaOhSKyIYiEoqGAPSBBQYjCKqKhkRtZKfHl57+Xl98e939pn73P32XuftS4AJE8fLi8FlgIgmSfgB3o401eFR9Cx/QAGeIABpgAwWempvkHuwUAkLzcXerrICfyL3gwBSPy+ZejpT6eD/0/SrFS+AADIX8TmbE46S8T5Ik7KFKSK7TMipsYkihlGiZkvSlDEcmKOW+Sln30W2VHM7GQeW8TinFPZyWwx94h4e4aQI2LER8QFGVxOpohvi1gzSZjMFfFbcWwyh5kOAIoktgs4rHgRm4iYxA8OdBHxcgBwpLgvOOYLFnCyBOJDuaSkZvO5cfECui5Lj25qbc2ge3IykzgCgaE/k5XI5LPpLinJqUxeNgCLZ/4sGXFt6aIiW5paW1oamhmZflGo/7r4NyXu7SK9CvjcM4jW94ftr/xS6gBgzIpqs+sPW8x+ADq2AiB3/w+b5iEAJEV9a7/xxXlo4nmJFwhSbYyNMzMzjbgclpG4oL/rfzr8DX3xPSPxdr+Xh+7KiWUKkwR0cd1YKUkpQj49PZXJ4tAN/zzE/zjwr/NYGsiJ5fA5PFFEqGjKuLw4Ubt5bK6Am8Kjc3n/qYn/MOxPWpxrkSj1nwA1yghI3aAC5Oc+gKIQARJ5UNz13/vmgw8F4psXpjqxOPefBf37rnCJ+JHOjfsc5xIYTGcJ+RmLa+JrCdCAACQBFcgDFaABdIEhMANWwBY4AjewAviBYBAO1gIWiAfJgA8yQS7YDApAEdgF9oJKUAPqQSNoASdABzgNLoDL4Dq4Ce6AB2AEjIPnYAa8AfMQBGEhMkSB5CFVSAsygMwgBmQ
 PuUE+UCAUDkVDcRAPEkK50BaoCCqFKqFaqBH6FjoFXYCuQgPQPWgUmoJ+hd7DCEyCqbAyrA0bwwzYCfaGg+E1cBycBufA+fBOuAKug4/B7fAF+Dp8Bx6Bn8OzCECICA1RQwwRBuKC+CERSCzCRzYghUg5Uoe0IF1IL3ILGUGmkXcoDIqCoqMMUbYoT1QIioVKQ21AFaMqUUdR7age1C3UKGoG9QlNRiuhDdA2aC/0KnQcOhNdgC5HN6Db0JfQd9Dj6DcYDIaG0cFYYTwx4ZgEzDpMMeYAphVzHjOAGcPMYrFYeawB1g7rh2ViBdgC7H7sMew57CB2HPsWR8Sp4sxw7rgIHA+XhyvHNeHO4gZxE7h5vBReC2+D98Oz8dn4Enw9vgt/Az+OnydIE3QIdoRgQgJhM6GC0EK4RHhIeEUkEtWJ1sQAIpe4iVhBPE68QhwlviPJkPRJLqRIkpC0k3SEdJ50j/SKTCZrkx3JEWQBeSe5kXyR/Jj8VoIiYSThJcGW2ChRJdEuMSjxQhIvqSXpJLlWMkeyXPKk5A3JaSm8lLaUixRTaoNUldQpqWGpWWmKtKm0n3SydLF0k/RV6UkZrIy2jJsMWyZf5rDMRZkxCkLRoLhQWJQtlHrKJco4FUPVoXpRE6hF1G+o/dQZWRnZZbKhslmyVbJnZEdoCE2b5kVLopXQTtCGaO+XKC9xWsJZsmNJy5LBJXNyinKOchy5QrlWuTty7+Xp8m7yifK75TvkHymgFPQVAhQyFQ4qXFKYVqQq2iqyFAsVTyjeV4KV9JUCldYpHVbqU5pVVlH2UE5V3q98UXlahabiqJKgUqZyVmVKlaJqr8pVLVM9p/qMLkt3oifRK+g99Bk1JTVPNaFarVq/2ry6jnqIep56q/ojDYIGQyNWo0yjW2NGU1XTVzNXs1nzvhZei6EVr7VPq1drTltHO0x7m3aH9qSOnI6XTo5Os85DXbKug26abp3ubT2MHkMvUe+A3k19
 WN9CP16/Sv+GAWxgacA1OGAwsBS91Hopb2nd0mFDkqGTYYZhs+GoEc3IxyjPqMPohbGmcYTxbuNe408mFiZJJvUmD0xlTFeY5pl2mf5qpm/GMqsyu21ONnc332jeaf5ymcEyzrKDy+5aUCx8LbZZdFt8tLSy5Fu2WE5ZaVpFW1VbDTOoDH9GMeOKNdra2Xqj9WnrdzaWNgKbEza/2BraJto22U4u11nOWV6/fMxO3Y5pV2s3Yk+3j7Y/ZD/ioObAdKhzeOKo4ch2bHCccNJzSnA65vTC2cSZ79zmPOdi47Le5bwr4urhWuja7ybjFuJW6fbYXd09zr3ZfcbDwmOdx3lPtKe3527PYS9lL5ZXo9fMCqsV61f0eJO8g7wrvZ/46Pvwfbp8Yd8Vvnt8H67UWslb2eEH/Lz89vg98tfxT/P/PgAT4B9QFfA00DQwN7A3iBIUFdQU9CbYObgk+EGIbogwpDtUMjQytDF0Lsw1rDRsZJXxqvWrrocrhHPDOyOwEaERDRGzq91W7109HmkRWRA5tEZnTdaaq2sV1iatPRMlGcWMOhmNjg6Lbor+wPRj1jFnY7xiqmNmWC6sfaznbEd2GXuKY8cp5UzE2sWWxk7G2cXtiZuKd4gvj5/munAruS8TPBNqEuYS/RKPJC4khSW1JuOSo5NP8WR4ibyeFJWUrJSBVIPUgtSRNJu0vWkzfG9+QzqUvia9U0AV/Uz1CXWFW4WjGfYZVRlvM0MzT2ZJZ/Gy+rL1s3dkT+S453y9DrWOta47Vy13c+7oeqf1tRugDTEbujdqbMzfOL7JY9PRzYTNiZt/yDPJK817vSVsS1e+cv6m/LGtHlubCyQK+AXD22y31WxHbedu799hvmP/jk+F7MJrRSZF5UUfilnF174y/ariq4WdsTv7SyxLDu7C7OLtGtrtsPtoqXRpTunYHt897WX0ssKy13uj9l4tX1Zes4+wT7hvpMKnonO/5v5d+z9UxlfeqXKua
 q1Wqt5RPXeAfWDwoOPBlhrlmqKa94e4h+7WetS212nXlR/GHM44/LQ+tL73a8bXjQ0KDUUNH4/wjowcDTza02jV2Nik1FTSDDcLm6eORR67+Y3rN50thi21rbTWouPguPD4s2+jvx064X2i+yTjZMt3Wt9Vt1HaCtuh9uz2mY74jpHO8M6BUytOdXfZdrV9b/T9kdNqp6vOyJ4pOUs4m3924VzOudnzqeenL8RdGOuO6n5wcdXF2z0BPf2XvC9duex++WKvU++5K3ZXTl+1uXrqGuNax3XL6+19Fn1tP1j80NZv2d9+w+pG503rm10DywfODjoMXrjleuvyba/b1++svDMwFDJ0dzhyeOQu++7kvaR7L+9n3J9/sOkh+mHhI6lH5Y+VHtf9qPdj64jlyJlR19G+J0FPHoyxxp7/lP7Th/H8p+Sn5ROqE42TZpOnp9ynbj5b/Wz8eerz+emCn6V/rn6h++K7Xxx/6ZtZNTP+kv9y4dfiV/Kvjrxe9rp71n/28ZvkN/NzhW/l3x59x3jX+z7s/cR85gfsh4qPeh+7Pnl/eriQvLDwG/eE8/s3BCkeAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3QoRBwcQl9gdLAAAFKZJREFUeNrtWnl8VuWVft57vy8LoCCrhCVBAgkJYO04rVinFbVacUck7IshZF9YYlgCWQgge8hGQhLZNwHHilW72epo1bZCHQgJSdg3WXREyPZ99z3P/HFvAlqt1VHAmXl/v/vL78td3vc87znPec65F/j/8X97qKs9Yb/EMpgmXf4uf/2XpWP4RdfcmvKcy0tt7V8Z9b8HgPCk1ajImwwA+EHaJpflaeiroAYrqH8D4AZAAPWEvGIp/Wrl8ugL9n1lqMib9P0FIDyhGBUFMc0gPKKglkAh5PLErCXhBWAAMJRSfQCA5CGh+cD+/MjaAQnF2Os843sFQHBCEW
 oL4hAev2oglHpdKXQgsQtQ60Xkrcqi2A+/MEwSVvc3FZMBToLIzH2Fcc9eeT40Kh9VpYnXNwC3PbMaexZPRmhc4UoFJCmo8g+r/2vyx7+bLZ/xkMQSVORH27E/vRQfLL0c9/1i84OhjBoB/mgQvyfUb6tWxb133XtASGyucWBVioRE5+8DGKQo4VWrU44CQFhMEfYXx33pvQOnlfcSU87sWxxVDwB9o3J7GoY5g4qdQfQA8CMFfABhelVp8svXHQD9IpepyvJp7Bu14ryieudAWcojABAanYeqkqS/u77PpFxVU5bCsISSO5Shtiuo7gAglF/6+7jHvr/s6YsAcP+snb6nLp5PJXC6qb6x0jBkFYiBVBhUUzrl3d4xK3GwOPnaAhA8cYmqXZPKPhOXfqqUsaL6uakZ/WJylbfJYO2aJATHF8Dfx99UUAagoAyFD5ZN8PaZtGKTUhgF4Ncg74RSN0AZZYryMKB+I+QAZaj2IAMB9WZ1acrPAKD35GUdDQt/JLmuds30JX3GL0LNurSvtWbj2zK+54hM1K5JZe8JS97WZEr1c1Mz+k7KNcQC3f72NLWFCdi7IlK37RPO1l0DVasuPe0NUGpaU10dGi5dXOxt8vzWU3epXryeNU0N9S96GurGWh7P0976unu9jY2fNNRfHAIAvZJXwrT4Sc1z0/oTbAyesGRczbo0hKeUXH0P6DV2IQ5vmIle4xZmQKmbDq+bkdJ70nKlRLP2uVQnHa66hSLLDMP4OZRqrZypRaS6ojA2pNvw7P4CvRCG8lFwbTm1NX1t0Jj5/Y9snL3vJwDedubqO34Z6j2XcGJLBvpELoMGcKh8GgInLr6pTbubdMWKqE+vSQj0Gr9oAEWWHNkw8xdB4xapT+vr+PGObIREr+jiaWj8jWm4BkKp9QDeh+J5EAYAAVVHGCqCWp+gwmsH16SuUerrLeuWCctwaO00hKeUJlTkRhWEJ5ehYuV3J54+MwJH5SgA6Dk
 y583PnwsYlXNj4Mh5ZT3GPtvlfzJHWFLZowPiV7X6quv6J5XeF5ZcNvaqe0DgqJwyuF2ZR9fNONFjxCIc32oTUZeR89SZLXMIAD3HLMSxjTO/fPGJJdiXH42whNIQAO0Mhc4EHleKTysoCBApovYY4AVqNijArDjR8SR2Df1MPTEgqfRPe/Oi7uwXX4zKwq9Wj65vTHqjcgDxmjB9A4Xy3vF1M04EjV2IIxsus3Dbzh3YOaXc3JsbqW/o2P6fY2Vl9SaMpwHcrICDJH5JSpBSqtBU8AMA5bJt7h90DkgsOaopiZUFsbtsCS03OOyunPriu8sCx7ZmaWqdcnxzeikAHNkw05Gy5QCA6pVxUErdFJa8+taK3Oi/rxOSr2Bsw8CAxELsy499xWLdCK2xQESqQb4sxOsU+pHynkXebllys1jSV4tMIaW1AfVSeHxxiVNDmLZv85+y4Rt7AAj0GDGvk3K5VrTEauJq7M+fjMqCSPRPKr8NSuYQXFt/ts2u5mt+GvMy3ix+GABQsTIa/aeUdoGg476VURV2tihCRUGcBeAVAK+ExxYNVwpTNPBQVWHcK+GJ5YDhMWi6zlXmReUCyA2LK5oNMCc8vsiPoisAAJZFXK0RllByJRH9y4Ck1bXhSaUtRt+aWvq5CrG818CU8mUDU8o/GTil/O+IITQ6z/4bWxgTGlfIfnH5A1vujS1ouW70oHSExxTZXhdXmBYaV8h+0QUDr2qDIyzOXtCt8Rvd4Yklvw1PLGZ4QtGPv5ily6YPSCk7OjCljANSyhmWVPrTFkkcs8KpI/IUAIROXnlfaEw+Q2Ly4myQV365/I4rtAGLyd8DAP1iCr57w0PiChAWV2AAQFhswcNh8UUMiy862QXpyq79SxUAdHmiSPVPWr1iQHIZBySXXXD+sn9C6UMAEJ5Self/pHJfx/hHr/AChkbnnQKAkJj8r8xWoTH5TgX59Yz/xiSoYBj7ixKkX1xBPoFdpLy1vzCu
 2xnkcEDyaqMiL4oDkkqf6dTDVUfAf+/KSYqU/wQEFF22ryDqV/1TyqYbUD7K4ICB09a0o2acXQGuTKUItGA+ABwoTvzKeK4qtvsDlasSvnsA+kzOV1VFcRISk/+yaEkg+V5lUcK/hcWvMgGAWrqFJ5acJtl6X97kVhV5k2PCE0umAbiLAs++/OioPtHFvorI3Js76XUI2tFjtQYlxJ5BxpNETWlS4XftyV8bgOCJy1GzOpF9o/O2Q/RDJPZUFSfe0S+2wNxfGKvD41dNAHDQUNZt+/InZ4SnlN4BzIQClioKFPUcAPD1NX9FSoFT+t4tYrWlsGfgzgZQGE6i+mpw2NdKg30il6OmfCr6TFoxg5Y1jAqXaspSfhgSm29UrkrQ4QnFawn+tKIgxgcA+ieXPbcvd9LT4fGr8kiCgLeiIHZx/8SSjgq8l8QCO2XL/XD75aKhHj6vFo8HBQDevO4AqCmfiuDIFb0heqECAGX+EAAOrEqU8Piilyly5/6iuPa2JC1bD2G5IxkSQYLgDtgVUKlBQlHvdX6HKk0fUi5ASwoIKKDqagDwT4fALZFLnfC0fg0t0IKi6rIpNXYaKtpC8qH9nZo6OHo8jtS3782PeiM8rvAZW5ESJJf2inxOgfyFkNhbEH/O9gDeoJTVSwmrIfIDUACF+usKgEPl09ErcukD1Lq3gDi4dnq8owOmKnCEAI8iawpD44o6kVKovd77bWmKp0GCJKqK4nf7+TUOVkI/Cg83P1tEINpzp1bqDyICEYEGjesGgL6Ry22P93gzKAICafbOF4SRWEbKu1VF8bsAwDSMPxCsrCxOOBEaW+JLMIQkQL7t7PYkglCgT4uqJiGaQ9jUWAT7Wigt6roBwOPxuABAUwYJiUPr0hYDAIV/IgmAUQAQGl/4AMhwaD5rG+uZQGf3IdzrGHuv/T+pAYCQ6BU3Otf0M0JCTrIFEN3+ugHgyIYZ3lvGLhohloamTWyhMflzSLQlcahyV
 dI++2GqhCDE/eFGO73hcWdDQWC3A0B722CEAMCBkimfOrve5WDmcBHyPzQIKnXndcUBQv2oFg1fl88aZ/ezQYGCJNvStfBHFAmkyP7KlVnOyw/eCggBgYDVfaILO5Bw2U4DT0sIiAZFI2RS7sOmy5VNLSDlAQAIGrfo+gCg0eMJBAzUrn/m7b6TV8YTdl636HrD1sYy1Yn1d+3ipqANya7NHgDijAErQEGgICQl8DIABIUUSvahdWm/g8KnlmXhlqeX3XZkfdp14gHaaq0MtcVZ8RyIBii7a1fHX3SYLAJCkNgDAPB6O0I0IFpBNKpXJ1WRdDvG2qh0f6u5tXAaoALltp+vPmG4TPccEvDW1yVf8xAIGrOgeZGBWnvXhSYUdqSwCwkA6iUACI7Ju8NWeoRX0fEI9bOW+OflEsohQJCCkCG773B8oLIZmMPvbBt/eOPMPCp4LJHxANB/3IprB8CRjbPsDRU57u/jf1wam4Y1WyWWtRUADOHwZqMOFiftdUwdiM8jQN3CiCCgLd3H8Z63QYFzLAcAH9M1SWsLgaPnx+5bP+Xah4CCaji8adZ+EQmlsndbUZ2yw0Pf1uLaLXEt/aiI5qNXXK4bMM/Yd1IIQine5zQy/+ikQlJ0u96RS+85ujl9gzJdf2toalzmNGHNawqA28dd7fTRw5UQimhobNvK6+x2SMu2trQM6a+EUAIoIQwvgsXvxjMQCoSECCAyAgBcbv/dDgCaJOi1ygEgoEPHu7SIf8DI7GnHNqfrawpA30EPjHUYW1MIUs4eXxmre8YW+UDYxTaILakNWgIp9FIEFMIQHVabP9GiyHmKkEJSxKdvVG7vA6VJnxCopohBEVLroF7jnx29Z1VCXWv/Vo81NDYu/VnyZr+uT2WpruMWXn0Auo6ch7dSBl0RDQSAOgDw0U0mKYbj/meviBmBgoICoQgRuc1pf/8VoBvKbl1rj9d5e6FSNWhoUGlbCa4HgGObZr/kdrlzK0
 5U/vn09gxePHfq6gNwesucK1xb6mxes4sVNjb5NGcAUrpfqe+dQ5EARIIAQENW2REgSoQgJBEAhsxM26XISxBqkKTWRtDo+dsA4Oz2rCkCnu0SkZF86dV89J645Np1hET4V5vx2VysKJKg2KF9GQD57AEMtic03wV4GSHRvr0nLnmgMExRGa65mmJqUmmCXm0Nv2XMosEA8PHOnPu04P7uoxcMPLgm9doBYJjmYSe1CQBoBWlJc3LF5z9XpkASEAkAgINrpp0neYg2CygSEMubZqfcmSsUYDnSUIEUj9X4OgC0ezzVPL8966Emj8fvmvYED65J3WJXgOhyV+4rhr/LbTsyBUJB36ilHZwQULSHnd4oCJ645EEAME3XaoiYjhcAwsG9Ji7pap9z3y1CJUKK0NBa0C0ia98nLy7RAcOy1LntmX/u/i0S4dcCoM+E5Y7TGyeF0v5sRY2P+LTytmQGIbyadzjK8QJJ8zIPEJZlTQCA2rXPLBKloEGlQWoS9Hp2AsDRTbPeNl2u1XYY2Oe8Wod3i8h66dSODHZ/Kgsn1s+8NgDUrJ0Kpy+QRxJNTY3GgVWxTQCPOHEN5bV+bCth9aGQhoBoPkgZwss88e+QlkqJFA4KHvdscEBElnliy5xoH9N8WyiqmUo92vtIj5HZy05sz0BARPa1CwEAaNWqzToK4QL/1U75rNBCaBKW19vP9hJzd3MrsKUlqKVN8LhFfQHAz+eGWAK2JiKVFhGPZf3+1LYM7bonDie2ZdzlNl1/0iLKbpNR6puapnYbkb3w1La56D4iW10TAIInLkXV6uQzSqm9mhxnKzmfV1rYXikbFK+3yE6NzRxACAlNnQsAB9YknYHCC6QoJ40qLbpn0JgFT1ivF+Hm4Vnq9POZP/Fxu3fYKVMsEWF9U+OMgIjMRSe2zmXn4XONqw5A7Zrpzga7xmuv924AGD44qARQsNO9BI5K+T3atr3pIgDPFRygAGrLsu65b+EuFwD
 c2KrdeCcjEk4qtSzvCwDw4fMZ7DEqx/xwW+ZTbh/fJ5Rh+AihhJC6Js8zHYfNWX/2+Wy5JiHgtMn2GC7j47DYfL9FEyNA4AMRwhKNdz76y5C9xfEXSbzfXCE4h0nSt7Zi73gAqChLvGSYrgwRKi2AUMHSgu4j570IANrj0Y/NegFnn8988dTOHMPX7d5EEUNE0NTkGdth6Jy/5T1fbQJAtxHZVw+AW8YvRMfHMmAarlENFy/dDABu01UkQlAAj6cpGgB83b4Z1FS27ndqQMKyvN6lzc86vjk92zTMKmkOBZJer/VY4KicYad2ZGPv8SqETFyM4KcyeXZH9phuXbv2cLldiw3TRL2n6db0zWutmyMyHz+5da4t278mQX5jIgmeMB+1a2cDAHqMnIfjW+agy/AMj9babRjGmTPPZ92slEJARNZ5EelwxUwEoHzcPncf2zT7DQCImPmC683aD7xaRAMw7ZJBoWfnTp3+XJh4Pmj0AhzZNAsBI7JxyjEUAALHLHjs/KefDnKbZprL5drtY5hRp7bN3X1VAPii0W1E1rgmj2edUgpul6vfqW2ZVb1Gzp9Q521aA6XYMh8Jl2mePrUtI6BvxCJUb0tDzzGLejQ21h0TinY8UyllnD+3I7vT5+cJGPcs2p47h8pXl322aIvINk5vmyvXBoB7ooDXS9HxyfTzlmV1aOXn/+KpbRlPAEDA8IyTWusA2B9A0gFB+fr6P3hs8+zXuk8owIm1Ceg1dknnS/WfntEiopw60mW69p/ZkRXe6cnZ5rmd87/1nsC39/rpdfs7oNat2jwMw0C9xzO45Q2sr9/DohQ0SUf9KQ3Ao735AKAazwMADm9IPduq9Y3dTdNQIqIEpMfyhHUaNvcvzcb3HLvoOgUAQHDCEhzdMONdH5dPIUXadonI/HGHYXPVsQ0z97hN12KSqqUjRNLr8QYHjp4/5PjWTHQbvQgPvkocXZ968v0F2aZhut4nqQjAo63bOwxN
 ryGJYxvS0H3kvOsTgNqCVASNWajObs9MMAzzhGVZ6z7akc02Q9JwaltGmmkYv7pCHiuCqG9q3AAATY0X1asP2hEZlprGj3bOu93fzy8FUKAmvJYV3H5oel1o5NLeJ7bMgfnAt9Mo/U5eQHYYNtf8aEe2bvv4LHZse0PIwXUzq/1/MRUNry1Hp2Fzq72Wt88VDUTl7+uXdnpbxuIWkhuRA69uwLnt83Hv9DWt/3b4UL6lrYlaCwzDgK+v7/Rzz2cuu24BaB7dxy1sU9/QMPrj7dklPUcvwLFNdou907C57zdZ3h8299YMpVRQ1+7tKw7VXPC8tryFxbuOexan189oeV67oekrSUnyWF64Xe6Pb2rdaujRjelvtGShiGyc3Db3+gCg66gcnN6cbi/8ydn4ZOf8z3nJnDLLa0UC0CRNt8t14KMXckKDxy5RtRtS/+FXYT3HLPjRhbq6DK31YB+321+0TLvBz/fl41vnVgNAj1ELcXzzzGvvAV86Bo0D3lmPbiPnjbtUX79OnE5SK1//hWd2ZM76h1pjVA5OOsACwI1D026EmP3a+rd60ivicbvcG49vmlmF6310Gz1fAcAdc9b6tB+afqD1o2ls/cgzDBiVfR8AdInI+spn9ByZY7Qflu5y/XzKZ16a9Bi9EN+b0fmpDBMAbo7IfKTtE7MutHl0BruNyhnwvTPkm46eoxd85neX4ZlPdBw294OQyLw2V2P+/waCldfgs3UggwAAAABJRU5ErkJggg=="/>
+  </head>
+  <body ng-cloak ng-controller="RootCtrl" id="body">
 
-      http://www.apache.org/licenses/LICENSE-2.0
+    <section class="container-fluid">
+      <header class="row" nav-header id="mainHeader"></header>
+    </section>
 
-  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.
-  -->
-<!DOCTYPE HTML>
-<html lang="en">
-<head>
-    <meta charset="UTF-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20130821" />
-    <meta http-equiv="Content-Language" content="en" />
-    <title>Apache Falcon - Data management and processing platform</title>
-</head>
-<body class="topBarEnabled">
-<h1> Apache Falcon</h1>
-More information at: <a href="http://falcon.apache.org/index.html"  title="About">Project Website</a>
-</body>
+    <section class="container-fluid">
+      <div class="row mainUIView" ui-view id="mainUIView"></div>
+    </section>
+
+    <script src="js/vendor.min.js"></script>
+    <script src="js/main.min.js"></script>
+
+  </body>
 </html>


Mime
View raw message