You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@falcon.apache.org by pe...@apache.org on 2016/08/22 04:48:09 UTC

[16/16] falcon git commit: FALCON-2118 Proposal for new UI changes

FALCON-2118 Proposal for new UI changes

changes as described in FALCON-2118

Author: Venkat Ranganathan <ve...@hortonworks.com>

Reviewers: Peeyush <pe...@apache.org>

Closes #268 from vrangan/FALCON-2118


Project: http://git-wip-us.apache.org/repos/asf/falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/falcon/commit/76dc2e18
Tree: http://git-wip-us.apache.org/repos/asf/falcon/tree/76dc2e18
Diff: http://git-wip-us.apache.org/repos/asf/falcon/diff/76dc2e18

Branch: refs/heads/0.10-refactored-ui
Commit: 76dc2e18322b64cea36dc64bbeae5c183c97e7fc
Parents: 01a303e
Author: Venkat Ranganathan <ve...@hortonworks.com>
Authored: Mon Aug 22 10:16:12 2016 +0530
Committer: peeyush b <pb...@hortonworks.com>
Committed: Mon Aug 22 10:16:12 2016 +0530

----------------------------------------------------------------------
 falcon-ambari-view/Gruntfile.js                 |   55 +
 falcon-ambari-view/README                       |   53 +
 falcon-ambari-view/package.json                 |   38 +
 falcon-ambari-view/pom.xml                      |  142 ++
 .../src/build/findbugs-exclude.xml              |   31 +
 .../ambari/view/FalconProxyImpersonator.java    |  346 +++++
 .../src/main/lib/ambari-views-2.4.0.0.1019.jar  |  Bin 0 -> 27130 bytes
 .../src/main/resources/WEB-INF/web.xml          |   22 +
 falcon-ambari-view/src/main/resources/view.xml  |   39 +
 .../view/FalconProxyImpersonatorTest.java       |   59 +
 falcon-ui/Gruntfile.js                          |   19 +-
 falcon-ui/Installation-steps.txt                |    6 +-
 falcon-ui/app/css/bootstrap/less/dropdowns.less |    8 +-
 falcon-ui/app/css/bootstrap/less/forms.less     |    3 +-
 .../app/css/bootstrap/less/pagination.less      |    2 +-
 .../bootstrap/less/responsive-utilities.less    |    2 +-
 falcon-ui/app/css/bootstrap/less/tables.less    |   10 +-
 falcon-ui/app/css/bootstrap/less/variables.less |    4 +-
 falcon-ui/app/css/default-theme.less            |   20 +
 falcon-ui/app/css/fonts/entypo.less             |    6 +-
 falcon-ui/app/css/gray-theme.less               |   20 +
 .../app/css/img/32x32_create-entity-hover.png   |  Bin 0 -> 1342 bytes
 falcon-ui/app/css/img/32x32_create-entity.png   |  Bin 0 -> 1337 bytes
 falcon-ui/app/css/img/32x32_upload.png          |  Bin 0 -> 1425 bytes
 falcon-ui/app/css/img/cloud.png                 |  Bin 0 -> 2816 bytes
 falcon-ui/app/css/img/falcon-logo.jpg           |  Bin 0 -> 13903 bytes
 falcon-ui/app/css/img/falcon.png                |  Bin 4742 -> 0 bytes
 falcon-ui/app/css/img/feed.png                  |  Bin 0 -> 4135 bytes
 .../app/css/img/ui-bg_glass_55_fbf9ee_1x400.png |  Bin 0 -> 335 bytes
 .../app/css/img/ui-bg_glass_65_ffffff_1x400.png |  Bin 0 -> 207 bytes
 .../app/css/img/ui-bg_glass_75_dadada_1x400.png |  Bin 0 -> 262 bytes
 .../app/css/img/ui-bg_glass_75_e6e6e6_1x400.png |  Bin 0 -> 262 bytes
 .../app/css/img/ui-bg_glass_95_fef1ec_1x400.png |  Bin 0 -> 332 bytes
 .../ui-bg_highlight-soft_75_cccccc_1x100.png    |  Bin 0 -> 280 bytes
 .../app/css/img/ui-icons_222222_256x240.png     |  Bin 0 -> 6922 bytes
 .../app/css/img/ui-icons_2e83ff_256x240.png     |  Bin 0 -> 4549 bytes
 .../app/css/img/ui-icons_454545_256x240.png     |  Bin 0 -> 6992 bytes
 .../app/css/img/ui-icons_888888_256x240.png     |  Bin 0 -> 6999 bytes
 .../app/css/img/ui-icons_cd0a0a_256x240.png     |  Bin 0 -> 4549 bytes
 falcon-ui/app/css/img/user.svg                  |   16 -
 falcon-ui/app/css/jquery-ui.css                 | 1225 ++++++++++++++++++
 falcon-ui/app/css/main.less                     |    6 +
 falcon-ui/app/css/styles/autocomplete-tags.less |   20 +-
 falcon-ui/app/css/styles/common.less            |  399 +++---
 falcon-ui/app/css/styles/dataset-form.less      |  138 +-
 falcon-ui/app/css/styles/datasource-form.less   |   90 ++
 falcon-ui/app/css/styles/default.less           |   72 +
 falcon-ui/app/css/styles/entities-list.less     |   99 +-
 falcon-ui/app/css/styles/feed-form.less         |   40 +
 falcon-ui/app/css/styles/form-pages.less        |  515 +++++++-
 falcon-ui/app/css/styles/gray.less              |   65 +
 falcon-ui/app/css/styles/lineage.less           |   50 +
 falcon-ui/app/css/styles/nav-header.less        |  216 ++-
 .../app/css/styles/ng-tags-input.bootstrap.less |  167 +++
 falcon-ui/app/css/styles/ng-tags-input.less     |  134 ++
 falcon-ui/app/css/styles/popover.less           |    6 +-
 falcon-ui/app/css/styles/progress-bar.less      |   42 +-
 falcon-ui/app/css/styles/server-messages.less   |   13 +
 falcon-ui/app/css/styles/snapshot-form.less     |   52 +
 falcon-ui/app/css/styles/white.less             |   65 +
 falcon-ui/app/css/variables.less                |   93 +-
 falcon-ui/app/css/white-theme.less              |   20 +
 falcon-ui/app/html/authenticating.html          |    2 +-
 .../html/cluster/clusterFormGeneralStepTpl.html |  314 +++--
 .../html/cluster/clusterFormSummaryStepTpl.html |   63 +-
 falcon-ui/app/html/cluster/clusterFormTpl.html  |  115 +-
 falcon-ui/app/html/cluster/clusterSummary.html  |   77 ++
 .../html/dataset/datasetFormGeneralStepTpl.html | 1200 +++++++++--------
 .../html/dataset/datasetFormSummaryStepTpl.html |  235 ++--
 falcon-ui/app/html/dataset/datasetFormTpl.html  |   50 +-
 falcon-ui/app/html/dataset/datasetSummary.html  |  209 +++
 .../datasourceFormAdvancedStepTpl.html          |   72 +
 .../datasourceFormGeneralStepTpl.html           |  355 +++++
 .../datasourceFormSummaryStepTpl.html           |  113 ++
 .../app/html/datasource/datasourceFormTpl.html  |   96 ++
 .../app/html/datasource/datasourceSummary.html  |   95 ++
 .../app/html/directives/aclPermissions.html     |   45 +
 .../html/directives/dependenciesGraphDv.html    |    5 +-
 .../app/html/directives/entitiesListDv.html     |    8 +-
 .../html/directives/entitiesSearchListDv.html   |   44 +-
 .../html/directives/feedFormHdfsStorage.html    |  139 ++
 .../html/directives/feedFormHiveStorage.html    |  132 ++
 .../app/html/directives/instancesListDv.html    |   52 +-
 .../app/html/directives/lineageGraphDv.html     |    8 +-
 falcon-ui/app/html/directives/navDv.html        |  272 +++-
 .../app/html/directives/serverMessagesDv.html   |    2 +-
 .../app/html/directives/timeZoneSelectDv.html   |   15 +-
 falcon-ui/app/html/entityDetailsTpl.html        |   87 +-
 falcon-ui/app/html/entitySummary.html           |    8 +-
 falcon-ui/app/html/error.html                   |   37 +
 .../app/html/feed/feedFormAdvancedStepTpl.html  |  166 +++
 .../html/feed/feedFormClusterDetailsTpl.html    |  151 +++
 .../html/feed/feedFormClusterPartitionsTpl.html |   44 +
 .../app/html/feed/feedFormClustersStepTpl.html  |  256 ++--
 .../app/html/feed/feedFormDataSourceTpl.html    |  148 +++
 .../app/html/feed/feedFormGeneralStepTpl.html   |  523 ++++++--
 .../app/html/feed/feedFormLocationStepTpl.html  |   50 +-
 .../html/feed/feedFormPropertiesStepTpl.html    |  243 ++--
 .../app/html/feed/feedFormSummaryStepTpl.html   |  231 ++--
 falcon-ui/app/html/feed/feedFormTpl.html        |  123 +-
 falcon-ui/app/html/feed/feedSummary.html        |  119 +-
 falcon-ui/app/html/formsTpl.html                |    2 +-
 falcon-ui/app/html/instanceDetails.html         |   26 +-
 falcon-ui/app/html/mainTpl.html                 |  161 ++-
 .../process/processFormAdvancedStepTpl.html     |  183 +++
 .../process/processFormClustersStepTpl.html     |  117 +-
 .../html/process/processFormGeneralStepTpl.html |  600 +++++++--
 .../processFormInputsAndOutputsStepTpl.html     |   87 +-
 .../process/processFormPropertiesStepTpl.html   |   87 +-
 .../html/process/processFormSummaryStepTpl.html |  263 ++--
 falcon-ui/app/html/process/processFormTpl.html  |  123 +-
 falcon-ui/app/html/process/processSummary.html  |   43 +-
 .../snapshot/snapshotFormAdvancedStepTpl.html   |  194 +++
 .../snapshot/snapshotFormGeneralStepTpl.html    |  505 ++++++++
 .../snapshot/snapshotFormSummaryStepTpl.html    |  157 +++
 .../app/html/snapshot/snapshotFormTpl.html      |   50 +
 .../app/html/snapshot/snapshotSummary.html      |  133 ++
 falcon-ui/app/index.html                        |   10 +-
 falcon-ui/app/js/app.js                         |  269 +++-
 .../js/controllers/cluster/cluster-module.js    |  265 +++-
 falcon-ui/app/js/controllers/controllers.js     |    5 +-
 .../app/js/controllers/dashboard-controller.js  |  164 +--
 .../controllers/dataset/dataset-controller.js   |  530 ++------
 .../datasource-advanced-controller.js           |   34 +
 ...datasource-general-information-controller.js |  141 ++
 .../controllers/datasource/datasource-module.js |   33 +
 .../datasource/datasource-root-ctrl.js          |  249 ++++
 .../datasource/datasource-summary-controller.js |   39 +
 .../app/js/controllers/entity/entity-details.js |  120 +-
 .../app/js/controllers/entity/entity-module.js  |   22 +-
 .../js/controllers/entity/instance-details.js   |    7 +-
 .../feed/feed-advanced-controller.js            |   34 +
 .../feed/feed-clusters-controller.js            |  135 +-
 .../feed/feed-general-information-controller.js |  127 +-
 .../feed/feed-location-controller.js            |   13 -
 .../app/js/controllers/feed/feed-root-ctrl.js   |  224 +++-
 .../controllers/feed/feed-summary-controller.js |   12 +-
 .../app/js/controllers/header-controller.js     |   47 +-
 .../process/process-advanced-ctrl.js            |   34 +
 .../process/process-clusters-ctrl.js            |    6 +-
 .../process/process-general-information-ctrl.js |  141 +-
 .../js/controllers/process/process-root-ctrl.js |  120 +-
 .../controllers/process/process-summary-ctrl.js |   39 -
 falcon-ui/app/js/controllers/root-controller.js |  157 ++-
 .../controllers/snapshot/snapshot-controller.js |  262 ++++
 falcon-ui/app/js/controllers/themeController.js |   31 +
 falcon-ui/app/js/directives/acl-permissions.js  |  103 ++
 falcon-ui/app/js/directives/chart.js            |    4 +-
 falcon-ui/app/js/directives/check-name.js       |  184 ++-
 .../app/js/directives/dependencies-graph.js     |  288 ++--
 falcon-ui/app/js/directives/directives.js       |  285 +++-
 .../app/js/directives/entities-search-list.js   |   86 +-
 .../js/directives/feed-cluster-partitions.js    |  119 ++
 falcon-ui/app/js/directives/instances-list.js   |  510 +++-----
 .../app/js/directives/interface-endpoint.js     |   85 ++
 falcon-ui/app/js/directives/lineage-graph.js    |    4 +-
 falcon-ui/app/js/directives/ng-tags-input.js    |    4 +-
 falcon-ui/app/js/directives/server-messages.js  |   45 +-
 falcon-ui/app/js/directives/tooltip.js          |   24 +-
 .../app/js/directives/validation-message.js     |   45 +-
 falcon-ui/app/js/lib/angular-ngStorage.js       |  161 +++
 falcon-ui/app/js/lib/focusIf.min.js             |    1 +
 falcon-ui/app/js/lib/jquery-ui.min.js           |   13 +
 falcon-ui/app/js/lib/jquery.mask.min.js         |   12 +
 falcon-ui/app/js/lib/popover.js                 |   20 +-
 falcon-ui/app/js/lib/xml2json.min.js            | 1095 ++++++++--------
 falcon-ui/app/js/services/common/date-helper.js |  266 +++-
 falcon-ui/app/js/services/common/falcon-api.js  |   75 +-
 .../app/js/services/common/route-helper.js      |   46 +
 falcon-ui/app/js/services/common/server-api.js  |   49 +-
 .../app/js/services/common/tooltip-messages.js  |  117 ++
 .../js/services/common/validation-service.js    |  120 +-
 .../js/services/common/xml-to-json-service.js   |    9 +
 .../app/js/services/entity/entity-details.js    |   64 +
 .../app/js/services/entity/entity-factory.js    |  272 +++-
 .../app/js/services/entity/entity-model.js      |  135 +-
 .../app/js/services/entity/entity-scheduler.js  |  122 ++
 .../app/js/services/entity/entity-serializer.js |  555 +++++++-
 .../services/extension/extension-serializer.js  |  415 ++++++
 falcon-ui/app/js/services/services.js           |   16 +-
 .../test/controllers/HeaderControllerSpec.js    |   10 +-
 .../controllers/cluster/cluster-moduleSpec.js   |   42 +-
 .../FeedGeneralInformationControllerSpec.js     |    1 +
 .../feed/FeedLocationControllerSpec.js          |    3 +-
 .../test/controllers/feed/FeedRootCtrlSpec.js   |   32 +-
 .../feed/FeedSummaryControllerSpec.js           |    4 +-
 .../process/ProcessClustersCtrlSpec.js          |    8 +-
 .../ProcessGeneralInformationCtrlSpec.js        |   39 +-
 .../controllers/process/ProcessRootCtrlSpec.js  |   81 +-
 .../process/ProcessSummaryCtrlSpec.js           |   65 +-
 falcon-ui/app/test/e2e/protractor.js            |   20 +-
 .../app/test/services/EntitySerializerSpec.js   |  138 +-
 .../app/test/services/ValdationServiceSpec.js   |    2 +-
 falcon-ui/express-data/mockData.js              |   52 +-
 falcon-ui/karma.conf.js                         |   18 -
 falcon-ui/pom.xml                               |   29 +-
 falcon-ui/server.js                             |   28 +-
 pom.xml                                         |    1 +
 198 files changed, 17112 insertions(+), 5143 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ambari-view/Gruntfile.js
