You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by al...@apache.org on 2014/01/13 18:10:40 UTC

git commit: AMBARI-4276. Falcon initial implementation. (Mikhail Bayuk via alexantonenko)

Updated Branches:
  refs/heads/trunk 6343a9011 -> 6c6f00122


AMBARI-4276. Falcon initial implementation. (Mikhail Bayuk via alexantonenko)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/6c6f0012
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/6c6f0012
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/6c6f0012

Branch: refs/heads/trunk
Commit: 6c6f00122e5ea3b90876a8cc56ccf83f5ee03275
Parents: 6343a90
Author: Alex Antonenko <hi...@gmail.com>
Authored: Mon Jan 13 19:10:30 2014 +0200
Committer: Alex Antonenko <hi...@gmail.com>
Committed: Mon Jan 13 19:10:30 2014 +0200

----------------------------------------------------------------------
 .../app/assets/data/alerts/HDP2/alerts.json     | 16 +++++++++++
 .../app/assets/data/clusters/HDP2/cluster.json  |  4 +++
 .../app/assets/data/clusters/cluster.json       |  3 ++
 .../assets/data/hosts/HDP2/hc_host_status.json  | 11 ++++++-
 .../app/assets/data/hosts/HDP2/hosts.json       |  8 ++++++
 .../app/assets/data/services/HDP2/services.json |  9 +++++-
 .../data/wizard/stack/hdp/version/2.0.1.json    | 13 ++++++++-
 .../data/wizard/stack/hdp/version/2.0.5.json    | 13 ++++++++-
 .../app/assets/data/wizard/stack/stacks.json    | 11 +++++++
 ambari-web/app/config.js                        |  1 +
 .../app/controllers/wizard/step5_controller.js  |  7 +++++
 .../app/controllers/wizard/step8_controller.js  | 19 +++++++++++++
 ambari-web/app/data/HDP2/global_properties.js   | 30 +++++++++++++++++++-
 ambari-web/app/data/review_configs.js           | 10 +++++++
 ambari-web/app/data/service_components.js       |  8 ++++++
 ambari-web/app/data/service_configs.js          |  9 ++++++
 ambari-web/app/data/services.js                 | 11 ++++++-
 ambari-web/app/mappers/server_data_mapper.js    |  1 +
 .../app/mappers/service_metrics_mapper.js       |  2 ++
 ambari-web/app/models/host_component.js         |  1 +
 ambari-web/app/models/quick_links.js            | 11 +++++++
 ambari-web/app/models/service.js                |  2 ++
 ambari-web/app/templates.js                     |  1 +
 .../app/templates/main/service/info/summary.hbs |  3 ++
 .../main/service/info/summary/falcon.hbs        | 19 +++++++++++++
 ambari-web/app/utils/helper.js                  |  4 +++
 .../app/views/common/quick_view_link_view.js    |  3 ++
 ambari-web/app/views/main/menu.js               |  2 +-
 .../app/views/main/service/info/summary.js      |  1 +
 29 files changed, 226 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/6c6f0012/ambari-web/app/assets/data/alerts/HDP2/alerts.json
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/data/alerts/HDP2/alerts.json b/ambari-web/app/assets/data/alerts/HDP2/alerts.json
index 40548e5..d54bf0a 100644
--- a/ambari-web/app/assets/data/alerts/HDP2/alerts.json
+++ b/ambari-web/app/assets/data/alerts/HDP2/alerts.json
@@ -634,6 +634,22 @@
               "service_type" : "ZOOKEEPER"
             },
             {
+              "service_description" : "Falcon Server process down",
+              "host_name" : "dev01.hortonworks.com",
+              "current_attempt" : "1",
+              "current_state" : "0",
+              "plugin_output" : "TCP OK - 0.001 second response time on port 16000",
+              "last_hard_state_change" : "1375291434",
+              "last_hard_state" : "0",
+              "last_time_ok" : "1375308415",
+              "last_time_warning" : "0",
+              "last_time_unknown" : "0",
+              "last_time_critical" : "1375289980",
+              "is_flapping" : "0",
+              "last_check" : "1375308415",
+              "service_type" : "FALCON"
+            },
+            {
               "service_description" : "Storm process down",
               "host_name" : "dev01.hortonworks.com",
               "current_attempt" : "1",

http://git-wip-us.apache.org/repos/asf/ambari/blob/6c6f0012/ambari-web/app/assets/data/clusters/HDP2/cluster.json
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/data/clusters/HDP2/cluster.json b/ambari-web/app/assets/data/clusters/HDP2/cluster.json
index 9d01a5c..07e5d7a 100644
--- a/ambari-web/app/assets/data/clusters/HDP2/cluster.json
+++ b/ambari-web/app/assets/data/clusters/HDP2/cluster.json
@@ -49,6 +49,10 @@
         "user" : "admin",
         "tag" : "version1"
       },
