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 2015/05/20 20:10:25 UTC
[2/2] ambari git commit: AMBARI-11275. RU Improvements: List services
that failed service check and user chose to skip (alexantonenko)
AMBARI-11275. RU Improvements: List services that failed service check and user chose to skip (alexantonenko)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/e9e8c4ef
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/e9e8c4ef
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/e9e8c4ef
Branch: refs/heads/trunk
Commit: e9e8c4eff188f7ffdd78558d6f618bf7e9924423
Parents: 932855f
Author: Alex Antonenko <hi...@gmail.com>
Authored: Wed May 20 20:50:43 2015 +0300
Committer: Alex Antonenko <hi...@gmail.com>
Committed: Wed May 20 21:10:20 2015 +0300
----------------------------------------------------------------------
ambari-web/app/messages.js | 2 +
.../stack_upgrade/stack_upgrade_wizard.hbs | 14 ++
ambari-web/app/utils/ajax/ajax.js | 3 +
.../admin/stack_upgrade/upgrade_wizard_view.js | 49 +++++++
.../stack_upgrade/upgrade_wizard_view_test.js | 144 +++++++++++++++++++
5 files changed, 212 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/e9e8c4ef/ambari-web/app/messages.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js
index 410e849..d0f680f 100644
--- a/ambari-web/app/messages.js
+++ b/ambari-web/app/messages.js
@@ -1426,6 +1426,8 @@ Em.I18n.translations = {
"Click on <b>Finalize</b> when you are ready to finalize the downgrade and commit to the new version." +
" You are strongly encouraged to run tests on your cluster to ensure it is fully operational before finalizing." +
" <b>You cannot go back to the original version once the downgrade is finalized.</b>",
+ 'admin.stackUpgrade.finalize.message.skippedServiceChecks': "During the upgrade, checks for the following services failed and were skipped:",
+ 'admin.stackUpgrade.finalize.message.testServices': "You are strongly recommended to test these services before finalizing upgrade.",
'admin.stackUpgrade.doThisLater': "Do This Later",
'admin.stackUpgrade.pauseUpgrade': "Pause Upgrade",
'admin.stackUpgrade.downgrade.proceed': "Proceed with Downgrade",
http://git-wip-us.apache.org/repos/asf/ambari/blob/e9e8c4ef/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 6dec0e3..0198afb 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
@@ -93,6 +93,20 @@
<p>{{t admin.stackUpgrade.finalize.message.upgrade}}</p>
{{/if}}
+ {{#if view.areSkippedServiceChecksLoaded}}
+ {{#if view.skippedServiceChecks.length}}
+ <div>{{t admin.stackUpgrade.finalize.message.skippedServiceChecks}}</div>
+ <ul>
+ {{#each serviceName in view.skippedServiceChecks}}
+ <li>{{serviceName}}</li>
+ {{/each}}
+ </ul>
+ <div>{{t admin.stackUpgrade.finalize.message.testServices}}</div>
+ {{/if}}
+ {{else}}
+ <div class="spinner"></div>
+ {{/if}}
+
<label class="message">
{{view Em.Checkbox checkedBinding="view.isManualDone"}}
{{t admin.stackUpgrade.dialog.manualDone}}
http://git-wip-us.apache.org/repos/asf/ambari/blob/e9e8c4ef/ambari-web/app/utils/ajax/ajax.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/ajax/ajax.js b/ambari-web/app/utils/ajax/ajax.js
index 77d6ea5..943c3f6 100644
--- a/ambari-web/app/utils/ajax/ajax.js
+++ b/ambari-web/app/utils/ajax/ajax.js
@@ -1519,6 +1519,9 @@ var urls = {
'minimal_response=true',
'mock': '/data/stack_versions/upgrade_item.json'
},
+ 'admin.upgrade.service_checks': {
+ 'real': '/clusters/{clusterName}/upgrades/{upgradeId}/upgrade_groups?upgrade_items/UpgradeItem/status=COMPLETED&upgrade_items/tasks/Tasks/status.in(FAILED,ABORTED,TIMEDOUT)&upgrade_items/tasks/Tasks/command=SERVICE_CHECK&fields=upgrade_items/tasks/Tasks/command_detail,upgrade_items/tasks/Tasks/status&minimal_response=true'
+ },
'admin.upgrade.start': {
'real': '/clusters/{clusterName}/upgrades',
'mock': '/data/stack_versions/start_upgrade.json',
http://git-wip-us.apache.org/repos/asf/ambari/blob/e9e8c4ef/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 b989ac7..3c1f7be 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
@@ -64,6 +64,18 @@ App.upgradeWizardView = Em.View.extend({
outsideView: true,
/**
+ * Determines if list of services with checks that failed and were skipped by user during the upgrade is loaded
+ * @type {boolean}
+ */
+ areSkippedServiceChecksLoaded: false,
+
+ /**
+ * List of services with checks that failed and were skipped by user during the upgrade
+ * @type {array}
+ */
+ skippedServiceChecks: [],
+
+ /**
* Downgrade should be available only if target version higher than current, so we can't downgrade
* when downgrade already started
* @type {boolean}
@@ -238,6 +250,43 @@ App.upgradeWizardView = Em.View.extend({
}
}.observes('App.clusterName'),
+ getSkippedServiceChecks: function () {
+ if (this.get('isFinalizeItem') && !this.get('areSkippedServiceChecksLoaded')) {
+ var self = this;
+ App.ajax.send({
+ name: 'admin.upgrade.service_checks',
+ sender: this,
+ data: {
+ upgradeId: this.get('controller.upgradeId')
+ },
+ success: 'getSkippedServiceChecksSuccessCallback'
+ }).complete(function () {
+ self.set('areSkippedServiceChecksLoaded', true);
+ });
+ }
+ }.observes('isFinalizeItem'),
+
+ getSkippedServiceChecksSuccessCallback: function (data) {
+ if (data.items && data.items.length) {
+ var lastItemWithChecks = data.items[data.items.length - 1];
+ if (lastItemWithChecks && lastItemWithChecks.upgrade_items && lastItemWithChecks.upgrade_items.length) {
+ var skippedServiceChecks = [];
+ lastItemWithChecks.upgrade_items.forEach(function (item) {
+ if (item.tasks && item.tasks.length) {
+ item.tasks.forEach(function (task) {
+ var detail = Em.get(task, 'Tasks.command_detail');
+ if (detail && detail.startsWith('SERVICE_CHECK ')) {
+ skippedServiceChecks.push(App.format.role(detail.replace('SERVICE_CHECK ', '')));
+ }
+ });
+ }
+ });
+ skippedServiceChecks = skippedServiceChecks.uniq();
+ this.set('skippedServiceChecks', skippedServiceChecks);
+ }
+ }
+ },
+
/**
* start polling upgrade data
*/
http://git-wip-us.apache.org/repos/asf/ambari/blob/e9e8c4ef/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 d37649d..860e2d6 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
@@ -644,4 +644,148 @@ describe('App.upgradeWizardView', function () {
});
});
+ describe('#getSkippedServiceChecks()', function () {
+
+ var cases = [
+ {
+ isFinalizeItem: false,
+ areSkippedServiceChecksLoaded: false,
+ ajaxSendCallCount: 0,
+ areSkippedServiceChecksLoadedResult: false,
+ title: 'no ajax request should be sent away from Finalize step'
+ },
+ {
+ isFinalizeItem: false,
+ areSkippedServiceChecksLoaded: true,
+ ajaxSendCallCount: 0,
+ areSkippedServiceChecksLoadedResult: false,
+ title: 'no ajax request should be sent if data is already loaded'
+ },
+ {
+ isFinalizeItem: true,
+ areSkippedServiceChecksLoaded: false,
+ ajaxSendCallCount: 1,
+ areSkippedServiceChecksLoadedResult: true,
+ title: 'ajax request should be sent on Finalize step'
+ }
+ ];
+
+ beforeEach(function () {
+ view.set('controller.upgradeId', 1);
+ sinon.stub(App.ajax, 'send').returns({
+ complete: function (callback) {
+ callback();
+ }
+ });
+ });
+
+ afterEach(function () {
+ App.ajax.send.restore();
+ });
+
+ cases.forEach(function (item) {
+ it(item.title, function () {
+ view.set('areSkippedServiceChecksLoaded', item.areSkippedServiceChecksLoaded);
+ view.reopen({
+ isFinalizeItem: item.isFinalizeItem
+ });
+ view.propertyDidChange('isFinalizeItem');
+ expect(App.ajax.send.callCount).to.equal(item.ajaxSendCallCount);
+ expect(view.get('areSkippedServiceChecksLoaded')).to.equal(item.areSkippedServiceChecksLoadedResult);
+ if (item.ajaxSendCallCount) {
+ expect(App.ajax.send.firstCall.args[0].data.upgradeId).to.equal(1);
+ }
+ });
+ });
+
+ });
+
+ describe('#getSkippedServiceChecksSuccessCallback()', function () {
+
+ var data = {
+ items: [
+ {
+ upgrade_items: [
+ {
+ tasks: [
+ {
+ Tasks: {
+ command_detail: 'SERVICE_CHECK HDFS'
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ upgrade_items: [
+ {
+ tasks: [
+ {
+ Tasks: {
+ command_detail: 'SERVICE_CHECK ZOOKEEPER'
+ }
+ }
+ ]
+ },
+ {
+ tasks: [
+ {
+ Tasks: {
+ command_detail: 'SERVICE_CHECK YARN'
+ }
+ }
+ ]
+ },
+ {},
+ {
+ tasks: []
+ },
+ {
+ tasks: [
+ {
+ Tasks: null
+ },
+ {
+ Tasks: {
+ command_detail: 'SERVICE_CHECK HIVE'
+ }
+ }
+ ]
+ },
+ {
+ tasks: [
+ {
+ Tasks: {
+ command_detail: null
+ }
+ },
+ {
+ Tasks: {
+ command_detail: 'SERVICE_CHECK YARN'
+ }
+ }
+ ]
+ },
+ {
+ tasks: [
+ {
+ Tasks: {
+ command_detail: 'RESTART HDFS'
+ }
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ };
+
+ it('should set an array of service names from tha latest service checks step', function () {
+ view.getSkippedServiceChecksSuccessCallback(data);
+ expect(view.get('skippedServiceChecks')).to.eql(['ZooKeeper', 'YARN', 'Hive']);
+ });
+
+ });
+
});