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 2014/12/10 14:10:57 UTC
ambari git commit: AMBARI-8611 UI for pre-upgrade checks. (ababiichuk)
Repository: ambari
Updated Branches:
refs/heads/trunk dacca7b5f -> b1853c2f4
AMBARI-8611 UI for pre-upgrade checks. (ababiichuk)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/b1853c2f
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/b1853c2f
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/b1853c2f
Branch: refs/heads/trunk
Commit: b1853c2f4436254e374c5af0a9d4e5ade662247d
Parents: dacca7b
Author: aBabiichuk <ab...@cybervisiontech.com>
Authored: Tue Dec 9 19:58:24 2014 +0200
Committer: aBabiichuk <ab...@cybervisiontech.com>
Committed: Wed Dec 10 15:09:37 2014 +0200
----------------------------------------------------------------------
.../data/stack_versions/pre_upgrade_check.json | 81 ++++++++++++++++++++
.../main/admin/stack_and_upgrade_controller.js | 38 +++++++++
ambari-web/app/messages.js | 10 ++-
.../stack_upgrade/pre_upgrade_check_dialog.hbs | 29 +++++++
.../main/admin/stack_versions/repo_versions.hbs | 2 +-
.../admin/stack_versions/stack_versions.hbs | 2 +-
ambari-web/app/utils/ajax/ajax.js | 5 +-
.../views/main/admin/stack_and_upgrade_view.js | 2 +-
.../admin/stack_and_upgrade_controller_test.js | 51 ++++++++++++
9 files changed, 215 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/b1853c2f/ambari-web/app/assets/data/stack_versions/pre_upgrade_check.json
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/data/stack_versions/pre_upgrade_check.json b/ambari-web/app/assets/data/stack_versions/pre_upgrade_check.json
new file mode 100644
index 0000000..81df649
--- /dev/null
+++ b/ambari-web/app/assets/data/stack_versions/pre_upgrade_check.json
@@ -0,0 +1,81 @@
+{
+ "UpgradeChecks": [
+ {
+ "check": "NameNode HA is enabled",
+ "status": "PASS",
+ "reason": "",
+ "failed_on": [],
+ "check_type": "SERVICE"
+ },
+ {
+ "check": "Work-preserving RM/NM restart is enabled in YARN configs",
+ "status": "FAIL",
+ "reason": "X should be set to Y in yarn-site",
+ "failed_on": [ "YARN" ],
+ "check_type": "SERVICE"
+ },
+ {
+ "check": "MapReduce jobs are referencing Hadoop libraries from the distributed cache instead of the cluster",
+ "status": "PASS",
+ "reason": "",
+ "failed_on": [],
+ "check_type": "SERVICE"
+ },
+ {
+ "check": "Tez jobs are referencing Hadoop libraries from the distributed cache instead of the cluster",
+ "status": "PASS",
+ "reason": "",
+ "failed_on": [],
+ "check_type": "SERVICE"
+ },
+ {
+ "check": "Oozie jobs are referencing Hadoop libraries from the distributed cache instead of the cluster",
+ "status": "PASS",
+ "reason": "",
+ "failed_on": [],
+ "check_type": "SERVICE"
+ },
+ {
+ "check": "All services are up",
+ "status": "FAIL",
+ "reason": "Some services are down",
+ "failed_on": [ "STORM" ],
+ "check_type": "SERVICE"
+ },
+ {
+ "check": "All services must not in Maintenance Mode",
+ "status": "FAIL",
+ "reason": "Some services are in Maintenance Mode",
+ "failed_on": [ "FALCON", "OOZIE" ],
+ "check_type": "SERVICE"
+ },
+ {
+ "check": "There must not be any DataNodes in decommissioning state",
+ "status": "FAIL",
+ "reason": "Some DataNodes are in decommissioning state",
+ "failed_on": [ "host004", "host005" ],
+ "check_type": "HOST"
+ },
+ {
+ "check": "All hosts must be heartbeating with the server unless they are in Maintenance Mode",
+ "status": "FAIL",
+ "reason": "Some hosts are not heartbeating with the server",
+ "failed_on": [ "host009", "host010" ],
+ "check_type": "HOST"
+ },
+ {
+ "check": "All hosts must not have any components in Maintenance Mode",
+ "status": "FAIL",
+ "reason": "Some hosts have host components in Maintenance Mode",
+ "failed_on": [ "host001", "host002" ],
+ "check_type": "HOST"
+ },
+ {
+ "check": "All hosts must have the new version installed",
+ "status": "FAIL",
+ "reason": "Some hosts do not have HDP-2.2.1 installed",
+ "failed_on": [ "host001", "host002" ],
+ "check_type": "HOST"
+ }
+ ]
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/b1853c2f/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js b/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js
index 159b525..f8c687e 100644
--- a/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js
+++ b/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js
@@ -208,6 +208,44 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage,
},
/**
+ * send request for pre upgrade check
+ * @param version
+ */
+ runPreUpgradeCheck: function(version) {
+ App.ajax.send({
+ name: "admin.rolling_upgrade.pre_upgrade_check",
+ sender: this,
+ data: version,
+ success: "runPreUpgradeCheckSuccess"
+ })
+ },
+
+ /**
+ * success callback of <code>runPreUpgradeCheckSuccess()</code>
+ * if there are some fails - it shows popup else run upgrade
+ * @param data {object}
+ * @param opt {object}
+ * @param params {object}
+ * @returns {App.ModalPopup|void}
+ */
+ runPreUpgradeCheckSuccess: function(data, opt, params) {
+ if (data.UpgradeChecks.someProperty('status',"FAIL")) {
+ return App.ModalPopup.show({
+ header: Em.I18n.t('admin.stackUpgrade.preupgradeCheck.header').format(params.label),
+ primary: Em.I18n.t('common.dismiss'),
+ secondary: false,
+ bodyClass: Em.View.extend({
+ templateName: require('templates/main/admin/stack_upgrade/pre_upgrade_check_dialog'),
+ checks: function() {
+ return data.UpgradeChecks.filterProperty('status',"FAIL");
+ }.property()
+ })
+ })
+ } else {
+ this.upgrade(params);
+ }
+ },
+ /**
* make call to resume upgrade process and show popup with current progress
*/
resumeUpgrade: function () {
http://git-wip-us.apache.org/repos/asf/ambari/blob/b1853c2f/ambari-web/app/messages.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js
index d0a58f6..1d074e7 100644
--- a/ambari-web/app/messages.js
+++ b/ambari-web/app/messages.js
@@ -242,6 +242,7 @@ Em.I18n.translations = {
'common.prerequisites': 'Prerequisites',
'common.finalize': "Finalize",
'common.severity': "Severity",
+ 'common.dismiss': "Dismiss",
'models.alert_instance.tiggered.verbose': "Occured on {0} <br> Checked on {1}",
'models.alert_definition.triggered.verbose': "Occured on {0}",
@@ -1268,6 +1269,8 @@ Em.I18n.translations = {
'admin.stackVersions.table.header.os': "OS",
'admin.stackVersions.table.header.installed': "Installed on",
'admin.stackVersions.table.header.current': "Current on",
+ 'admin.stackVersions.table.empty': "No cluster stack versions to display",
+ 'admin.repoVersions.table.empty': "No repository versions to display",
'admin.stackVersions.datails.versionName': "Version Name",
'admin.stackVersions.datails.installed.on': "Installed On",
@@ -1309,7 +1312,12 @@ Em.I18n.translations = {
'admin.stackUpgrade.dialog.manualDone': "I have preformed the manual steps above.",
'admin.stackUpgrade.dialog.closeProgress': "Upgrade is in progress. \n If you dismiss this window, Upgrade will keep running in background.",
'admin.stackUpgrade.dialog.closePause': "Upgrade is paused. \n If you dismiss this window, you can resume Upgrade later.",
-
+ 'admin.stackUpgrade.preupgradeCheck.header': "Upgrade to {0}",
+ 'admin.stackUpgrade.preupgradeCheck.title': "Upgrade Requirements Not Met",
+ 'admin.stackUpgrade.preupgradeCheck.alert': "You have not met the following requirements for performing on upgrade.<br/>"+
+ "You must fix them before you continue",
+ 'admin.stackUpgrade.preupgradeCheck.failedOn': "Failed on: ",
+ 'admin.stackUpgrade.preupgradeCheck.reason': "Reason: ",
'services.service.start':'Start',
'services.service.stop':'Stop',
'services.service.metrics':'Metrics',
http://git-wip-us.apache.org/repos/asf/ambari/blob/b1853c2f/ambari-web/app/templates/main/admin/stack_upgrade/pre_upgrade_check_dialog.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/admin/stack_upgrade/pre_upgrade_check_dialog.hbs b/ambari-web/app/templates/main/admin/stack_upgrade/pre_upgrade_check_dialog.hbs
new file mode 100644
index 0000000..4a6af6a
--- /dev/null
+++ b/ambari-web/app/templates/main/admin/stack_upgrade/pre_upgrade_check_dialog.hbs
@@ -0,0 +1,29 @@
+{{!
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+}}
+<div id="pre-upgrade-check">
+ <h4>{{t admin.stackUpgrade.preupgradeCheck.title}}</h4>
+ <div class="alert alert-warning">
+ {{t admin.stackUpgrade.preupgradeCheck.alert}}
+ </div>
+ <div class="limited-height-2">
+ {{#each item in view.checks}}
+ <i class="icon-remove"></i> <span>{{item.check}}</span>
+ <pre>{{t admin.stackUpgrade.preupgradeCheck.reason}}{{item.reason}}<br/>{{t admin.stackUpgrade.preupgradeCheck.failedOn}}{{item.failed_on}}</pre>
+ {{/each}}
+ </div>
+</div>
http://git-wip-us.apache.org/repos/asf/ambari/blob/b1853c2f/ambari-web/app/templates/main/admin/stack_versions/repo_versions.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/admin/stack_versions/repo_versions.hbs b/ambari-web/app/templates/main/admin/stack_versions/repo_versions.hbs
index 1a48016..a49b813 100644
--- a/ambari-web/app/templates/main/admin/stack_versions/repo_versions.hbs
+++ b/ambari-web/app/templates/main/admin/stack_versions/repo_versions.hbs
@@ -61,7 +61,7 @@
{{else}}
<tr>
<td class="first empty-table" colspan="4">
- {{t dashboard.configHistory.table.empty}}
+ {{t admin.repoVersions.table.empty}}
</td>
</tr>
http://git-wip-us.apache.org/repos/asf/ambari/blob/b1853c2f/ambari-web/app/templates/main/admin/stack_versions/stack_versions.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/admin/stack_versions/stack_versions.hbs b/ambari-web/app/templates/main/admin/stack_versions/stack_versions.hbs
index dd6a99d..facc623 100644
--- a/ambari-web/app/templates/main/admin/stack_versions/stack_versions.hbs
+++ b/ambari-web/app/templates/main/admin/stack_versions/stack_versions.hbs
@@ -76,7 +76,7 @@
{{else}}
<tr>
<td class="first empty-table" colspan="5">
- {{t dashboard.configHistory.table.empty}}
+ {{t admin.stackVersions.table.empty}}
</td>
</tr>
{{/if}}
http://git-wip-us.apache.org/repos/asf/ambari/blob/b1853c2f/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 fdb59a4..7aa5fbd 100644
--- a/ambari-web/app/utils/ajax/ajax.js
+++ b/ambari-web/app/utils/ajax/ajax.js
@@ -1379,7 +1379,10 @@ var urls = {
},
'mock': ''
},
-
+ 'admin.rolling_upgrade.pre_upgrade_check': {
+ 'real': '/clusters/{clusterName}/rolling_upgrades_check',
+ 'mock': '/data/stack_versions/pre_upgrade_check.json'
+ },
'wizard.advanced_repositories.valid_url': {
'real': '/stacks/{stackName}/versions/{stackVersion}/operating_systems/{osType}/repositories/{repoId}',
http://git-wip-us.apache.org/repos/asf/ambari/blob/b1853c2f/ambari-web/app/views/main/admin/stack_and_upgrade_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/admin/stack_and_upgrade_view.js b/ambari-web/app/views/main/admin/stack_and_upgrade_view.js
index 5c5a604..c983a71 100644
--- a/ambari-web/app/views/main/admin/stack_and_upgrade_view.js
+++ b/ambari-web/app/views/main/admin/stack_and_upgrade_view.js
@@ -179,7 +179,7 @@ App.MainAdminStackAndUpgradeView = Em.View.extend({
case 'INIT':
if (this.get('versions.length') > 0) {
label = Em.I18n.t('common.upgrade');
- method = 'upgrade';
+ method = 'runPreUpgradeCheck';
}
break;
case 'PENDING':
http://git-wip-us.apache.org/repos/asf/ambari/blob/b1853c2f/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js b/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js
index 64a9c7b..104dfca 100644
--- a/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js
+++ b/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js
@@ -217,4 +217,55 @@ describe('App.MainAdminStackAndUpgradeController', function() {
expect(App.router.transitionTo.calledWith('admin.stackUpgrade')).to.be.true;
});
});
+
+
+ describe("#runPreUpgradeCheck()", function() {
+ before(function () {
+ sinon.stub(App.ajax, 'send', Em.K);
+ });
+ after(function () {
+ App.ajax.send.restore();
+ });
+ it("make ajax call", function() {
+ controller.runPreUpgradeCheck("2.2.1");
+ expect(App.ajax.send.calledOnce).to.be.true;
+ });
+ });
+
+ describe("#runPreUpgradeCheckSuccess()", function () {
+ beforeEach(function () {
+ sinon.stub(App.ModalPopup, 'show', Em.K);
+ sinon.stub(controller, 'upgrade', Em.K);
+ });
+ afterEach(function () {
+ App.ModalPopup.show.restore();
+ controller.upgrade.restore();
+ });
+ it("shows popup", function () {
+ var check = {UpgradeChecks: [{
+ "check": "Work-preserving RM/NM restart is enabled in YARN configs",
+ "status": "FAIL",
+ "reason": "FAIL",
+ "failed_on": [],
+ "check_type": "SERVICE"
+ }]};
+ controller.runPreUpgradeCheckSuccess(check,null,{label: "name"});
+ expect(controller.upgrade.calledOnce).to.be.false;
+ expect(App.ModalPopup.show.calledOnce).to.be.true;
+ });
+ it("runs upgrade popup", function () {
+ var check = {UpgradeChecks: [{
+ "check": "Work-preserving RM/NM restart is enabled in YARN configs",
+ "status": "PASS",
+ "reason": "OK",
+ "failed_on": [],
+ "check_type": "SERVICE"
+ }]};
+ controller.runPreUpgradeCheckSuccess(check,null,{label: "name"});
+ expect(controller.upgrade.calledOnce).to.be.true;
+ expect(App.ModalPopup.show.calledOnce).to.be.false;
+ });
+ });
+
+
});