----------------------------------------------------------------------
diff --git a/falcon-ambari-view/Gruntfile.js b/falcon-ambari-view/Gruntfile.js
new file mode 100644
index 0000000..06ae4ea
--- /dev/null
+++ b/falcon-ambari-view/Gruntfile.js
@@ -0,0 +1,55 @@
+/**
+ * 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.
+ */
+(function () {
+  "use strict";
+
+  module.exports = function (grunt) {
+
+    grunt.initConfig({
+
+      scp: {
+        options: {
+          host: 'sandbox.hortonworks.com',
+          username: 'root',
+          password: 'hadoop'
+        },
+
+        sandbox: {
+          files: [
+            {
+              cwd: 'target',
+              src: '*.jar',
+              filter: 'isFile',
+              // path on the server
+              dest: '/var/lib/ambari-server/resources/views'
+            }
+          ]
+        }
+      }
+
+    });
+
+    grunt.registerTask('deploy', [
+      'scp'
+    ]);
+
+    grunt.loadNpmTasks('grunt-scp');
+
+  };
+
+}());
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ambari-view/README
----------------------------------------------------------------------
diff --git a/falcon-ambari-view/README b/falcon-ambari-view/README
new file mode 100644
index 0000000..07cb13b
--- /dev/null
+++ b/falcon-ambari-view/README
@@ -0,0 +1,53 @@
+/**
+ * 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.
+ */
+
+Falcon-Ambari-UI
+=========
+Web UI inside ambari for the Falcon-UI
+
+To clone the repository
+===============================
+- git clone https://github.com/hortonworks/falcon.git
+- git checkout dal
+
+
+Before starting
+===============
+NodeJs , npm, Grunt must be installed in the local pc.
+
+- From git root cd to /falcon-ui
+- npm install (this will install all the app related node modules)
+
+
+To deploy to the sandbox (v2-2)
+===============================
+- Deploy ambari view in order to generate falcon-ambari-view-0.7-incubating-SNAPSHOT.jar:
+ 1. cd falcon-ui
+ 2. grunt ambariview
+ 3. cd ..
+ 4. cd falcon-ambari-view
+ 5. mvn clean install
+ 6. falcon-ambari-view-0.7-incubating-SNAPSHOT.jar will be generated inside the taget directory
+
+- Upload falcon-ambari-view-0.7-incubating-SNAPSHOT.jar to /var/lib/ambari-server/resources/views/
+- Restart ambari server
+- Go to ambari admin -> Manage Ambari -> Falcon Ambari View -> Create Instance
+- Enter the API URL in the falcon.service.uri property
+
+Important!
+Security/Kerberos must be enabled, otherwise the services will ask for user.name param

