You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by xi...@apache.org on 2014/01/29 23:54:37 UTC
git commit: AMBARI-4462. Add ability to decom/recom RegionServer from
Host Details page.
Updated Branches:
refs/heads/trunk 32f1ab98a -> dd9ec5a9f
AMBARI-4462. Add ability to decom/recom RegionServer from Host Details page.
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/dd9ec5a9
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/dd9ec5a9
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/dd9ec5a9
Branch: refs/heads/trunk
Commit: dd9ec5a9fa99cd190ba2c6634eacd5f1e97a2199
Parents: 32f1ab9
Author: Xi Wang <xi...@apache.org>
Authored: Wed Jan 29 11:28:06 2014 -0800
Committer: Xi Wang <xi...@apache.org>
Committed: Wed Jan 29 14:54:16 2014 -0800
----------------------------------------------------------------------
ambari-web/app/controllers/main/host/details.js | 6 +-
ambari-web/app/messages.js | 2 +-
ambari-web/app/templates/main/host/summary.hbs | 56 +++++++++------
ambari-web/app/utils/ajax.js | 2 +-
ambari-web/app/views/main/host/summary.js | 73 ++++++++++++++++----
5 files changed, 99 insertions(+), 40 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/dd9ec5a9/ambari-web/app/controllers/main/host/details.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/host/details.js b/ambari-web/app/controllers/main/host/details.js
index 73fa87a..f749e44 100644
--- a/ambari-web/app/controllers/main/host/details.js
+++ b/ambari-web/app/controllers/main/host/details.js
@@ -755,7 +755,7 @@ App.MainHostDetailsController = Em.Controller.extend({
sender: this,
data: {
intervalTimeSeconds: 1,
- toleratePercentage : 50,
+ tolerateSize : 0,
batches:[
{
"order_id" : 1,
@@ -835,7 +835,7 @@ App.MainHostDetailsController = Em.Controller.extend({
sender: this,
data: {
intervalTimeSeconds: 1,
- toleratePercentage : 50,
+ tolerateSize : 1,
batches:[
{
"order_id" : 1,
@@ -885,7 +885,7 @@ App.MainHostDetailsController = Em.Controller.extend({
sender: this,
data: {
intervalTimeSeconds: 1,
- toleratePercentage : 50,
+ tolerateSize : 1,
batches:[
{
"order_id" : 1,
http://git-wip-us.apache.org/repos/asf/ambari/blob/dd9ec5a9/ambari-web/app/messages.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js
index aed505e..46f37b6 100644
--- a/ambari-web/app/messages.js
+++ b/ambari-web/app/messages.js
@@ -1415,7 +1415,7 @@ Em.I18n.translations = {
'hosts.host.regionserver.decommission.batch1':'Decommission RegionServer - Turn drain mode on',
'hosts.host.regionserver.decommission.batch2':'Decommission RegionServer - Stop RegionServer',
'hosts.host.regionserver.decommission.batch3':'Decommission RegionServer - Turn drain mode off',
- 'hosts.host.regionserver.recommission':'Recommission HBase RegionServer',
+ 'hosts.host.hbase_regionserver.recommission':'Recommission HBase RegionServer',
'hosts.host.decommissioned':'Decommissioned',
'hosts.host.decommissioning':'Decommissioning...',
http://git-wip-us.apache.org/repos/asf/ambari/blob/dd9ec5a9/ambari-web/app/templates/main/host/summary.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/host/summary.hbs b/ambari-web/app/templates/main/host/summary.hbs
index 282da83..ffd4c9f 100644
--- a/ambari-web/app/templates/main/host/summary.hbs
+++ b/ambari-web/app/templates/main/host/summary.hbs
@@ -92,34 +92,50 @@
{{/if}}
{{#if view.isNodeManager}}
{{#if view.isNodeManagerDecommissionAvailable}}
- <li {{bindAttr class="view.noActionAvailable"}}>
- <a href="javascript:void(null)" data-toggle="modal" {{action "decommission" view.content target="controller"}}>
- {{t common.decommission}}
- </a>
- </li>
+ <li {{bindAttr class="view.noActionAvailable"}}>
+ <a href="javascript:void(null)" data-toggle="modal" {{action "decommission" view.content target="controller"}}>
+ {{t common.decommission}}
+ </a>
+ </li>
{{/if}}
{{#if view.isNodeManagerRecommissionAvailable}}
- <li {{bindAttr class="view.noActionAvailable"}}>
- <a href="javascript:void(null)" data-toggle="modal" {{action "recommission" view.content target="controller"}}>
- {{t common.recommission}}
- </a>
- </li>
+ <li {{bindAttr class="view.noActionAvailable"}}>
+ <a href="javascript:void(null)" data-toggle="modal" {{action "recommission" view.content target="controller"}}>
+ {{t common.recommission}}
+ </a>
+ </li>
{{/if}}
{{/if}}
{{#if view.isTaskTracker}}
{{#if view.isTaskTrackerDecommissionAvailable}}
- <li {{bindAttr class="view.noActionAvailable"}}>
- <a href="javascript:void(null)" data-toggle="modal" {{action "decommission" view.content target="controller"}}>
- {{t common.decommission}}
- </a>
- </li>
+ <li {{bindAttr class="view.noActionAvailable"}}>
+ <a href="javascript:void(null)" data-toggle="modal" {{action "decommission" view.content target="controller"}}>
+ {{t common.decommission}}
+ </a>
+ </li>
{{/if}}
{{#if view.isTaskTrackerRecommissionAvailable}}
- <li {{bindAttr class="view.noActionAvailable"}}>
- <a href="javascript:void(null)" data-toggle="modal" {{action "recommission" view.content target="controller"}}>
- {{t common.recommission}}
- </a>
- </li>
+ <li {{bindAttr class="view.noActionAvailable"}}>
+ <a href="javascript:void(null)" data-toggle="modal" {{action "recommission" view.content target="controller"}}>
+ {{t common.recommission}}
+ </a>
+ </li>
+ {{/if}}
+ {{/if}}
+ {{#if view.isRegionServer}}
+ {{#if view.isRegionServerDecommissionAvailable}}
+ <li {{bindAttr class="view.noActionAvailable"}}>
+ <a href="javascript:void(null)" data-toggle="modal" {{action "decommission" view.content target="controller"}}>
+ {{t common.decommission}}
+ </a>
+ </li>
+ {{/if}}
+ {{#if view.isRegionServerRecommissionAvailable}}
+ <li {{bindAttr class="view.noActionAvailable"}}>
+ <a href="javascript:void(null)" data-toggle="modal" {{action "recommission" view.content target="controller"}}>
+ {{t common.recommission}}
+ </a>
+ </li>
{{/if}}
{{/if}}
{{#if view.isDeletableComponent}}
http://git-wip-us.apache.org/repos/asf/ambari/blob/dd9ec5a9/ambari-web/app/utils/ajax.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/ajax.js b/ambari-web/app/utils/ajax.js
index 2edb3a3..aa07c7f 100644
--- a/ambari-web/app/utils/ajax.js
+++ b/ambari-web/app/utils/ajax.js
@@ -381,7 +381,7 @@ var urls = {
}, {
"batch_settings" : {
"batch_separation_in_seconds" : data.intervalTimeSeconds,
- "task_failure_tolerance" : data.toleratePercentage
+ "task_failure_tolerance" : data.tolerateSize
}
} ]
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/dd9ec5a9/ambari-web/app/views/main/host/summary.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/host/summary.js b/ambari-web/app/views/main/host/summary.js
index 67d5f1c..5d64894 100644
--- a/ambari-web/app/views/main/host/summary.js
+++ b/ambari-web/app/views/main/host/summary.js
@@ -46,9 +46,6 @@ App.MainHostSummaryView = Em.View.extend({
}.property('content.componentsWithStaleConfigsCount'),
didInsertElement: function () {
- //if (this.get('content.hostComponents').someProperty('componentName', 'DATANODE')) {
- //this.loadDecommissionNodesList();
- //}
this.addToolTip();
},
addToolTip: function() {
@@ -239,6 +236,9 @@ App.MainHostSummaryView = Em.View.extend({
if (this.get('isTaskTracker')){
this.loadTaskTrackerDecommissionStatus();
}
+ if (this.get('isRegionServer')){
+ this.loadRegionServerDecommissionStatus();
+ }
},
hostComponent: function () {
var hostComponent = null;
@@ -280,9 +280,17 @@ App.MainHostSummaryView = Em.View.extend({
if(this.get("isTaskTracker") && this.get('isTaskTrackerRecommissionAvailable')){
componentTextStatus = Em.I18n.t('hosts.host.decommissioned');
}
+ if(this.get("isRegionServer") && this.get('isRegionServerRecommissionAvailable')){
+ if(this.get('isRegionServerDecommissioning')){
+ componentTextStatus = Em.I18n.t('hosts.host.decommissioning');
+ } else {
+ componentTextStatus = Em.I18n.t('hosts.host.decommissioned');
+ }
+ }
}
return componentTextStatus;
- }.property('workStatus','isDataNodeRecommissionAvailable', 'isDataNodeDecommissioning', 'isNodeManagerRecommissionAvailable','isTaskTrackerRecommissionAvailable'),
+ }.property('workStatus','isDataNodeRecommissionAvailable', 'isDataNodeDecommissioning', 'isNodeManagerRecommissionAvailable',
+ 'isTaskTrackerRecommissionAvailable', 'isRegionServerRecommissionAvailable', 'isRegionServerDecommissioning'),
statusClass: function () {
//If the component is DataNode
@@ -306,6 +314,13 @@ App.MainHostSummaryView = Em.View.extend({
}
}
+ //If the component is RegionServer
+ if (this.get('isRegionServer')) {
+ if (this.get('isRegionServerRecommissionAvailable') && (this.get('isStart') || this.get('workStatus') == 'INSTALLED')) {
+ return 'health-status-DEAD-ORANGE';
+ }
+ }
+
//Class when install failed
if (this.get('workStatus') === App.HostComponentStatus.install_failed) {
return 'health-status-color-red icon-cog';
@@ -323,7 +338,8 @@ App.MainHostSummaryView = Em.View.extend({
//For all other cases
return 'health-status-' + App.HostComponentStatus.getKeyName(this.get('workStatus'));
- }.property('content.passiveState','workStatus', 'isDataNodeRecommissionAvailable', 'isNodeManagerRecommissionAvailable', 'isTaskTrackerRecommissionAvailable'),
+
+ }.property('content.passiveState','workStatus', 'isDataNodeRecommissionAvailable', 'isNodeManagerRecommissionAvailable', 'isTaskTrackerRecommissionAvailable', 'isRegionServerRecommissionAvailable'),
disabled: function () {
return (this.get('parentView.content.healthClass') === "health-status-DEAD-YELLOW") ? 'disabled' : '';
@@ -347,9 +363,9 @@ App.MainHostSummaryView = Em.View.extend({
var workStatus = this.get('workStatus');
var self = this;
var pulsate = [ App.HostComponentStatus.starting, App.HostComponentStatus.stopping, App.HostComponentStatus.installing].contains(workStatus);
- if (!pulsate && this.get('isDataNode')) {
- var dataNodeComponent = this.get('content');
- if (dataNodeComponent && workStatus != "INSTALLED") {
+ if (!pulsate && (this.get('isDataNode') || this.get('isRegionServer'))) {
+ var component = this.get('content');
+ if (component && workStatus != "INSTALLED") {
pulsate = this.get('isDecommissioning');
}
}
@@ -368,7 +384,7 @@ App.MainHostSummaryView = Em.View.extend({
this.$('.components-health').stop(true, true);
this.$('.components-health').css({opacity: 1.0});
this.doBlinking();
- }.observes('workStatus','isDataNodeRecommissionAvailable', 'isDecommissioning'),
+ }.observes('workStatus','isDataNodeRecommissionAvailable', 'isDecommissioning', 'isRegionServerRecommissionAvailable'),
isStart: function () {
return (this.get('workStatus') == App.HostComponentStatus.started || this.get('workStatus') == App.HostComponentStatus.starting);
@@ -418,14 +434,12 @@ App.MainHostSummaryView = Em.View.extend({
isDecommissioning: function () {
- //the slaves is decommissioning.
- return this.get('isDataNode') && this.get("isDataNodeDecommissioning");
- }.property("workStatus", "isDataNodeDecommissioning"),
+ return (this.get('isDataNode') && this.get("isDataNodeDecommissioning")) || (this.get('isRegionServer') && this.get("isRegionServerDecommissioning"));
+ }.property("workStatus", "isDataNodeDecommissioning", "isRegionServerDecommissioning"),
isDataNodeDecommissioning: null,
isDataNodeDecommissionAvailable: null,
isDataNodeRecommissionAvailable: null,
-
/**
* load Recommission/Decommission status from adminState of each live node
*/
@@ -593,7 +607,6 @@ App.MainHostSummaryView = Em.View.extend({
isNodeManagerDecommissionAvailable: null,
isNodeManagerRecommissionAvailable: null,
-
/**
* load Recommission/Decommission status for nodeManager from nodeManagers list
*/
@@ -659,7 +672,6 @@ App.MainHostSummaryView = Em.View.extend({
isTaskTrackerDecommissionAvailable: null,
isTaskTrackerRecommissionAvailable: null,
-
/**
* load Recommission/Decommission status for TaskTracker from JobTracker/AliveNodes list
*/
@@ -725,6 +737,37 @@ App.MainHostSummaryView = Em.View.extend({
});
},
+ isRegionServerDecommissioning: null,
+ isRegionServerDecommissionAvailable: null,
+ isRegionServerRecommissionAvailable: null,
+ /**
+ * load Recommission/Decommission status of RegionServer
+ */
+ loadRegionServerDecommissionStatus: function () {
+ var clusterName = App.router.get('clusterController.clusterName');
+ var hostName = App.router.get('mainHostDetailsController.content.hostName');
+ var slaveType = 'HBASE_REGIONSERVER';
+ var self = this;
+ var deferred = $.Deferred();
+ self.getDesiredAdminState(clusterName, hostName, slaveType).done( function () {
+ var desired_admin_state = self.get('desiredAdminState');
+ self.set('desiredAdminState', null);
+ switch(desired_admin_state) {
+ case "INSERVICE":
+ self.set('isRegionServerRecommissionAvailable', false);
+ self.set('isRegionServerDecommissioning', false);
+ self.set('isRegionServerDecommissionAvailable', self.get('isStart'));
+ break;
+ case "DECOMMISSIONED":
+ self.set('isRegionServerRecommissionAvailable', true);
+ self.set('isRegionServerDecommissioning', self.get('isStart'));
+ self.set('isRegionServerDecommissionAvailable', false);
+ break;
+ }
+ deferred.resolve(desired_admin_state);
+ });
+ return deferred.promise();
+ }.observes('App.router.mainHostDetailsController.content'),
/**
* Shows whether we need to show Delete button