+      "falcon-site" : {
+        "user" : "admin",
+        "tag" : "version1"
+      },
       "storm-site" : {
         "user" : "admin",
         "tag" : "version1"

http://git-wip-us.apache.org/repos/asf/ambari/blob/6c6f0012/ambari-web/app/assets/data/clusters/cluster.json
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/data/clusters/cluster.json b/ambari-web/app/assets/data/clusters/cluster.json
index 873146e..fb53d51 100644
--- a/ambari-web/app/assets/data/clusters/cluster.json
+++ b/ambari-web/app/assets/data/clusters/cluster.json
@@ -32,6 +32,9 @@
       "hue-site" : {
         "tag" : "version1"
       },
+      "falcon-site" : {
+        "tag" : "version1"
+      },
       "storm-site" : {
         "tag" : "version1"
       },

http://git-wip-us.apache.org/repos/asf/ambari/blob/6c6f0012/ambari-web/app/assets/data/hosts/HDP2/hc_host_status.json
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/data/hosts/HDP2/hc_host_status.json b/ambari-web/app/assets/data/hosts/HDP2/hc_host_status.json
index 0c01dcb..44262bc 100644
--- a/ambari-web/app/assets/data/hosts/HDP2/hc_host_status.json
+++ b/ambari-web/app/assets/data/hosts/HDP2/hc_host_status.json
@@ -208,13 +208,22 @@
           }
         },
         {
-          "href" : "http://192.168.56.101:8080/api/v1/clusters/perf/hosts/dev01.hortonworks.com/host_components/NIMBUS",
+          "href" : "http://192.168.56.101:8080/api/v1/clusters/perf/hosts/dev01.hortonworks.com/host_components/SUPERVISOR",
           "HostRoles" : {
             "cluster_name" : "perf",
             "component_name" : "SUPERVISOR",
             "host_name" : "dev01.hortonworks.com",
             "state" : "STARTED"
           }
+        },
+        {
+          "href" : "http://192.168.56.101:8080/api/v1/clusters/perf/hosts/dev01.hortonworks.com/host_components/FALCON",
+          "HostRoles" : {
+            "cluster_name" : "perf",
+            "component_name" : "FALCON_SERVER",
+            "host_name" : "dev01.hortonworks.com",
+            "state" : "STARTED"
+          }
         }
       ]
     }

http://git-wip-us.apache.org/repos/asf/ambari/blob/6c6f0012/ambari-web/app/assets/data/hosts/HDP2/hosts.json
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/data/hosts/HDP2/hosts.json b/ambari-web/app/assets/data/hosts/HDP2/hosts.json
index b0972e3..608c23c 100644
--- a/ambari-web/app/assets/data/hosts/HDP2/hosts.json
+++ b/ambari-web/app/assets/data/hosts/HDP2/hosts.json
@@ -291,6 +291,14 @@
             "component_name" : "SUPERVISOR",
             "host_name" : "dev01.hortonworks.com"
           }
+        },
+        {
+          "href" : "http://dev01.hortonworks.com:8080/api/v1/clusters/c1/hosts/dev01.hortonworks.com/host_components/FALCON",
+          "HostRoles" : {
+            "cluster_name" : "c1",
+            "component_name" : "FALCON_SERVER",
+            "host_name" : "dev01.hortonworks.com"
+          }
         }
       ]
     }

