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,