You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ja...@apache.org on 2015/05/01 01:34:49 UTC

ambari git commit: AMBARI-10878. Create Widget: Integrate creating widgets comprising of host component metrics. (jaimin)

Repository: ambari
Updated Branches:
  refs/heads/trunk 8e39a705c -> 61dc3344a


AMBARI-10878. Create Widget: Integrate creating widgets comprising of host component metrics. (jaimin)


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

Branch: refs/heads/trunk
Commit: 61dc3344a55e90bf2f5a9d513d7925c7e8d2ddce
Parents: 8e39a70
Author: Jaimin Jetly <ja...@hortonworks.com>
Authored: Thu Apr 30 16:34:30 2015 -0700
Committer: Jaimin Jetly <ja...@hortonworks.com>
Committed: Thu Apr 30 16:34:37 2015 -0700

----------------------------------------------------------------------
 .../service/widgets/create/wizard_controller.js | 25 ++++++++++++++++++--
 .../app/mixins/common/widgets/widget_mixin.js   |  9 +++++++
 ambari-web/app/models/service/yarn.js           | 10 ++++++--
 .../service/widgets/create/expression_view.js   | 21 ++++++++++++----
 4 files changed, 56 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/61dc3344/ambari-web/app/controllers/main/service/widgets/create/wizard_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/service/widgets/create/wizard_controller.js b/ambari-web/app/controllers/main/service/widgets/create/wizard_controller.js