http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ambari-view/package.json
----------------------------------------------------------------------
diff --git a/falcon-ambari-view/package.json b/falcon-ambari-view/package.json
new file mode 100644
index 0000000..1aa99d4
--- /dev/null
+++ b/falcon-ambari-view/package.json
@@ -0,0 +1,38 @@
+/*
+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.
+*/
+
+{
+  "name": "falcon-ambari-view",
+  "version": "1.0.0",
+  "description": "UI to communicate with the ambari views",
+  "author": "Apache Foundation",
+  "license": "ISC",
+  "devDependencies": {
+    "grunt": "~0.4.4",
+    "grunt-concurrent": "^1.0.0",
+    "grunt-contrib-clean": "^0.6.0",
+    "grunt-contrib-concat": "^0.5.0",
+    "grunt-contrib-copy": "~0.5.0",
+    "grunt-contrib-csslint": "~0.2.0",
+    "grunt-contrib-jshint": "~0.10.0",
+    "grunt-contrib-less": "~0.11.0",
+    "grunt-contrib-uglify": "~0.4.0",
+    "grunt-contrib-watch": "~0.6.1",
+    "grunt-scp": "^0.1.7"
+  }
+}

http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ambari-view/pom.xml
----------------------------------------------------------------------
diff --git a/falcon-ambari-view/pom.xml b/falcon-ambari-view/pom.xml
new file mode 100644
index 0000000..00176b5
--- /dev/null
+++ b/falcon-ambari-view/pom.xml
@@ -0,0 +1,142 @@
+<?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. -->
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<parent>
+		<groupId>org.apache.falcon</groupId>
+		<artifactId>falcon-main</artifactId>
+		<version>0.10</version>
+	</parent>
+
+	<artifactId>falcon-ambari-view</artifactId>
+	<packaging>jar</packaging>
+	<name>Apache Falcon Ambari Views Integration</name>
+	<description>Apache Falcon UI Application</description>
+
+
+
+	<dependencies>
+		<dependency>
+			<groupId>javax.servlet</groupId>
+			<artifactId>servlet-api</artifactId>
+			<version>2.5</version>
+			<scope>provided</scope>
+		</dependency>
+		<dependency>
+			<groupId>com.sun.jersey</groupId>
+			<artifactId>jersey-client</artifactId>
+			<version>${jersey.version}</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+            <groupId>com.sun.jersey</groupId>
+            <artifactId>jersey-json</artifactId>
+        </dependency>
+		<dependency>
+			<groupId>javax.inject</groupId>
+			<artifactId>javax.inject</artifactId>
+			<version>1</version>
+		</dependency>
+
+		<!-- Unit testing ====================================================== -->
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>4.11</version>
+			<scope>test</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>org.mockito</groupId>
+			<artifactId>mockito-core</artifactId>
+			<version>1.9.0</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.slf4j</groupId>
+			<artifactId>slf4j-log4j12</artifactId>
+		</dependency>
+		<dependency>
+		    <groupId>com.google.inject</groupId>
+		    <artifactId>guice</artifactId>
+		    <version>4.1.0</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.ambari.contrib.views</groupId>
+			<artifactId>ambari-views</artifactId>
+			<version>2.4.0.0.1019</version>
+			<scope>system</scope>
+			<systemPath>${basedir}/src/main/lib/ambari-views-2.4.0.0.1019.jar</systemPath>
+		</dependency>
+	</dependencies>
+
+	<build>
+
+		<plugins>
+
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-surefire-plugin</artifactId>
+				<version>2.12</version>
+			</plugin>
+
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <configuration>
+                    <excludes>
+                        <exclude>package.json</exclude>
+						<exclude>src/main/resources/ui/css/**</exclude>
+						<exclude>src/main/resources/ui/js/**</exclude>
+						<exclude>src/main/resources/ui/config/**</exclude>
+                    </excludes>
+                </configuration>
+            </plugin>
+			<plugin>
+				<artifactId>maven-dependency-plugin</artifactId>
+				<executions>
+					<execution>
+						<phase>generate-resources</phase>
+						<goals>
+							<goal>copy-dependencies</goal>
+						</goals>
+						<configuration>
+							<outputDirectory>${project.build.directory}/lib</outputDirectory>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+
+		</plugins>
+
+		<resources>
+			<resource>
+				<directory>src/main/resources/ui/</directory>
+				<filtering>false</filtering>
+			</resource>
+			<resource>
+				<directory>src/main/resources/</directory>
+				<filtering>false</filtering>
+				<includes>
+					<include>view.xml</include>
+				</includes>
+			</resource>
+			<resource>
+				<targetPath>WEB-INF/lib</targetPath>
+				<filtering>false</filtering>
+				<directory>target/lib</directory>
+			</resource>
+		</resources>
+	</build>
+
+</project>

http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ambari-view/src/build/findbugs-exclude.xml
----------------------------------------------------------------------
diff --git a/falcon-ambari-view/src/build/findbugs-exclude.xml b/falcon-ambari-view/src/build/findbugs-exclude.xml
new file mode 100644
index 0000000..d548c0e
--- /dev/null
+++ b/falcon-ambari-view/src/build/findbugs-exclude.xml
@@ -0,0 +1,31 @@
+<?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.
+ -->
+<FindBugsFilter>
+
+    <!--
+    Disable encoding as this might give an impression that Falcon code base is
+    "Internationalization" ready, but we haven't done anything consciously to guarantee that.
+    -->
+    <Match>
+        <Bug pattern="DM_DEFAULT_ENCODING" />
+    </Match>
+
+    <Match>
+        <Bug pattern="RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT" />
+    </Match>
+</FindBugsFilter>

http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ambari-view/src/main/java/org/apache/falcon/ambari/view/FalconProxyImpersonator.java
----------------------------------------------------------------------
diff --git a/falcon-ambari-view/src/main/java/org/apache/falcon/ambari/view/FalconProxyImpersonator.java b/falcon-ambari-view/src/main/java/org/apache/falcon/ambari/view/FalconProxyImpersonator.java
new file mode 100644
index 0000000..15b0997
--- /dev/null
+++ b/falcon-ambari-view/src/main/java/org/apache/falcon/ambari/view/FalconProxyImpersonator.java
@@ -0,0 +1,346 @@
+/**
+ * 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.falcon.ambari.view;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
+import com.google.inject.Singleton;
+
+import javax.inject.Inject;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.MultivaluedMap;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriInfo;
+
+import org.apache.ambari.view.URLStreamProvider;
+import org.apache.ambari.view.ViewContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * This is a class used to bridge the communication between the falcon-ui and
+ * the falcon API executing inside ambari.
+ */
+
+@Singleton
+public class FalconProxyImpersonator {
+    private static final Logger LOG = LoggerFactory
+            .getLogger(FalconProxyImpersonator.class);
+    private static final String GET_METHOD = "GET";
+    private static final String POST_METHOD = "POST";
+    private static final String DELETE_METHOD = "DELETE";
+
+    private static final String FALCON_ERROR = "<result><status>FAILED</status>";
+    private static final String[] FORCE_JSON_RESPONSE = { "/entities/list/", "admin/version", };
+
+    public static final String VIEW_KERBEROS_PRINCIPAL = "view.kerberos.principal";
+    public static final String VIEW_KERBEROS_PRINCIPAL_KEYTAB = "view.kerberos.principal.keytab";
+
+    private ViewContext viewContext;
+
+    /**
+     * Constructor to get the default viewcontext.
+     * @param viewContext
+     */
+    @Inject
+    public FalconProxyImpersonator(ViewContext viewContext) {
+        this.viewContext = viewContext;
+    }
+
+    /**
+     * Method to set the ambari user.
+     * @param headers
+     * @param ui
+     * @return
+     */
+    @GET
+    @Path("/")
+    public Response setUser(@Context HttpHeaders headers, @Context UriInfo ui) {
+        try {
+            String userName = viewContext.getUsername();
+            return Response.ok(userName).type(getResponseType(userName))
+                    .build();
+        } catch (Exception ex) {
+            LOG.error(ex.getMessage(), ex);
+            return Response.status(Response.Status.BAD_REQUEST)
+                    .entity(ex.toString()).build();
+        }
+    }
+
+    /**
+     * Method to attend all the GET calls.
+     * @param headers
+     * @param ui
+     * @return
+     */
+    @GET
+    @Path("/{path: .*}")
+    public Response getUsage(@Context HttpHeaders headers, @Context UriInfo ui) {
+        try {
+            String serviceURI = buildURI(ui);
+            return consumeService(headers, serviceURI, GET_METHOD, null);
+        } catch (Exception ex) {
+            LOG.error(ex.getMessage(), ex);
+            return Response.status(Response.Status.BAD_REQUEST)
+                    .entity(ex.toString()).build();
+        }
+    }
+
+    /**
+     * Method to attend all the POST calls.
+     * @param xml
+     * @param headers
+     * @param ui
+     * @return
+     * @throws IOException
+     */
+    @POST
+    @Path("/{path: .*}")
+    public Response handlePost(String xml, @Context HttpHeaders headers,
+            @Context UriInfo ui) throws IOException {
+        try {
+            String serviceURI = buildURI(ui);
+            return consumeService(headers, serviceURI, POST_METHOD, xml);
+        } catch (Exception ex) {
+            LOG.error(ex.getMessage(), ex);
+            return Response.status(Response.Status.BAD_REQUEST)
+                    .entity(ex.toString()).build();
+        }
+    }
+
+    /**
+     * Method to attend all the DELETE calls.
+     * @param headers
+     * @param ui
+     * @return
+     * @throws IOException
+     */
+    @DELETE
+    @Path("/{path: .*}")
+    public Response handleDelete(@Context HttpHeaders headers,
+            @Context UriInfo ui) throws IOException {
+        try {
+            String serviceURI = buildURI(ui);
+            return consumeService(headers, serviceURI, DELETE_METHOD, null);
+        } catch (Exception ex) {
+            LOG.error(ex.getMessage(), ex);
+            return Response.status(Response.Status.BAD_REQUEST)
+                    .entity(ex.toString()).build();
+        }
+    }
+
+    /**
+     * Method set the parametters and cast them to a String.
+     * @param ui
+     * @return
+     */
+    private String buildURI(UriInfo ui) {
+        String serviceURI = getFalconURL();
+        serviceURI += getUIURI(ui);
+        StringBuilder urlBuilder = new StringBuilder(serviceURI);
+        MultivaluedMap<String, String> parameters = ui.getQueryParameters();
+        boolean firstEntry = true;
+        for (Map.Entry<String, List<String>> entry : parameters.entrySet()) {
+            if (firstEntry) {
+                urlBuilder.append("?");
+            } else {
+                urlBuilder.append("&");
+            }
+            boolean firstVal = true;
+            for (String val : entry.getValue()) {
+                urlBuilder.append(firstVal ? "" : "&").append(entry.getKey())
+                        .append("=").append(val);
+                firstVal = false;
+            }
+            firstEntry = false;
+        }
+        return urlBuilder.toString();
+    }
+
+    private String getUIURI(UriInfo uriInfo) {
+        String uriPath = uriInfo.getAbsolutePath().getPath();
+        int index = uriPath.indexOf("proxy/") + 5;
+        return uriPath.substring(index);
+    }
+
+    /**
+     * Method to consume the API from the URLStreamProvider.
+     * @param headers
+     * @param urlToRead
+     * @param method
+     * @param xml
+     * @return
+     * @throws Exception
+     */
+    private Response consumeService(HttpHeaders headers, String urlToRead,
+            String method, String xml) throws Exception {
+        Response response;
+        URLStreamProvider streamProvider = viewContext.getURLStreamProvider();
+        Map<String, String> newHeaders = getHeaders(headers);
+        newHeaders.put("user.name", viewContext.getUsername());
+
+        if (checkForceJsonRepsonse(urlToRead, newHeaders)) {
+            newHeaders.put("Accept", MediaType.APPLICATION_JSON);
+        }
+        LOG.info(String.format("Falcon Url[%s]", urlToRead));
+        InputStream stream = null;
+        if (isSecurityEnabled()) {
+            stream = streamProvider.readAsCurrent(urlToRead, method, xml,
+                    newHeaders);
+        } else {
+            stream = streamProvider
+                    .readFrom(urlToRead, method, xml, newHeaders);
+        }
+
+        String sresponse = getStringFromInputStream(stream);
+
+        if (sresponse.contains(FALCON_ERROR)
+                || sresponse.contains(Response.Status.BAD_REQUEST.name())) {
+            response = Response.status(Response.Status.BAD_REQUEST)
+                    .entity(sresponse).type(MediaType.TEXT_PLAIN).build();
+        } else {
+            return Response.status(Response.Status.OK).entity(sresponse)
+                    .type(getResponseType(sresponse)).build();
+        }
+
+        return response;
+    }
+
+    private boolean isSecurityEnabled() {
+        return !"simple".equals(viewContext.getProperties().get(
+                "falcon.authentication.type"));
+    }
+
+    private String getFalconURL() {
+        String falconUri = "";
+        if (viewContext.getCluster() != null) {
+            String tlsEnabled = viewContext.getCluster().getConfigurationValue(
+                    "falcon_startup.properties", "falcon.enableTLS");
+            String scheme = Boolean.parseBoolean(tlsEnabled) ? "https" : "http";
+            String falconHost = viewContext.getCluster()
+                    .getHostsForServiceComponent("FALCON", "FALCON_SERVER")
+                    .get(0);
+            String falconPort = viewContext.getCluster().getConfigurationValue(
+                    "falcon-env", "falcon_port");
+            falconUri = scheme + "://" + falconHost + ":" + falconPort;
+
+        } else {
+            falconUri = viewContext.getProperties().get("falcon.service.uri");
+        }
+        LOG.info("Falcon URI==" + falconUri);
+        return falconUri;
+
+    }
+
+    /**
+     * Method to read the response and send it to the front.
+     * @param is
+     * @return
+     */
+    private String getStringFromInputStream(InputStream is) {
+
+        BufferedReader br = null;
+        StringBuilder sb = new StringBuilder();
+
+        String line;
+        try {
+            br = new BufferedReader(new InputStreamReader(is));
+            while ((line = br.readLine()) != null) {
+                sb.append(line);
+            }
+        } catch (IOException e) {
+            LOG.error(e.getMessage(), e);
+        } finally {
+            if (br != null) {
+                try {
+                    br.close();
+                } catch (IOException e) {
+                    LOG.error(e.getMessage(), e);
+                }
+            }
+        }
+        return sb.toString();
+    }
+
+    /**
+     * Method to cast the response type.
+     * @param response
+     * @return
+     */
+    private String getResponseType(String response) {
+        if (response.startsWith("{")) {
+            return MediaType.TEXT_PLAIN;
+        } else if (response.startsWith("<")) {
+            return MediaType.TEXT_XML;
+        } else {
+            return MediaType.TEXT_PLAIN;
+        }
+    }
+
+    private boolean checkForceJsonRepsonse(String urlToRead,
+            Map<String, String> headers) throws Exception {
+        for (int i = 0; i < FORCE_JSON_RESPONSE.length; i++) {
+            if (urlToRead.contains(FORCE_JSON_RESPONSE[i])) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private Map<String, String> getHeaders(HttpHeaders headers) {
+        MultivaluedMap<String, String> requestHeaders = headers
+                .getRequestHeaders();
+        Set<Entry<String, List<String>>> headerEntrySet = requestHeaders
+                .entrySet();
+        HashMap<String, String> headersMap = new HashMap<String, String>();
+        for (Entry<String, List<String>> headerEntry : headerEntrySet) {
+            String key = headerEntry.getKey();
+            List<String> values = headerEntry.getValue();
+            headersMap.put(key, strJoin(values, ","));
+        }
+        return headersMap;
+    }
+
+    // TODO use one of libraries.
+    private String strJoin(List<String> strings, String separator) {
+
+        StringBuilder stringBuilder = new StringBuilder();
+        for (int i = 0, il = strings.size(); i < il; i++) {
+            if (i > 0) {
+                stringBuilder.append(separator);
+            }
+            stringBuilder.append(strings.get(i));
+        }
+        return stringBuilder.toString();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ambari-view/src/main/lib/ambari-views-2.4.0.0.1019.jar
----------------------------------------------------------------------
diff --git a/falcon-ambari-view/src/main/lib/ambari-views-2.4.0.0.1019.jar b/falcon-ambari-view/src/main/lib/ambari-views-2.4.0.0.1019.jar
new file mode 100644
index 0000000..6865744
Binary files /dev/null and b/falcon-ambari-view/src/main/lib/ambari-views-2.4.0.0.1019.jar differ

http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ambari-view/src/main/resources/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/falcon-ambari-view/src/main/resources/WEB-INF/web.xml b/falcon-ambari-view/src/main/resources/WEB-INF/web.xml
new file mode 100644
index 0000000..aad4c20
--- /dev/null
+++ b/falcon-ambari-view/src/main/resources/WEB-INF/web.xml
@@ -0,0 +1,22 @@
+<?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. Kerberos, LDAP, Custom. Binary/Htt
+-->
+<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
+         version="3.1">
+</web-app>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ambari-view/src/main/resources/view.xml
----------------------------------------------------------------------
diff --git a/falcon-ambari-view/src/main/resources/view.xml b/falcon-ambari-view/src/main/resources/view.xml
new file mode 100644
index 0000000..1a8d914
--- /dev/null
+++ b/falcon-ambari-view/src/main/resources/view.xml
@@ -0,0 +1,39 @@
+<!--
+   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.
+-->
+<view>
+  <name>Falcon</name>
+  <label>Falcon View</label>
+  <version>1.1.0</version>
+  <build>${env.BUILD_NUMBER}</build>
+  <resource>
+    <name>proxy</name>
+    <service-class>org.apache.falcon.ambari.view.FalconProxyImpersonator</service-class>
+  </resource>
+  <parameter>
+    <name>falcon.service.uri</name>
+    <description>The URI to which the falcon services will route. Default: "http://sandbox.hortonworks.com:15000"</description>
+    <required>false</required>
+    <cluster-config>fake</cluster-config>
+  </parameter>
+    <parameter>
+    <name>falcon.authentication.type</name>
+    <description>Authentication Type(simple|kerberos)</description>
+    <required>false</required>
+    <default-value>simple</default-value>
+    <cluster-config>falcon_startup.properties/falcon.authentication.type</cluster-config>
+  </parameter>
+</view>

http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ambari-view/src/test/java/org/apache/falcon/ambari/view/FalconProxyImpersonatorTest.java
----------------------------------------------------------------------
diff --git a/falcon-ambari-view/src/test/java/org/apache/falcon/ambari/view/FalconProxyImpersonatorTest.java b/falcon-ambari-view/src/test/java/org/apache/falcon/ambari/view/FalconProxyImpersonatorTest.java
new file mode 100644
index 0000000..e01fed5
--- /dev/null
+++ b/falcon-ambari-view/src/test/java/org/apache/falcon/ambari/view/FalconProxyImpersonatorTest.java
@@ -0,0 +1,59 @@
+/**
+ * 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.falcon.ambari.view;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.mock;
+
+import org.apache.ambari.view.ViewContext;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mockito;
+
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriInfo;
+
+/**
+ * This is a class used to test FalconProxyImpersonator to bridge the communication between the falcon-ui
+ * and the falcon API executing inside ambari.
+ */
+public class FalconProxyImpersonatorTest {
+
+    private ViewContext viewContext;
+    private HttpHeaders headers;
+    private UriInfo ui;
+
+    private FalconProxyImpersonator impersonator;
+
+    @Before
+    public void setUp() throws Exception {
+        viewContext = mock(ViewContext.class);
+        headers = mock(HttpHeaders.class);
+        ui = mock(UriInfo.class);
+        impersonator = new FalconProxyImpersonator(viewContext);
+    }
+
+    @Test
+    public void testSetUser(){
+        Mockito.when(viewContext.getUsername()).thenReturn("ambari-qa");
+        Response response = impersonator.setUser(headers, ui);
+        assertEquals(200, response.getStatus());
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/Gruntfile.js
----------------------------------------------------------------------
diff --git a/falcon-ui/Gruntfile.js b/falcon-ui/Gruntfile.js
index 112ad49..2ba3343 100644
--- a/falcon-ui/Gruntfile.js
+++ b/falcon-ui/Gruntfile.js
@@ -24,7 +24,7 @@
       copy: {
         resources: {
           cwd: 'app',
-          src: ['html/**/*.html', 'index.html', 'config/*'],
+          src: ['html/**/*.html', 'index.html', 'config/*', 'css/jquery-ui.css'],
           dest: 'dist/',
           expand: true
         },
@@ -34,6 +34,12 @@
           dest: 'dist/',
           expand: true
         },
+        webapp : {
+          cwd: 'dist',
+          src: ['**/*.*'],
+          dest: '../webapp/src/main/webapp/',
+          expand: true
+        },
 	ambariview : {
           cwd: 'dist',
           src: ['**/*.*'],
@@ -54,6 +60,7 @@
             'app/js/lib/jquery-1.11.1.min.js',
             'app/js/lib/angular.min.js',
             'app/js/lib/angular-cookies.min.js',
+            'app/js/lib/angular-ngStorage.js',
             'app/js/lib/uirouter.min.js',
             'app/js/lib/ui-bootstrap-tpls-0.11.0.min.js',
             'app/js/lib/d3.min.js',
@@ -65,7 +72,10 @@
             'app/js/lib/ng-tags-input.js',
             'app/js/lib/popover.js',
             'app/js/lib/ng-mask.min.js',
-            'app/js/lib/dagre.min.js'
+            'app/js/lib/dagre.min.js',
+			'app/js/lib/focusIf.min.js',
+            'app/js/lib/jquery.mask.min.js',
+			'app/js/lib/jquery-ui.min.js'
             //'app/js/lib/bootstrap.notify.js'
           ],
           dest: 'dist/js/vendor.min.js'
@@ -151,7 +161,10 @@
             ieCompat: false
           },
           files: {
-            'dist/css/main.css': 'app/css/main.less'
+            'dist/css/dark-theme.css': 'app/css/main.less',
+            'dist/css/white-theme.css': 'app/css/white-theme.less',
+            'dist/css/gray-theme.css': 'app/css/gray-theme.less',
+			'dist/css/default-theme.css': 'app/css/default-theme.less'
           }
         }
       },

http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/Installation-steps.txt
----------------------------------------------------------------------
diff --git a/falcon-ui/Installation-steps.txt b/falcon-ui/Installation-steps.txt
index 3f9968d..d4d3fb5 100644
--- a/falcon-ui/Installation-steps.txt
+++ b/falcon-ui/Installation-steps.txt
@@ -44,4 +44,8 @@ Then navigate to localhost:15000
 -------------------
 - grunt dev
 This will launch an express server with the falcon-ui to localhost:3000
-(You can test there all UI related behaviours and express will mock all falcon REST calls)
\ No newline at end of file
+(You can test there all UI related behaviours and express will mock all falcon REST calls)
+
+
+## Font/Icons
+http://web.archive.org/web/20140912210715/http://entypo.com/characters/
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/bootstrap/less/dropdowns.less
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/bootstrap/less/dropdowns.less b/falcon-ui/app/css/bootstrap/less/dropdowns.less
index 3eb7fc0..aed4d90 100644
--- a/falcon-ui/app/css/bootstrap/less/dropdowns.less
+++ b/falcon-ui/app/css/bootstrap/less/dropdowns.less
@@ -33,8 +33,8 @@
   z-index: @zindex-dropdown;
   display: none; // none by default, but block on "open" of the menu
   float: left;
-  min-width: 160px;
-  padding: 5px 0;
+  min-width: 60px;
+  padding: 0px 0;
   margin: 2px 0 0; // override default ul
   list-style: none;
   font-size: @font-size-base;
@@ -213,3 +213,7 @@
   }
 }
 
+.dropdown-submenu {
+  list-style: none;
+  padding: 0 0 0 10px;
+}

http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/bootstrap/less/forms.less
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/bootstrap/less/forms.less b/falcon-ui/app/css/bootstrap/less/forms.less
index 2c5e9bf..6c4c6bb 100644
--- a/falcon-ui/app/css/bootstrap/less/forms.less
+++ b/falcon-ui/app/css/bootstrap/less/forms.less
@@ -51,8 +51,7 @@ input[type="search"] {
 // Position radios and checkboxes better
 input[type="radio"],
 input[type="checkbox"] {
-  margin: 4px 0 0;
-  margin-top: 1px \9; // IE8-9
+  vertical-align: middle;
   line-height: normal;
 }
 

http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/bootstrap/less/pagination.less
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/bootstrap/less/pagination.less b/falcon-ui/app/css/bootstrap/less/pagination.less
index b2856ae..9bcd05b 100644
--- a/falcon-ui/app/css/bootstrap/less/pagination.less
+++ b/falcon-ui/app/css/bootstrap/less/pagination.less
@@ -4,7 +4,7 @@
 .pagination {
   display: inline-block;
   padding-left: 0;
-  margin: @line-height-computed 0;
+  margin-bottom: -5px;
   border-radius: @border-radius-base;
 
   > li {

http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/bootstrap/less/responsive-utilities.less
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/bootstrap/less/responsive-utilities.less b/falcon-ui/app/css/bootstrap/less/responsive-utilities.less
index b1db31d..1862e71 100644
--- a/falcon-ui/app/css/bootstrap/less/responsive-utilities.less
+++ b/falcon-ui/app/css/bootstrap/less/responsive-utilities.less
@@ -126,7 +126,7 @@
   }
 }
 .visible-lg-inline-block {
-  @media (min-width: @screen-lg-min) {
+  @media (min-width: @screen-xs-min) {
     display: inline-block !important;
   }
 }

http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/bootstrap/less/tables.less
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/bootstrap/less/tables.less b/falcon-ui/app/css/bootstrap/less/tables.less
index 2e1ef33..76b51de 100644
--- a/falcon-ui/app/css/bootstrap/less/tables.less
+++ b/falcon-ui/app/css/bootstrap/less/tables.less
@@ -26,7 +26,7 @@ th {
       > td {
         padding: @table-cell-padding;
         line-height: @line-height-base;
-        vertical-align: top;
+        vertical-align: middle;
         border-top: 1px solid @table-border-color;
       }
     }
@@ -231,3 +231,11 @@ table {
     }
   }
 }
+
+.evenRow {
+  background: #fff;
+}
+
+.oddRow {
+  background: #F9F9F9;
+}

http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/bootstrap/less/variables.less
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/bootstrap/less/variables.less b/falcon-ui/app/css/bootstrap/less/variables.less
index 582f0f8..6298c5f 100644
--- a/falcon-ui/app/css/bootstrap/less/variables.less
+++ b/falcon-ui/app/css/bootstrap/less/variables.less
@@ -119,7 +119,7 @@
 //## Customizes the `.table` component with basic values, each used across all table variations.
 
 //** Padding for `<th>`s and `<td>`s.
-@table-cell-padding:            8px;
+@table-cell-padding:            5px;
 //** Padding for cells in `.table-condensed`.
 @table-condensed-cell-padding:  5px;
 
@@ -842,5 +842,3 @@
 @dl-horizontal-offset:        @component-offset-horizontal;
 //** Horizontal line color.
 @hr-border:                   @gray-lighter;
-
-

http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/default-theme.less
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/default-theme.less b/falcon-ui/app/css/default-theme.less
new file mode 100644
index 0000000..e2e3117
--- /dev/null
+++ b/falcon-ui/app/css/default-theme.less
@@ -0,0 +1,20 @@
+/**
+ * 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.
+ */
+// Core variables and mixins
+@import "main.less";
+@import "styles/default.less";

http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/fonts/entypo.less
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/fonts/entypo.less b/falcon-ui/app/css/fonts/entypo.less
index 3b90398..cd67f6a 100644
--- a/falcon-ui/app/css/fonts/entypo.less
+++ b/falcon-ui/app/css/fonts/entypo.less
@@ -46,6 +46,10 @@
   line-height: 0;
 }
 
