You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ab...@apache.org on 2015/01/09 14:41:02 UTC
[1/2] ambari git commit: AMBARI-9059 Show Upgrade progress in top
nav. (ababiichuk)
Repository: ambari
Updated Branches:
refs/heads/trunk 01b86400d -> c1fd867e2
AMBARI-9059 Show Upgrade progress in top nav. (ababiichuk)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/c1fd867e
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/c1fd867e
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/c1fd867e
Branch: refs/heads/trunk
Commit: c1fd867e29d629b79a9c08f171e7eb9778673e00
Parents: 39aeeb0
Author: aBabiichuk <ab...@cybervisiontech.com>
Authored: Fri Jan 9 15:03:11 2015 +0200
Committer: aBabiichuk <ab...@cybervisiontech.com>
Committed: Fri Jan 9 15:41:00 2015 +0200
----------------------------------------------------------------------
ambari-web/app/app.js | 17 ++
.../background_operations/list_on_start.json | 237 +++++++++++++++++--
.../global/background_operations_controller.js | 13 +
ambari-web/app/messages.js | 2 +
ambari-web/app/styles/application.less | 47 ++++
ambari-web/app/templates/application.hbs | 8 +
.../global/background_operations_test.js | 34 +++
7 files changed, 340 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/c1fd867e/ambari-web/app/app.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/app.js b/ambari-web/app/app.js
index 2f12795..3466f28 100644
--- a/ambari-web/app/app.js
+++ b/ambari-web/app/app.js
@@ -48,6 +48,23 @@ module.exports = Em.Application.create({
upgradeState: 'INIT',
/**
+ * flag is true when upgrade process is running
+ * @returns {boolean}
+ */
+ upgradeInProgress: function() {
+ return ["IN_PROGRESS"].contains(this.get('upgradeState'));
+ }.property('upgradeState'),
+
+ /**
+ * flag is true when upgrade process is waiting for user action
+ * to procced, retry, perform manual steps etc.
+ * @returns {boolean}
+ */
+ upgradeHolding: function() {
+ return this.get('upgradeState').contains("HOLDING");
+ }.property('upgradeState'),
+
+ /**
* compute user access rights by permission type
* types:
* - ADMIN
http://git-wip-us.apache.org/repos/asf/ambari/blob/c1fd867e/ambari-web/app/assets/data/background_operations/list_on_start.json
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/data/background_operations/list_on_start.json b/ambari-web/app/assets/data/background_operations/list_on_start.json
index 57a974c..7d47c15 100644
--- a/ambari-web/app/assets/data/background_operations/list_on_start.json
+++ b/ambari-web/app/assets/data/background_operations/list_on_start.json
@@ -1,55 +1,256 @@
{
- "href" : "http://192.168.56.101:8080/api/v1/clusters/perf/requests?to=end&page_size=10&fields=Requests",
+ "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/requests?to=end&page_size=10&fields=Requests&_=1420804171828",
+ "itemTotal" : "10",
"items" : [
{
- "href" : "http://192.168.56.101:8080/api/v1/clusters/c1/requests/12",
+ "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/requests/17",
"Requests" : {
"aborted_task_count" : 0,
"cluster_name" : "c1",
- "completed_task_count" : 2,
- "create_time" : 1414410974460,
- "end_time" : 1414411113883,
+ "completed_task_count" : 3,
+ "create_time" : 1420732929053,
+ "end_time" : 1420733166162,
"exclusive" : false,
"failed_task_count" : 0,
- "id" : 12,
+ "id" : 17,
"inputs" : null,
"operation_level" : null,
"progress_percent" : 100.0,
"queued_task_count" : 0,
- "request_context" : "Install Services",
+ "request_context" : "Distribute repositories/install packages",
"request_schedule" : null,
"request_status" : "COMPLETED",
"resource_filters" : [ ],
- "start_time" : 1414410974489,
- "task_count" : 2,
+ "start_time" : 1420732929071,
+ "task_count" : 3,
"timed_out_task_count" : 0,
"type" : "INTERNAL_REQUEST"
}
},
{
- "href" : "http://192.168.56.101:8080/api/v1/clusters/c1/requests/13",
+ "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/requests/18",
"Requests" : {
"aborted_task_count" : 0,
"cluster_name" : "c1",
- "completed_task_count" : 2,
- "create_time" : 1414411114097,
- "end_time" : 1414411129173,
+ "completed_task_count" : 3,
+ "create_time" : 1420741144265,
+ "end_time" : 1420741162446,
"exclusive" : false,
"failed_task_count" : 0,
- "id" : 13,
+ "id" : 18,
"inputs" : null,
"operation_level" : null,
"progress_percent" : 100.0,
"queued_task_count" : 0,
- "request_context" : "Start Added Services",
+ "request_context" : "Distribute repositories/install packages",
"request_schedule" : null,
"request_status" : "COMPLETED",
"resource_filters" : [ ],
- "start_time" : 1414411114179,
- "task_count" : 2,
+ "start_time" : 1420741144295,
+ "task_count" : 3,
+ "timed_out_task_count" : 0,
+ "type" : "INTERNAL_REQUEST"
+ }
+ },
+ {
+ "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/requests/19",
+ "Requests" : {
+ "aborted_task_count" : 20,
+ "cluster_name" : "c1",
+ "completed_task_count" : 21,
+ "create_time" : 1420741278556,
+ "end_time" : 1420742042708,
+ "exclusive" : false,
+ "failed_task_count" : 1,
+ "id" : 19,
+ "inputs" : null,
+ "operation_level" : null,
+ "progress_percent" : 100.0,
+ "queued_task_count" : 0,
+ "request_context" : "Upgrading to 2.2.4.3-885",
+ "request_schedule" : null,
+ "request_status" : "FAILED",
+ "resource_filters" : [ ],
+ "start_time" : 1420741278615,
+ "task_count" : 21,
+ "timed_out_task_count" : 0,
+ "type" : "INTERNAL_REQUEST"
+ }
+ },
+ {
+ "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/requests/20",
+ "Requests" : {
+ "aborted_task_count" : 20,
+ "cluster_name" : "c1",
+ "completed_task_count" : 21,
+ "create_time" : 1420742881366,
+ "end_time" : 1420742911600,
+ "exclusive" : false,
+ "failed_task_count" : 1,
+ "id" : 20,
+ "inputs" : null,
+ "operation_level" : null,
+ "progress_percent" : 100.0,
+ "queued_task_count" : 0,
+ "request_context" : "Upgrading to 2.2.0.1-885",
+ "request_schedule" : null,
+ "request_status" : "FAILED",
+ "resource_filters" : [ ],
+ "start_time" : 1420742881426,
+ "task_count" : 21,
+ "timed_out_task_count" : 0,
+ "type" : "INTERNAL_REQUEST"
+ }
+ },
+ {
+ "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/requests/21",
+ "Requests" : {
+ "aborted_task_count" : 20,
+ "cluster_name" : "c1",
+ "completed_task_count" : 20,
+ "create_time" : 1420743882836,
+ "end_time" : 1420801978445,
+ "exclusive" : false,
+ "failed_task_count" : 0,
+ "id" : 21,
+ "inputs" : null,
+ "operation_level" : null,
+ "progress_percent" : 98.57142857142857,
+ "queued_task_count" : 0,
+ "request_context" : "Upgrading to 2.2.0.1-885",
+ "request_schedule" : null,
+ "request_status" : "HOLDING_FAILED",
+ "resource_filters" : [ ],
+ "start_time" : 1420743882894,
+ "task_count" : 21,
+ "timed_out_task_count" : 0,
+ "type" : "INTERNAL_REQUEST"
+ }
+ },
+ {
+ "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/requests/22",
+ "Requests" : {
+ "aborted_task_count" : 0,
+ "cluster_name" : "c1",
+ "completed_task_count" : 3,
+ "create_time" : 1420801929946,
+ "end_time" : 1420801992902,
+ "exclusive" : false,
+ "failed_task_count" : 0,
+ "id" : 22,
+ "inputs" : null,
+ "operation_level" : null,
+ "progress_percent" : 100.0,
+ "queued_task_count" : 0,
+ "request_context" : "Distribute repositories/install packages",
+ "request_schedule" : null,
+ "request_status" : "COMPLETED",
+ "resource_filters" : [ ],
+ "start_time" : 1420801978494,
+ "task_count" : 3,
+ "timed_out_task_count" : 0,
+ "type" : "INTERNAL_REQUEST"
+ }
+ },
+ {
+ "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/requests/23",
+ "Requests" : {
+ "aborted_task_count" : 20,
+ "cluster_name" : "c1",
+ "completed_task_count" : 21,
+ "create_time" : 1420802322402,
+ "end_time" : 1420802372784,
+ "exclusive" : false,
+ "failed_task_count" : 1,
+ "id" : 23,
+ "inputs" : null,
+ "operation_level" : null,
+ "progress_percent" : 100.0,
+ "queued_task_count" : 0,
+ "request_context" : "Upgrading to 2.2.0-2041",
+ "request_schedule" : null,
+ "request_status" : "FAILED",
+ "resource_filters" : [ ],
+ "start_time" : 1420802322463,
+ "task_count" : 21,
+ "timed_out_task_count" : 0,
+ "type" : "INTERNAL_REQUEST"
+ }
+ },
+ {
+ "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/requests/24",
+ "Requests" : {
+ "aborted_task_count" : 0,
+ "cluster_name" : "c1",
+ "completed_task_count" : 3,
+ "create_time" : 1420802446657,
+ "end_time" : 1420802467535,
+ "exclusive" : false,
+ "failed_task_count" : 0,
+ "id" : 24,
+ "inputs" : null,
+ "operation_level" : null,
+ "progress_percent" : 100.0,
+ "queued_task_count" : 0,
+ "request_context" : "Distribute repositories/install packages",
+ "request_schedule" : null,
+ "request_status" : "COMPLETED",
+ "resource_filters" : [ ],
+ "start_time" : 1420802446679,
+ "task_count" : 3,
+ "timed_out_task_count" : 0,
+ "type" : "INTERNAL_REQUEST"
+ }
+ },
+ {
+ "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/requests/25",
+ "Requests" : {
+ "aborted_task_count" : 20,
+ "cluster_name" : "c1",
+ "completed_task_count" : 21,
+ "create_time" : 1420802506244,
+ "end_time" : 1420802526532,
+ "exclusive" : false,
+ "failed_task_count" : 1,
+ "id" : 25,
+ "inputs" : null,
+ "operation_level" : null,
+ "progress_percent" : 100.0,
+ "queued_task_count" : 0,
+ "request_context" : "Upgrading to 2.2.0-2041",
+ "request_schedule" : null,
+ "request_status" : "FAILED",
+ "resource_filters" : [ ],
+ "start_time" : 1420802506371,
+ "task_count" : 21,
+ "timed_out_task_count" : 0,
+ "type" : "INTERNAL_REQUEST"
+ }
+ },
+ {
+ "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/requests/26",
+ "Requests" : {
+ "aborted_task_count" : 0,
+ "cluster_name" : "c1",
+ "completed_task_count" : 9,
+ "create_time" : 1420802576635,
+ "end_time" : -1,
+ "exclusive" : false,
+ "failed_task_count" : 2,
+ "id" : 26,
+ "inputs" : null,
+ "operation_level" : null,
+ "progress_percent" : 42.857142857142854,
+ "queued_task_count" : 0,
+ "request_context" : "Upgrading to 2.2.1.0-2191",
+ "request_schedule" : null,
+ "request_status" : "FAILED",
+ "resource_filters" : [ ],
+ "start_time" : 1420802576700,
+ "task_count" : 21,
"timed_out_task_count" : 0,
"type" : "INTERNAL_REQUEST"
}
}
]
-}
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/c1fd867e/ambari-web/app/controllers/global/background_operations_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/global/background_operations_controller.js b/ambari-web/app/controllers/global/background_operations_controller.js
index e6461d6..328575f 100644
--- a/ambari-web/app/controllers/global/background_operations_controller.js
+++ b/ambari-web/app/controllers/global/background_operations_controller.js
@@ -189,6 +189,16 @@ App.BackgroundOperationsController = Em.Controller.extend({
},
/**
+ * returns true if it's upgrade equest
+ * use this flag to exclude upgrade requests from bgo
+ * @param {object} request
+ * @returns {boolean}
+ */
+ isUpgradeRequest: function(request) {
+ var context = Em.get(request, 'Requests.request_context');
+ return context ? context.toLowerCase().contains('upgrading') : false;
+ },
+ /**
* Prepare, received from server, requests for host component popup
* @param data
*/
@@ -199,6 +209,9 @@ App.BackgroundOperationsController = Em.Controller.extend({
var countGot = data.itemTotal;
data.items.forEach(function (request) {
+ if (this.isUpgradeRequest(request)) {
+ return;
+ }
var rq = this.get("services").findProperty('id', request.Requests.id);
var isRunning = this.isRequestRunning(request);
var requestParams = this.parseRequestContext(request.Requests.request_context);
http://git-wip-us.apache.org/repos/asf/ambari/blob/c1fd867e/ambari-web/app/messages.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js
index 947110e..e8dc05b 100644
--- a/ambari-web/app/messages.js
+++ b/ambari-web/app/messages.js
@@ -44,6 +44,8 @@ Em.I18n.translations = {
'app.aboutAmbari.getInvolved': 'Get involved!',
'app.aboutAmbari.version': 'Version',
'app.aboutAmbari.licensed': 'Licensed under the Apache License, Version 2.0',
+ 'app.upgrade.inProgress': 'Upgrade: In Process',
+ 'app.upgrade.holding': 'Upgrade: Action Required',
'apply':'apply',
'and':'and',
http://git-wip-us.apache.org/repos/asf/ambari/blob/c1fd867e/ambari-web/app/styles/application.less
----------------------------------------------------------------------
diff --git a/ambari-web/app/styles/application.less b/ambari-web/app/styles/application.less
index 1d793ff..3410a1b 100644
--- a/ambari-web/app/styles/application.less
+++ b/ambari-web/app/styles/application.less
@@ -22,6 +22,25 @@
@space-m: 10px;
@space-l: 20px;
+@-webkit-keyframes orangePulse {
+ from { background-color: #fdb82f; }
+ 50% { background-color: #fd910e; }
+ to { background-color: #fdb82f; }
+}
+
+@-moz-keyframes orangePulse {
+ from { background-color: #fdb82f; }
+ 50% { background-color: #fd910e; }
+ to { background-color: #fdb82f; }
+}
+
+@keyframes orangePulse
+{
+ 0% { background-color: #fdb82f; }
+ 50% { background-color: #fd910e; }
+ 100% { background-color: #fdb82f; }
+}
+
@-webkit-keyframes greenPulse {
from { background-color: #118fff; }
50% { background-color: #006DCC; }
@@ -217,6 +236,34 @@ footer {
animation-iteration-count: infinite;
}
+ .upgrade-in-progress {
+ text-shadow: none;
+ background-color: #006DCC;
+ -webkit-animation-name: greenPulse;
+ -webkit-animation-duration: 1s;
+ -webkit-animation-iteration-count: infinite;
+ -moz-animation-name: greenPulse;
+ -moz-animation-duration: 1s;
+ -moz-animation-iteration-count: infinite;
+ animation-name: greenPulse;
+ animation-duration: 1s;
+ animation-iteration-count: infinite;
+ }
+
+ .upgrade-holding {
+ text-shadow: none;
+ background-color: @health-status-orange;
+ -webkit-animation-name: orangePulse;
+ -webkit-animation-duration: 1s;
+ -webkit-animation-iteration-count: infinite;
+ -moz-animation-name: orangePulse;
+ -moz-animation-duration: 1s;
+ -moz-animation-iteration-count: infinite;
+ animation-name: orangePulse;
+ animation-duration: 1s;
+ animation-iteration-count: infinite;
+ }
+
}
.top-nav-menu.nav {
display: block;
http://git-wip-us.apache.org/repos/asf/ambari/blob/c1fd867e/ambari-web/app/templates/application.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/application.hbs b/ambari-web/app/templates/application.hbs
index bf123dd..7fc2606 100644
--- a/ambari-web/app/templates/application.hbs
+++ b/ambari-web/app/templates/application.hbs
@@ -44,6 +44,14 @@
{{allAlertsCount}} {{pluralize allAlertsCount singular="alert" plural="alerts"}}</span>
{{/if}}
{{/with}}
+ {{#if App.upgradeInProgress}}
+ <span class="label upgrade-in-progress" {{action "openUpgradeDialog" target="App.router.mainAdminStackAndUpgradeController"}}>
+ <i class="icon-cog"></i> {{t app.upgrade.inProgress}}</span>
+ {{/if}}
+ {{#if App.upgradeHolding}}
+ <span class="label upgrade-holding" {{action "openUpgradeDialog" target="App.router.mainAdminStackAndUpgradeController"}}>
+ <i class="icon-pause"></i> {{t app.upgrade.holding}}</span>
+ {{/if}}
</a>
{{else}}
<a class="logo"><img src="/img/logo-white.png" alt="Apache Ambari" title="Apache Ambari"></a>
http://git-wip-us.apache.org/repos/asf/ambari/blob/c1fd867e/ambari-web/test/controllers/global/background_operations_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/global/background_operations_test.js b/ambari-web/test/controllers/global/background_operations_test.js
index 5207040..51925b7 100644
--- a/ambari-web/test/controllers/global/background_operations_test.js
+++ b/ambari-web/test/controllers/global/background_operations_test.js
@@ -153,6 +153,25 @@ describe('App.BackgroundOperationsController', function () {
});
});
+ describe('#isUpgradeRequest', function() {
+
+ it('defines if request is upgrade task (true)', function() {
+ expect(controller.isUpgradeRequest({Requests: {request_context: "upgrading"}})).to.be.true;
+ });
+
+ it('defines if request is upgrade task (true - with uppercase)', function() {
+ expect(controller.isUpgradeRequest({Requests: {request_context: "UPGRADING"}})).to.be.true;
+ });
+
+ it('defines if request is upgrade task (false)', function() {
+ expect(controller.isUpgradeRequest({Requests: {request_context: "install"}})).to.be.false;
+ });
+
+ it('defines if request is upgrade task (false - invalid param)', function() {
+ expect(controller.isUpgradeRequest({Requests: {}})).to.be.false;
+ });
+ });
+
describe('#callBackForMostRecent()', function () {
it('No requests exists', function () {
var data = {
@@ -184,6 +203,21 @@ describe('App.BackgroundOperationsController', function () {
expect(controller.get("services").mapProperty('id')).to.eql([1]);
});
+ it('One request that is excluded', function () {
+ var data = {
+ items: [
+ {
+ Requests: {
+ id: 1,
+ request_context: 'upgrading'
+ }
+ }
+ ]
+ };
+ controller.callBackForMostRecent(data);
+ expect(controller.get("allOperationsCount")).to.equal(0);
+ expect(controller.get("services").mapProperty('id')).to.eql([]);
+ });
it('One running request', function () {
var data = {
[2/2] ambari git commit: AMBARI-9058 Rolling Upgrade UI allows
"Ignore and Process" when upgrade item is not skippable. (ababiichuk)
Posted by ab...@apache.org.
AMBARI-9058 Rolling Upgrade UI allows "Ignore and Process" when upgrade item is not skippable. (ababiichuk)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/39aeeb0e
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/39aeeb0e
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/39aeeb0e
Branch: refs/heads/trunk
Commit: 39aeeb0eee77cf6ec01cc681cf26fdc9ddea4522
Parents: 01b8640
Author: aBabiichuk <ab...@cybervisiontech.com>
Authored: Fri Jan 9 15:01:03 2015 +0200
Committer: aBabiichuk <ab...@cybervisiontech.com>
Committed: Fri Jan 9 15:41:00 2015 +0200
----------------------------------------------------------------------
.../app/assets/data/stack_versions/upgrade.json | 4 ++--
ambari-web/app/messages.js | 1 +
.../admin/stack_upgrade/stack_upgrade_wizard.hbs | 6 +++++-
.../main/admin/stack_upgrade/upgrade_wizard_view.js | 16 ++++++++++++++++
.../admin/stack_upgrade/upgrade_wizard_view_test.js | 13 +++++++++++++
5 files changed, 37 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/39aeeb0e/ambari-web/app/assets/data/stack_versions/upgrade.json
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/data/stack_versions/upgrade.json b/ambari-web/app/assets/data/stack_versions/upgrade.json
index d4dfc95..a8cecc3 100644
--- a/ambari-web/app/assets/data/stack_versions/upgrade.json
+++ b/ambari-web/app/assets/data/stack_versions/upgrade.json
@@ -15,7 +15,7 @@
"queued_task_count" : 0,
"request_context" : "Upgrading to 2.2.1.0-2191",
"request_id" : 26,
- "request_status" : "FAILED",
+ "request_status" : "IN_PROGRESS",
"resource_filters" : [ ],
"start_time" : 1420802576700,
"task_count" : 21,
@@ -355,7 +355,7 @@
"skippable" : false,
"stage_id" : 10,
"start_time" : 1420803704259,
- "status" : "IN_PROGRESS"
+ "status" : "HOLDING_FAILED"
},
"tasks" : [
{
http://git-wip-us.apache.org/repos/asf/ambari/blob/39aeeb0e/ambari-web/app/messages.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js
index 3fb544e..947110e 100644
--- a/ambari-web/app/messages.js
+++ b/ambari-web/app/messages.js
@@ -1335,6 +1335,7 @@ Em.I18n.translations = {
'admin.stackUpgrade.dialog.operationFailed': "This operation failed.",
'admin.stackUpgrade.dialog.stop': "Stop Upgrade",
'admin.stackUpgrade.dialog.continue': "Ignore and Proceed",
+ 'admin.stackUpgrade.dialog.cancel': "Cancel Upgrade",
'admin.stackUpgrade.dialog.inProgress': "Now Running:",
'admin.stackUpgrade.dialog.keepRunning': "Keep running Upgrade in background",
'admin.stackUpgrade.dialog.failed': "Failed on:",
http://git-wip-us.apache.org/repos/asf/ambari/blob/39aeeb0e/ambari-web/app/templates/main/admin/stack_upgrade/stack_upgrade_wizard.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/admin/stack_upgrade/stack_upgrade_wizard.hbs b/ambari-web/app/templates/main/admin/stack_upgrade/stack_upgrade_wizard.hbs
index d90eeb9..bca7dc8 100644
--- a/ambari-web/app/templates/main/admin/stack_upgrade/stack_upgrade_wizard.hbs
+++ b/ambari-web/app/templates/main/admin/stack_upgrade/stack_upgrade_wizard.hbs
@@ -64,7 +64,11 @@
</div>
{{#if view.isHoldingState}}
<div class="button-row">
- <button class="btn btn-warning" {{action continue view.failedItem target="view"}}>{{t admin.stackUpgrade.dialog.continue}}</button>
+ {{#if view.isSkipable}}
+ <button class="btn btn-warning" {{action continue view.failedItem target="view"}}>{{t admin.stackUpgrade.dialog.continue}}</button>
+ {{else}}
+ <button class="btn btn-danger" {{action cancel view.failedItem target="view"}}>{{t admin.stackUpgrade.dialog.cancel}}</button>
+ {{/if}}
<button class="btn" {{action retry view.failedItem target="view"}}>{{t common.retry}}</button>
</div>
{{/if}}
http://git-wip-us.apache.org/repos/asf/ambari/blob/39aeeb0e/ambari-web/app/views/main/admin/stack_upgrade/upgrade_wizard_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/admin/stack_upgrade/upgrade_wizard_view.js b/ambari-web/app/views/main/admin/stack_upgrade/upgrade_wizard_view.js
index e20c465..d4e819c 100644
--- a/ambari-web/app/views/main/admin/stack_upgrade/upgrade_wizard_view.js
+++ b/ambari-web/app/views/main/admin/stack_upgrade/upgrade_wizard_view.js
@@ -125,6 +125,14 @@ App.upgradeWizardView = Em.View.extend({
}.property('failedItem.status'),
/**
+ * indicate whether failed item can be skipped or retried in order to continue Upgrade
+ * @type {boolean}
+ */
+ isSkipable: function () {
+ return this.get('failedItem.skippable');
+ }.property('failedItem.skippable'),
+
+ /**
* @type {boolean}
*/
isManualDone: false,
@@ -257,5 +265,13 @@ App.upgradeWizardView = Em.View.extend({
*/
complete: function (event) {
this.setUpgradeItemStatus(event.context, 'COMPLETED');
+ },
+
+ /**
+ * set current upgrade item state to FAILED in order to cancel upgrade
+ * @param {object} event
+ */
+ cancel: function (event) {
+ this.setUpgradeItemStatus(event.context, 'FAILED');
}
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/39aeeb0e/ambari-web/test/views/main/admin/stack_upgrade/upgrade_wizard_view_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/views/main/admin/stack_upgrade/upgrade_wizard_view_test.js b/ambari-web/test/views/main/admin/stack_upgrade/upgrade_wizard_view_test.js
index fd43233..cba70bd 100644
--- a/ambari-web/test/views/main/admin/stack_upgrade/upgrade_wizard_view_test.js
+++ b/ambari-web/test/views/main/admin/stack_upgrade/upgrade_wizard_view_test.js
@@ -161,6 +161,19 @@ describe('App.upgradeWizardView', function () {
});
});
+ describe("#cancel()", function () {
+ before(function () {
+ sinon.stub(view, 'setUpgradeItemStatus', Em.K);
+ });
+ after(function () {
+ view.setUpgradeItemStatus.restore();
+ });
+ it("cabcel request", function () {
+ view.cancel({context: Em.Object.create({'status': 'HOLDING_FAILED'})});
+ expect(view.setUpgradeItemStatus.calledWith(Em.Object.create({'status': 'HOLDING_FAILED'}), 'FAILED')).to.be.true;
+ });
+ });
+
describe("#setUpgradeItemStatus()", function () {
before(function () {
sinon.stub(App.ajax, 'send', function () {