index 263f8d8..edb1b13 100644
--- a/ambari-web/app/controllers/main/service/widgets/create/wizard_controller.js
+++ b/ambari-web/app/controllers/main/service/widgets/create/wizard_controller.js
@@ -220,6 +220,7 @@ App.WidgetWizardController = App.WizardController.extend({
    * @param {object} json
    */
   loadAllMetricsFromServerCallback: function (json) {
+    var self = this;
     var result = [];
     var metrics = {};
 
@@ -230,7 +231,7 @@ App.WidgetWizardController = App.WizardController.extend({
           for (var level in data[componentName]) {
             metrics = data[componentName][level][0]['metrics']['default'];
             for (var widgetId in metrics) {
-              result.push({
+              var metricObj = {
                 widget_id: widgetId,
                 point_in_time: metrics[widgetId].pointInTime,
                 temporal: metrics[widgetId].temporal,
@@ -239,7 +240,11 @@ App.WidgetWizardController = App.WizardController.extend({
                 type: data[componentName][level][0]["type"].toUpperCase(),
                 component_name: componentName,
                 service_name: service.StackServices.service_name
-              });
+              };
+              result.push(metricObj);
+              if (metricObj.level === 'HOSTCOMPONENT') {
+                self.insertHostComponentCriteria(metricObj);
+              }
             }
           }
         }
@@ -249,6 +254,22 @@ App.WidgetWizardController = App.WizardController.extend({
   },
 
   /**
+   *
+   * @param metricObj {Object}
+   */
+  insertHostComponentCriteria: function (metricObj) {
+    switch (metricObj.component_name) {
+      case 'NAMENODE':
+        metricObj.host_component_criteria = 'host_components/metrics/dfs/FSNamesystem/HAState=active';
+        break;
+      case 'RESOURCEMANAGER':
+        metricObj.host_component_criteria = 'host_components/HostRoles/ha_state=ACTIVE';
+        break;
+      default:
+    }
+  },
+
+  /**
    * post widget definition to server
    * @returns {$.ajax}
    */

http://git-wip-us.apache.org/repos/asf/ambari/blob/61dc3344/ambari-web/app/mixins/common/widgets/widget_mixin.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mixins/common/widgets/widget_mixin.js b/ambari-web/app/mixins/common/widgets/widget_mixin.js
index 23f3c9f..ada72c9 100644
--- a/ambari-web/app/mixins/common/widgets/widget_mixin.js
+++ b/ambari-web/app/mixins/common/widgets/widget_mixin.js
@@ -155,6 +155,15 @@ App.WidgetMixin = Ember.Mixin.create({
           }
         }
         break;
+      case 'RESOURCEMANAGER':
+        if (metric.host_component_criteria === 'host_components/HostRoles/ha_state=ACTIVE') {
+          //if (metric.host_component_criteria)
+          var yarn = App.YARNService.find().objectAt(0);
+          if (!yarn.get('isRMHaEnabled')) {
+            metric.host_component_criteria = 'host_components/HostRoles/component_name=RESOURCEMANAGER';
+          }
+        }
+        break;
     }
   },
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/61dc3344/ambari-web/app/models/service/yarn.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/service/yarn.js b/ambari-web/app/models/service/yarn.js
index 0c38d89..eb33886 100644
--- a/ambari-web/app/models/service/yarn.js
+++ b/ambari-web/app/models/service/yarn.js
@@ -23,6 +23,12 @@ App.YARNService = App.Service.extend({
   resourceManager: function() {
     return this.get('hostComponents').findProperty('componentName', 'RESOURCEMANAGER');
   }.property('hostComponents'),
+  isRMHaEnabled: function() {
+    return this.get('hostComponents').filterProperty('componentName', 'RESOURCEMANAGER').length > 1;
+  }.property('hostComponents'),
+  activeResourceManager: function() {
+    return this.get('hostComponents').filterProperty('componentName', 'RESOURCEMANAGER').findProperty('haStatus', 'ACTIVE');
+  }.property('hostComponents'),
   appTimelineServer: function() {
     return this.get('hostComponents').findProperty('componentName', 'APP_TIMELINE_SERVER');
   }.property('hostComponents'),
@@ -44,9 +50,9 @@ App.YARNService = App.Service.extend({
   appsKilled: DS.attr('number'),
   appsFailed: DS.attr('number'),
   ahsWebPort: function() {
-    var yarnConf = App.db.getConfigs().findProperty('type', 'yarn-site')
+    var yarnConf = App.db.getConfigs().findProperty('type', 'yarn-site');
     if(yarnConf){
-      return yarnConf.properties['yarn.timeline-service.webapp.address'].match(/:(\d+)/)[1];;
+      return yarnConf.properties['yarn.timeline-service.webapp.address'].match(/:(\d+)/)[1];
     }
     return "8188";
   }.property(),

http://git-wip-us.apache.org/repos/asf/ambari/blob/61dc3344/ambari-web/app/views/main/service/widgets/create/expression_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/service/widgets/create/expression_view.js b/ambari-web/app/views/main/service/widgets/create/expression_view.js
index d311403..8e8b8ce 100644
--- a/ambari-web/app/views/main/service/widgets/create/expression_view.js
+++ b/ambari-web/app/views/main/service/widgets/create/expression_view.js
@@ -195,13 +195,19 @@ App.WidgetWizardExpressionView = Em.View.extend({
             placeholder_text: Em.I18n.t('dashboard.widgets.wizard.step2.selectMetric'),
             no_results_text: Em.I18n.t('widget.create.wizard.step2.noMetricFound')
           }).change(function (event, obj) {
-            self.set('parentView.selectedMetric', Em.Object.create({
+            var filteredComponentMetrics = self.get('controller.filteredMetrics').filterProperty('component_name', self.get('selectedComponent.componentName')).filterProperty('level',self.get('selectedComponent.level'));
+            var filteredMetric = filteredComponentMetrics.findProperty('name', obj.selected);
+            var selectedMetric =  Em.Object.create({
               name: obj.selected,
               componentName: self.get('selectedComponent.componentName'),
               serviceName: self.get('selectedComponent.serviceName'),
-              metricPath: self.get('controller.filteredMetrics').findProperty('name', obj.selected).widget_id,
+              metricPath: filteredMetric.widget_id,
               isMetric: true
-            }));
+            });
+            if (self.get('selectedComponent.hostComponentCriteria')) {
+              selectedMetric.hostComponentCriteria = self.get('selectedComponent.hostComponentCriteria');
+            }
+            self.set('parentView.selectedMetric', selectedMetric);
           });
         },
 
@@ -271,6 +277,7 @@ App.WidgetWizardExpressionView = Em.View.extend({
                   component_name: metric.component_name,
                   level: metric.level,
                   count: 1,
+                  hostComponentCriteria: metric.host_component_criteria,
                   metrics: [metric.name]
                 };
               }
@@ -290,7 +297,7 @@ App.WidgetWizardExpressionView = Em.View.extend({
               if (servicesMap[serviceName].components[componentId].component_name === 'HBASE_MASTER' &&
                 servicesMap[serviceName].components[componentId].level === 'HOSTCOMPONENT') continue;
 
-              components.push(Em.Object.create({
+              var component = Em.Object.create({
                 componentName: servicesMap[serviceName].components[componentId].component_name,
                 level: servicesMap[serviceName].components[componentId].level,
                 displayName: function() {
@@ -307,7 +314,11 @@ App.WidgetWizardExpressionView = Em.View.extend({
                 selected: false,
                 id: componentId,
                 serviceName: serviceName
-              }));
+              });
+              if (component.get('level') === 'HOSTCOMPONENT') {
+                component.set('hostComponentCriteria', servicesMap[serviceName].components[componentId].hostComponentCriteria);
+              }
+              components.push(component);
             }
             result.push(Em.Object.create({
               serviceName: serviceName,