+.entypo-align-sub {
+  vertical-align: sub;
+}
+
 .entypo-social {
   font-family: 'EntypoSocialRegular';
   font-size: 2em;
@@ -1187,4 +1191,4 @@
 
 .entypo-social.smashing:before {
   content: '\F357';
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/gray-theme.less
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/gray-theme.less b/falcon-ui/app/css/gray-theme.less
new file mode 100644
index 0000000..5f6ec7e
--- /dev/null
+++ b/falcon-ui/app/css/gray-theme.less
@@ -0,0 +1,20 @@
+/**
+ * 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.
+ */
+// Core variables and mixins
+@import "main.less";
+@import "styles/gray.less";

http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/img/32x32_create-entity-hover.png
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/img/32x32_create-entity-hover.png b/falcon-ui/app/css/img/32x32_create-entity-hover.png
new file mode 100755
index 0000000..32361ae
Binary files /dev/null and b/falcon-ui/app/css/img/32x32_create-entity-hover.png differ

http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/img/32x32_create-entity.png
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/img/32x32_create-entity.png b/falcon-ui/app/css/img/32x32_create-entity.png
new file mode 100755
index 0000000..30e6f65
Binary files /dev/null and b/falcon-ui/app/css/img/32x32_create-entity.png differ

http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/img/32x32_upload.png
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/img/32x32_upload.png b/falcon-ui/app/css/img/32x32_upload.png
new file mode 100755
index 0000000..d18c2df
Binary files /dev/null and b/falcon-ui/app/css/img/32x32_upload.png differ

http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/img/cloud.png
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/img/cloud.png b/falcon-ui/app/css/img/cloud.png
new file mode 100644
index 0000000..1cb0075
Binary files /dev/null and b/falcon-ui/app/css/img/cloud.png differ

http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/img/falcon-logo.jpg
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/img/falcon-logo.jpg b/falcon-ui/app/css/img/falcon-logo.jpg
new file mode 100755
index 0000000..3eadaa6
Binary files /dev/null and b/falcon-ui/app/css/img/falcon-logo.jpg differ

http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/img/falcon.png
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/img/falcon.png b/falcon-ui/app/css/img/falcon.png
deleted file mode 100644
index f0e6934..0000000
Binary files a/falcon-ui/app/css/img/falcon.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/img/feed.png
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/img/feed.png b/falcon-ui/app/css/img/feed.png
new file mode 100644
index 0000000..b6e9836
Binary files /dev/null and b/falcon-ui/app/css/img/feed.png differ

http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/img/ui-bg_glass_55_fbf9ee_1x400.png
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/img/ui-bg_glass_55_fbf9ee_1x400.png b/falcon-ui/app/css/img/ui-bg_glass_55_fbf9ee_1x400.png
new file mode 100644
index 0000000..f2811e5
Binary files /dev/null and b/falcon-ui/app/css/img/ui-bg_glass_55_fbf9ee_1x400.png differ

http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/img/ui-bg_glass_65_ffffff_1x400.png
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/img/ui-bg_glass_65_ffffff_1x400.png b/falcon-ui/app/css/img/ui-bg_glass_65_ffffff_1x400.png
new file mode 100644
index 0000000..c2c7126
Binary files /dev/null and b/falcon-ui/app/css/img/ui-bg_glass_65_ffffff_1x400.png differ

http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/img/ui-bg_glass_75_dadada_1x400.png
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/img/ui-bg_glass_75_dadada_1x400.png b/falcon-ui/app/css/img/ui-bg_glass_75_dadada_1x400.png
new file mode 100644
index 0000000..a1d1e14
Binary files /dev/null and b/falcon-ui/app/css/img/ui-bg_glass_75_dadada_1x400.png differ

http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/img/ui-bg_glass_75_e6e6e6_1x400.png
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/img/ui-bg_glass_75_e6e6e6_1x400.png b/falcon-ui/app/css/img/ui-bg_glass_75_e6e6e6_1x400.png
new file mode 100644
index 0000000..af8a90c
Binary files /dev/null and b/falcon-ui/app/css/img/ui-bg_glass_75_e6e6e6_1x400.png differ

http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/img/ui-bg_glass_95_fef1ec_1x400.png
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/img/ui-bg_glass_95_fef1ec_1x400.png b/falcon-ui/app/css/img/ui-bg_glass_95_fef1ec_1x400.png
new file mode 100644
index 0000000..078e793
Binary files /dev/null and b/falcon-ui/app/css/img/ui-bg_glass_95_fef1ec_1x400.png differ

http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/img/ui-bg_highlight-soft_75_cccccc_1x100.png
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/img/ui-bg_highlight-soft_75_cccccc_1x100.png b/falcon-ui/app/css/img/ui-bg_highlight-soft_75_cccccc_1x100.png
new file mode 100644
index 0000000..88d1855
Binary files /dev/null and b/falcon-ui/app/css/img/ui-bg_highlight-soft_75_cccccc_1x100.png differ

http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/img/ui-icons_222222_256x240.png
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/img/ui-icons_222222_256x240.png b/falcon-ui/app/css/img/ui-icons_222222_256x240.png
new file mode 100644
index 0000000..e9c8e16
Binary files /dev/null and b/falcon-ui/app/css/img/ui-icons_222222_256x240.png differ

http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/img/ui-icons_2e83ff_256x240.png
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/img/ui-icons_2e83ff_256x240.png b/falcon-ui/app/css/img/ui-icons_2e83ff_256x240.png
new file mode 100644
index 0000000..f2bf838
Binary files /dev/null and b/falcon-ui/app/css/img/ui-icons_2e83ff_256x240.png differ

http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/img/ui-icons_454545_256x240.png
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/img/ui-icons_454545_256x240.png b/falcon-ui/app/css/img/ui-icons_454545_256x240.png
new file mode 100644
index 0000000..d6169e8
Binary files /dev/null and b/falcon-ui/app/css/img/ui-icons_454545_256x240.png differ

http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/img/ui-icons_888888_256x240.png
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/img/ui-icons_888888_256x240.png b/falcon-ui/app/css/img/ui-icons_888888_256x240.png
new file mode 100644
index 0000000..d3e6e02
Binary files /dev/null and b/falcon-ui/app/css/img/ui-icons_888888_256x240.png differ

http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/img/ui-icons_cd0a0a_256x240.png
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/img/ui-icons_cd0a0a_256x240.png b/falcon-ui/app/css/img/ui-icons_cd0a0a_256x240.png
new file mode 100644
index 0000000..4937018
Binary files /dev/null and b/falcon-ui/app/css/img/ui-icons_cd0a0a_256x240.png differ

http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/img/user.svg
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/img/user.svg b/falcon-ui/app/css/img/user.svg
index fb534c2..60ac6c5 100644
--- a/falcon-ui/app/css/img/user.svg
+++ b/falcon-ui/app/css/img/user.svg
@@ -1,20 +1,4 @@
 <?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.
-  -->
 <!-- Generator: Adobe Illustrator 16.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
 <svg version="1.1" id="User" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"