http://git-wip-us.apache.org/repos/asf/ambari/blob/6c6f0012/ambari-web/app/assets/data/services/HDP2/services.json
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/data/services/HDP2/services.json b/ambari-web/app/assets/data/services/HDP2/services.json
index 7147630..4489757 100644
--- a/ambari-web/app/assets/data/services/HDP2/services.json
+++ b/ambari-web/app/assets/data/services/HDP2/services.json
@@ -79,6 +79,13 @@
       }
     },
     {
+      "href" : "http://192.168.56.101:8080/api/v1/clusters/cl/services/FALCON",
+      "ServiceInfo" : {
+        "cluster_name" : "cl",
+        "service_name" : "FALCON"
+      }
+    },
+    {
       "href" : "http://192.168.56.101:8080/api/v1/clusters/cl/services/STORM",
       "ServiceInfo" : {
         "cluster_name" : "cl",
@@ -86,4 +93,4 @@
       }
     }
   ]
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/ambari/blob/6c6f0012/ambari-web/app/assets/data/wizard/stack/hdp/version/2.0.1.json
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/data/wizard/stack/hdp/version/2.0.1.json b/ambari-web/app/assets/data/wizard/stack/hdp/version/2.0.1.json
index 3a37bc6..414dbec 100644
--- a/ambari-web/app/assets/data/wizard/stack/hdp/version/2.0.1.json
+++ b/ambari-web/app/assets/data/wizard/stack/hdp/version/2.0.1.json
@@ -145,6 +145,17 @@
       }
     },
     {
+      "href" : "http://192.168.56.101:8080/api/v1/stacks2/HDP/versions/2.0.1/stackServices/FALCON",
+      "StackServices" : {
+        "user_name" : "root",
+        "stack_version" : "2.0.1",
+        "service_name" : "FALCON",
+        "stack_name" : "HDP",
+        "comments" : "Falcon server",
+        "service_version" : "2.0.3.22-1"
+      }
+    },
+    {
       "href" : "http://192.168.56.101:8080/api/v1/stacks2/HDP/versions/2.0.1/stackServices/STORM",
       "StackServices" : {
         "user_name" : "root",
@@ -156,4 +167,4 @@
       }
     }
   ]
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/ambari/blob/6c6f0012/ambari-web/app/assets/data/wizard/stack/hdp/version/2.0.5.json
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/data/wizard/stack/hdp/version/2.0.5.json b/ambari-web/app/assets/data/wizard/stack/hdp/version/2.0.5.json
index 3a37bc6..fb7d747 100644
--- a/ambari-web/app/assets/data/wizard/stack/hdp/version/2.0.5.json
+++ b/ambari-web/app/assets/data/wizard/stack/hdp/version/2.0.5.json
@@ -145,6 +145,17 @@
       }
     },
     {
+      "href" : "http://192.168.56.101:8080/api/v1/stacks2/HDP/versions/2.0.1/stackServices/FALCON",
+      "StackServices" : {
+        "user_name" : "falcon",
+        "stack_version" : "2.0.1",
+        "service_name" : "FALCON",
+        "stack_name" : "HDP",
+        "comments" : "Falcon server",
+        "service_version" : "0.3"
+      }
+    },
+    {
       "href" : "http://192.168.56.101:8080/api/v1/stacks2/HDP/versions/2.0.1/stackServices/STORM",
       "StackServices" : {
         "user_name" : "root",
@@ -156,4 +167,4 @@
       }
     }
   ]
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/ambari/blob/6c6f0012/ambari-web/app/assets/data/wizard/stack/stacks.json
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/data/wizard/stack/stacks.json b/ambari-web/app/assets/data/wizard/stack/stacks.json
index 878f5bc..60f5b4e 100644
--- a/ambari-web/app/assets/data/wizard/stack/stacks.json
+++ b/ambari-web/app/assets/data/wizard/stack/stacks.json
@@ -875,6 +875,17 @@
           }
         },
         {
+          "href" : "http://192.168.56.101:8080/api/v1/stacks2/HDP/versions/2.0.5/stackServices/FALCON",
+          "StackServices" : {
+            "comments" : "Falcon server",
+            "service_name" : "FALCON",
+            "service_version" : "0.3",
+            "stack_name" : "HDP",
+            "stack_version" : "2.0.5",
+            "user_name" : "falcon"
+          }
+        },
+        {
           "href" : "http://192.168.56.101:8080/api/v1/stacks2/HDP/versions/2.0.5/stackServices/STORM",
           "StackServices" : {
             "comments" : "Storm makes it easy to reliably process unbounded streams of data.",

http://git-wip-us.apache.org/repos/asf/ambari/blob/6c6f0012/ambari-web/app/config.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/config.js b/ambari-web/app/config.js
index 5d8995e..f69d599 100644
--- a/ambari-web/app/config.js
+++ b/ambari-web/app/config.js
@@ -60,6 +60,7 @@ App.supports = {
   addMasters: false,
   customizeSmokeTestUser: true,
   hue: false,
+  falcon: true,
   ldapGroupMapping: false,
   localRepositories: true,
   highAvailability: true,

http://git-wip-us.apache.org/repos/asf/ambari/blob/6c6f0012/ambari-web/app/controllers/wizard/step5_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/wizard/step5_controller.js b/ambari-web/app/controllers/wizard/step5_controller.js
index 860b343..2e3164c 100644
--- a/ambari-web/app/controllers/wizard/step5_controller.js
+++ b/ambari-web/app/controllers/wizard/step5_controller.js
@@ -443,6 +443,13 @@ App.WizardStep5Controller = Em.Controller.extend({
         return this.getNagiosServer(noOfHosts);
       case 'HUE_SERVER':
         return this.getHueServer(noOfHosts);
+      case 'FALCON_SERVER':
+        return this.getHostForComponent(noOfHosts, {
+          "3" : 0,
+          "6" : 0,
+          "31" : 1,
+          "else" : 2
+        }).host_name;
       case 'NIMBUS':
         return this.getNimbusServer(noOfHosts);
       default:

http://git-wip-us.apache.org/repos/asf/ambari/blob/6c6f0012/ambari-web/app/controllers/wizard/step8_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/wizard/step8_controller.js b/ambari-web/app/controllers/wizard/step8_controller.js
index f9853c3..6beabdd 100644
--- a/ambari-web/app/controllers/wizard/step8_controller.js
+++ b/ambari-web/app/controllers/wizard/step8_controller.js
@@ -513,6 +513,9 @@ App.WizardStep8Controller = Em.Controller.extend({
           case 'HUE':
             this.loadHue(serviceObj);
             break;
+          case 'FALCON':
+            this.loadFalcon(serviceObj);
+            break;
           /* case 'TEZ':
            break;
            case 'PIG':
@@ -897,6 +900,22 @@ App.WizardStep8Controller = Em.Controller.extend({
     this.get('services').pushObject(pigObj);
   },
 
+  loadFalcon: function (falconObj) {
+    falconObj.get('service_components').forEach(function(component) {
+      switch (component.get('display_name')) {
+        case 'Server':
+          this.loadFalconValue(component);
+          break;
+      }
+    }, this);
+    this.get('services').pushObject(falconObj);
+  },
+
+  loadFalconValue: function(component) {
+    var falconHost = this.get('content.masterComponentHosts').filterProperty('display_name', 'Falcon Server');
+    component.set('component_value', falconHost[0].hostName);
+  },
+
   loadSTORM: function (stormObj) {
     stormObj.get('service_components').forEach(function(component) {
       switch (component.get('display_name')) {

http://git-wip-us.apache.org/repos/asf/ambari/blob/6c6f0012/ambari-web/app/data/HDP2/global_properties.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/data/HDP2/global_properties.js b/ambari-web/app/data/HDP2/global_properties.js
index 2941f33..a7ec956 100644
--- a/ambari-web/app/data/HDP2/global_properties.js
+++ b/ambari-web/app/data/HDP2/global_properties.js
@@ -1270,6 +1270,20 @@ module.exports =
       "serviceName": "GANGLIA",
       "category": "Advanced"
     },
+  /**********************************************FALCON***************************************/
+    {
+      "id": "puppet var",
+      "name": "falcon_dir",
+      "displayName": "Run directory for Falcon",
+      "description": "",
+      "defaultValue": "/var/run/falcon",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isVisible": true,
+      "isRequiredByAgent": true,
+      "serviceName": "FALCON",
+      "category": "Falcon"
+    },
   /**********************************************STORM***************************************/
     // @todo create real properties
     {
@@ -1554,6 +1568,20 @@ module.exports =
     },
     {
       "id": "puppet var",
+      "name": "falcon_user",
+      "displayName": "Falcon User",
+      "description": "User to run Falcon as",
+      "defaultValue": "falcon",
+      "isReconfigurable": false,
+      "displayType": "user",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName":"MISC",
+      "category": "Users and Groups",
+      "belongsToService":["FALCON"]
+    },
+    {
+      "id": "puppet var",
       "name": "rrdcached_base_dir",
       "displayName": "Ganglia rrdcached base directory",
       "description": "Default directory for saving the rrd files on ganglia server",
@@ -1565,7 +1593,7 @@ module.exports =
       "serviceName": "GANGLIA",
       "category": "General",
       "belongsToService":["GANGLIA"]
-    },
+    }
 
   ]
 };

http://git-wip-us.apache.org/repos/asf/ambari/blob/6c6f0012/ambari-web/app/data/review_configs.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/data/review_configs.js b/ambari-web/app/data/review_configs.js
index edf0b96..c471e00 100644
--- a/ambari-web/app/data/review_configs.js
+++ b/ambari-web/app/data/review_configs.js
@@ -214,6 +214,16 @@ module.exports = [
         ]
       }),
       Ember.Object.create({
+        service_name: 'FALCON',
+        display_name: 'Falcon',
+        service_components: [
+          Ember.Object.create({
+            display_name: 'Server',
+            component_value: ''
+          })
+        ]
+      }),
+      Ember.Object.create({
         service_name: 'STORM',
         display_name: 'Storm',
         service_components: [

http://git-wip-us.apache.org/repos/asf/ambari/blob/6c6f0012/ambari-web/app/data/service_components.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/data/service_components.js b/ambari-web/app/data/service_components.js
index 8579969..d897805 100644
--- a/ambari-web/app/data/service_components.js
+++ b/ambari-web/app/data/service_components.js
@@ -330,6 +330,14 @@ module.exports = new Ember.Set([
     isClient: true, 
     description: 'Client component for GLUSTERFS'
   },
+  {
+    service_name: 'FALCON',
+    component_name: 'FALCON_SERVER',
+    display_name: 'Falcon Server',
+    isMaster: true,
+    isClient: false,
+    description: 'Falcon Server for mirroring'
+  },
   // @todo change with real info about service component
   {
     service_name: 'STORM',

http://git-wip-us.apache.org/repos/asf/ambari/blob/6c6f0012/ambari-web/app/data/service_configs.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/data/service_configs.js b/ambari-web/app/data/service_configs.js
index 020d743..d83ebc2 100644
--- a/ambari-web/app/data/service_configs.js
+++ b/ambari-web/app/data/service_configs.js
@@ -216,6 +216,15 @@ module.exports = [
     sites: ['pig-log4j'],
     configs: []
   },
+  {
+    serviceName: 'FALCON',
+    displayName: 'Falcon',
+    configCategories: [
+      App.ServiceConfigCategory.create({ name: 'Falcon', displayName : 'Falcon Server'})
+    ],
+    sites: ['falcon-site'],
+    configs: []
+  },
   // @todo change to actual info
   {
     serviceName: 'STORM',

http://git-wip-us.apache.org/repos/asf/ambari/blob/6c6f0012/ambari-web/app/data/services.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/data/services.js b/ambari-web/app/data/services.js
index 837ce70..8dd872a 100644
--- a/ambari-web/app/data/services.js
+++ b/ambari-web/app/data/services.js
@@ -157,6 +157,15 @@ module.exports = [
     isHidden: !App.supports.hue
   },
   {
+    serviceName: 'FALCON',
+    displayName: 'Falcon',
+    isDisabled: false,
+    isSelected: App.supports.falcon,
+    canBeSelected: App.supports.falcon,
+    isHidden: !App.supports.falcon,
+    description: Em.I18n.t('services.falcon.description')
+  },
+  {
     serviceName: 'STORM',
     displayName: 'Storm',
     isDisabled: false,
@@ -165,4 +174,4 @@ module.exports = [
     isHidden: !App.testMode,
     description: Em.I18n.t('services.storm.description')
   }
-]
\ No newline at end of file
+]

http://git-wip-us.apache.org/repos/asf/ambari/blob/6c6f0012/ambari-web/app/mappers/server_data_mapper.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mappers/server_data_mapper.js b/ambari-web/app/mappers/server_data_mapper.js
index 36b59c3..4e522f2 100644
--- a/ambari-web/app/mappers/server_data_mapper.js
+++ b/ambari-web/app/mappers/server_data_mapper.js
@@ -213,6 +213,7 @@ App.QuickDataMapper.componentServiceMap = {
   'KERBEROS_CLIENT': 'KERBEROS',
   'HUE_SERVER': 'HUE',
   'GLUSTERFS_CLIENT': 'GLUSTERFS',
+  'FALCON_SERVER': 'FALCON',
   'NIMBUS': 'STORM',
   'SUPERVISOR': 'STORM'
 };

http://git-wip-us.apache.org/repos/asf/ambari/blob/6c6f0012/ambari-web/app/mappers/service_metrics_mapper.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mappers/service_metrics_mapper.js b/ambari-web/app/mappers/service_metrics_mapper.js
index 24340e9..b96e08f 100644
--- a/ambari-web/app/mappers/service_metrics_mapper.js
+++ b/ambari-web/app/mappers/service_metrics_mapper.js
@@ -314,6 +314,8 @@ App.serviceMetricsMapper = App.QuickDataMapper.create({
       finalJson.quick_links = [21];
     }else if(item && item.ServiceInfo && item.ServiceInfo.service_name == "HUE"){
       finalJson.quick_links = [22];
+    }else if(item && item.ServiceInfo && item.ServiceInfo.service_name == "FALCON"){
+      finalJson.quick_links = [32];
     }
   },
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/6c6f0012/ambari-web/app/models/host_component.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/host_component.js b/ambari-web/app/models/host_component.js
index 614a019..a353b0a 100644
--- a/ambari-web/app/models/host_component.js
+++ b/ambari-web/app/models/host_component.js
@@ -77,6 +77,7 @@ App.HostComponent = DS.Model.extend({
       case 'HUE_SERVER':
       case 'HISTORYSERVER':
       case 'FLUME_SERVER':
+      case 'FALCON_SERVER':
       case 'NIMBUS':
       case 'RESOURCEMANAGER':
         return true;

http://git-wip-us.apache.org/repos/asf/ambari/blob/6c6f0012/ambari-web/app/models/quick_links.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/quick_links.js b/ambari-web/app/models/quick_links.js
index 6364c4c..89b6bc3 100644
--- a/ambari-web/app/models/quick_links.js
+++ b/ambari-web/app/models/quick_links.js
@@ -401,5 +401,16 @@ App.QuickLinks.FIXTURES = [
     site: 'storm-site',
     regex: portRegex,
     default_http_port: 9292
+  },
+  {
+    id:32,
+    label:'Falcon Server UI',
+    url:'%@://%@:%@/stacks',
+    service_id: 'FALCON',
+    template:'%@://%@:%@/html5-ui',
+    site: 'falcon-site',
+    regex: portRegex,
+    default_http_port: 16000
+
   }
 ];

http://git-wip-us.apache.org/repos/asf/ambari/blob/6c6f0012/ambari-web/app/models/service.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/service.js b/ambari-web/app/models/service.js
index 0cec410..d500327 100644
--- a/ambari-web/app/models/service.js
+++ b/ambari-web/app/models/service.js
@@ -180,6 +180,7 @@ App.Service.DisplayNames = {
   'NAGIOS': 'Nagios',
   'HUE': 'Hue',
   'FLUME': 'Flume',
+  'FALCON': 'Falcon',
   'STORM': 'Storm'
 };
 
@@ -201,6 +202,7 @@ App.Service.servicesSortOrder = [
   'PIG',
   'SQOOP',
   'HUE',
+  'FALCON',
   'STORM'
 ];
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/6c6f0012/ambari-web/app/templates.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates.js b/ambari-web/app/templates.js
index c625b2c..a88e2a4 100644
--- a/ambari-web/app/templates.js
+++ b/ambari-web/app/templates.js
@@ -26,5 +26,6 @@ require('templates/main/service/info/summary/zookeeper');
 require('templates/main/service/info/summary/mapreduce2');
 require('templates/main/service/info/summary/hive');
 require('templates/main/service/info/summary/hue');
+require('templates/main/service/info/summary/falcon');
 require('templates/main/service/info/summary/storm');
 require('templates/main/admin/highAvailability/progress');

http://git-wip-us.apache.org/repos/asf/ambari/blob/6c6f0012/ambari-web/app/templates/main/service/info/summary.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/service/info/summary.hbs b/ambari-web/app/templates/main/service/info/summary.hbs
index 76c2abe..ffb6292 100644
--- a/ambari-web/app/templates/main/service/info/summary.hbs
+++ b/ambari-web/app/templates/main/service/info/summary.hbs
@@ -62,6 +62,9 @@
             {{#if view.serviceStatus.flume}}
               {{view App.MainDashboardServiceFlumeView showOnlyRows=true serviceBinding="view.service"}}
             {{/if}}
+            {{#if view.serviceStatus.falcon}}
+              {{template "templates/main/service/info/summary/falcon"}}
+            {{/if}}
             {{#if view.serviceStatus.storm}}
               {{template "templates/main/service/info/summary/storm"}}
             {{/if}}

http://git-wip-us.apache.org/repos/asf/ambari/blob/6c6f0012/ambari-web/app/templates/main/service/info/summary/falcon.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/service/info/summary/falcon.hbs b/ambari-web/app/templates/main/service/info/summary/falcon.hbs
new file mode 100644
index 0000000..ff62e54
--- /dev/null
+++ b/ambari-web/app/templates/main/service/info/summary/falcon.hbs
@@ -0,0 +1,19 @@
+{{!
+* 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.
+}}
+{{!<!-- @todo create correct view after api implementing-->}}
+{{view view.sumMasterComponentView}}

http://git-wip-us.apache.org/repos/asf/ambari/blob/6c6f0012/ambari-web/app/utils/helper.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/helper.js b/ambari-web/app/utils/helper.js
index 3023b10..c26df72 100644
--- a/ambari-web/app/utils/helper.js
+++ b/ambari-web/app/utils/helper.js
@@ -330,6 +330,10 @@ App.format = {
           return 'Storm Service Check';
       case 'FALCON_SERVICE_CHECK':
           return 'Falcon Service Check';
+      case 'FALCON_SERVER':
+          return 'Falcon Server';
+      case 'FALCON':
+          return 'Falcon';
       case 'NAGIOS_SERVER':
         return 'Nagios Server';
       case 'GANGLIA_SERVER':

http://git-wip-us.apache.org/repos/asf/ambari/blob/6c6f0012/ambari-web/app/views/common/quick_view_link_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/quick_view_link_view.js b/ambari-web/app/views/common/quick_view_link_view.js
index 49fb973..44ff075 100644
--- a/ambari-web/app/views/common/quick_view_link_view.js
+++ b/ambari-web/app/views/common/quick_view_link_view.js
@@ -128,6 +128,9 @@ App.QuickViewLinks = Em.View.extend({
       case "MAPREDUCE2":
         host = this.findComponentHost('HISTORYSERVER');
         break;
+      case "FALCON":
+        host = this.findComponentHost('FALCON_SERVER');
+        break;
       case "STORM":
         host = this.findComponentHost('NIMBUS');
         break;

http://git-wip-us.apache.org/repos/asf/ambari/blob/6c6f0012/ambari-web/app/views/main/menu.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/menu.js b/ambari-web/app/views/main/menu.js
index ccd3316..0664e4d 100644
--- a/ambari-web/app/views/main/menu.js
+++ b/ambari-web/app/views/main/menu.js
@@ -33,7 +33,7 @@ App.MainMenuView = Em.CollectionView.extend({
       { label:Em.I18n.t('menu.item.hosts'), routing:'hosts'}
     ];
 
-    if (App.supports.mirroring) {
+    if (App.supports.mirroring && App.Service.find().findProperty('serviceName', 'FALCON')) {
       result.push({ label:Em.I18n.t('menu.item.mirroring'), routing:'mirroring'});
     }
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/6c6f0012/ambari-web/app/views/main/service/info/summary.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/service/info/summary.js b/ambari-web/app/views/main/service/info/summary.js
index 730b5eb..9f6d953 100644
--- a/ambari-web/app/views/main/service/info/summary.js
+++ b/ambari-web/app/views/main/service/info/summary.js
@@ -47,6 +47,7 @@ App.MainServiceInfoSummaryView = Em.View.extend({
     nagios:false,
     hue: false,
     flume: false,
+    falcon: false,
     storm: false
   },