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/12 18:47:16 UTC
ambari git commit: AMBARI-8685 Failure handling for repo
distribution. (ababiichuk)
Repository: ambari
Updated Branches:
refs/heads/trunk f74c490fa -> 563861f7f
AMBARI-8685 Failure handling for repo distribution. (ababiichuk)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/563861f7
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/563861f7
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/563861f7
Branch: refs/heads/trunk
Commit: 563861f7fe2bd58c8155372c27023902cd542c37
Parents: f74c490
Author: aBabiichuk <ab...@cybervisiontech.com>
Authored: Fri Dec 12 18:37:43 2014 +0200
Committer: aBabiichuk <ab...@cybervisiontech.com>
Committed: Fri Dec 12 19:45:02 2014 +0200
----------------------------------------------------------------------
.../stack_versions/repo_versions_controller.js | 12 +++---
.../stack_version_details_controller.js | 24 ++++++++++-
ambari-web/app/messages.js | 1 +
.../stack_versions/stack_version_details.hbs | 2 +-
.../stack_version_details_view.js | 6 +++
.../repo_versions_controller_test.js | 43 ++++++++++++++++----
.../stack_version_details_controller_test.js | 7 ++++
.../stack_versions_controller_test.js | 41 +++++++++++++++++++
.../stack_version/stack_version_details_test.js | 4 ++
9 files changed, 123 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/563861f7/ambari-web/app/controllers/main/admin/stack_versions/repo_versions_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/admin/stack_versions/repo_versions_controller.js b/ambari-web/app/controllers/main/admin/stack_versions/repo_versions_controller.js
index 9b95941..002bcbe 100644
--- a/ambari-web/app/controllers/main/admin/stack_versions/repo_versions_controller.js
+++ b/ambari-web/app/controllers/main/admin/stack_versions/repo_versions_controller.js
@@ -126,10 +126,12 @@ App.RepoVersionsController = Em.ArrayController.extend({
* @method installStackVersionSuccess
*/
installStackVersionSuccess: function (data, opt, params) {
- App.db.set('stackUpgrade', 'id', [data.Requests.id]);
- App.get('router.mainStackVersionsController').loadStackVersionsToModel().done(function() {
- var stackVersion = App.StackVersion.find().findProperty('repositoryVersion.id', params.id);
- App.router.transitionTo('main.admin.adminStackVersions.version', stackVersion);
- });
+ App.db.set('repoVersion', 'id', [data.Requests.id]);
+ if(!App.StackVersion.find().findProperty('repositoryVersion.id', params.id)) {
+ App.get('router.mainStackVersionsController').loadStackVersionsToModel().done(function() {
+ var stackVersion = App.StackVersion.find().findProperty('repositoryVersion.id', params.id);
+ App.router.transitionTo('main.admin.adminStackVersions.version', stackVersion);
+ });
+ }
}
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/563861f7/ambari-web/app/controllers/main/admin/stack_versions/stack_version_details_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/admin/stack_versions/stack_version_details_controller.js b/ambari-web/app/controllers/main/admin/stack_versions/stack_version_details_controller.js
index faf56c3..7678c5a 100644
--- a/ambari-web/app/controllers/main/admin/stack_versions/stack_version_details_controller.js
+++ b/ambari-web/app/controllers/main/admin/stack_versions/stack_version_details_controller.js
@@ -35,6 +35,13 @@ App.MainStackVersionsDetailsController = Em.Controller.extend({
* true if stack version install is in progress
* @type {Boolean}
*/
+ installFailed: function() {
+ return this.get('content.state') == "INSTALL_FAILED";
+ }.property('content.state'),
+ /**
+ * true if stack version install is in progress
+ * @type {Boolean}
+ */
installInProgress: function() {
return this.get('content.state') == "INSTALLING";
}.property('content.state'),
@@ -51,21 +58,34 @@ App.MainStackVersionsDetailsController = Em.Controller.extend({
/**
* depending on state run or install repo request
* or show the installation process popup
+ * @param event
* @method installStackVersion
*/
- installStackVersion: function() {
+ installStackVersion: function(event) {
if (this.get('installInProgress')) {
this.showProgressPopup();
+ } else if (this.get('installFailed')) {
+ this.installRepoVersion(event);
}
},
/**
+ * install repoVersion using <code>installRepoVersion()<code> method
+ * of <code>repoVersionsController<code> controller
+ * @param event
+ * @method installRepoVersion
+ */
+ installRepoVersion: function(event) {
+ App.get('router.repoVersionsController').installRepoVersion(event);
+ },
+
+ /**
* opens a popup with installations state per host
* @method showProgressPopup
*/
showProgressPopup: function() {
var popupTitle = Em.I18n.t('admin.stackVersions.datails.install.hosts.popup.title').format(this.get('content.repositoryVersion.displayName'));
- var requestIds = App.get('testMode') ? [1] : App.db.get('stackUpgrade', 'id');
+ var requestIds = App.get('testMode') ? [1] : App.db.get('repoVersion', 'id');
var hostProgressPopupController = App.router.get('highAvailabilityProgressPopupController');
hostProgressPopupController.initPopup(popupTitle, requestIds, this);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/563861f7/ambari-web/app/messages.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js
index 5bea81e..d06b84d 100644
--- a/ambari-web/app/messages.js
+++ b/ambari-web/app/messages.js
@@ -1281,6 +1281,7 @@ Em.I18n.translations = {
'admin.stackVersions.datails.not.installed.on': "Not installed on",
'admin.stackVersions.datails.base.url': "Base Url",
+ 'admin.stackVersions.datails.hosts.btn.reinstall': "Reinstall on failed hosts",
'admin.stackVersions.datails.hosts.btn.install': "Install to {0} hosts",
'admin.stackVersions.datails.hosts.btn.installing': "Installing...",
'admin.stackVersions.datails.hosts.btn.nothing': "Installed on all hosts",
http://git-wip-us.apache.org/repos/asf/ambari/blob/563861f7/ambari-web/app/templates/main/admin/stack_versions/stack_version_details.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/admin/stack_versions/stack_version_details.hbs b/ambari-web/app/templates/main/admin/stack_versions/stack_version_details.hbs
index 5696a77..c984bdf 100644
--- a/ambari-web/app/templates/main/admin/stack_versions/stack_version_details.hbs
+++ b/ambari-web/app/templates/main/admin/stack_versions/stack_version_details.hbs
@@ -71,7 +71,7 @@
</div>
</div>
<div class="span4 align-center">
- <a id="repo-version-action-button" {{bindAttr class="view.statusClass :btn :stack-status-button"}} {{action installStackVersion content target="controller"}}>
+ <a id="repo-version-action-button" {{bindAttr class="view.statusClass :btn :stack-status-button"}} {{action installStackVersion content.repositoryVersion target="controller"}}>
<i {{bindAttr class="installInProgress:icon-cog"}}> </i>{{view.stackTextStatus}}
</a>
<a href="#/main/admin/stack" {{bindAttr class="installedNotUpgraded::hidden"}} >{{t admin.stackVersions.datails.hosts.btn.goto.upgrade}}</a>
http://git-wip-us.apache.org/repos/asf/ambari/blob/563861f7/ambari-web/app/views/main/admin/stack_versions/stack_version_details_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/admin/stack_versions/stack_version_details_view.js b/ambari-web/app/views/main/admin/stack_versions/stack_version_details_view.js
index 4cdcac5..f4d213b 100644
--- a/ambari-web/app/views/main/admin/stack_versions/stack_version_details_view.js
+++ b/ambari-web/app/views/main/admin/stack_versions/stack_version_details_view.js
@@ -43,6 +43,9 @@ App.MainStackVersionsDetailsView = Em.View.extend({
case 'INIT':
return Em.I18n.t('admin.stackVersions.datails.hosts.btn.install').format(self.get('totalHostCount') - self.get('content.installedHosts.length'));
break;
+ case 'INSTALL_FAILED':
+ return Em.I18n.t('admin.stackVersions.datails.hosts.btn.reinstall');
+ break;
default:
return self.get('content.state') && self.get('content.state').toCapital();
}
@@ -61,6 +64,9 @@ App.MainStackVersionsDetailsView = Em.View.extend({
case 'INSTALLING':
return 'btn-primary';
break;
+ case 'INSTALL_FAILED':
+ return 'btn-danger';
+ break;
default:
return 'disabled';
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/563861f7/ambari-web/test/controllers/main/admin/stack_version/repo_versions_controller_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/main/admin/stack_version/repo_versions_controller_test.js b/ambari-web/test/controllers/main/admin/stack_version/repo_versions_controller_test.js
index 90598ad..60a904d 100644
--- a/ambari-web/test/controllers/main/admin/stack_version/repo_versions_controller_test.js
+++ b/ambari-web/test/controllers/main/admin/stack_version/repo_versions_controller_test.js
@@ -76,27 +76,52 @@ describe('App.RepoVersionsController', function () {
});
describe('#installStackVersionSuccess()', function () {
- it('success callback for install stack version', function () {
- var repoId = "1";
- var requestId = "2";
- var stackVersion = {repositoryVersion: {id: repoId}};
+ var repoId = "1";
+ var requestId = "2";
+ var stackVersionObject = {repositoryVersion: {id: repoId}};
+ var stackVersion;
+ beforeEach(function() {
sinon.stub(App.db, 'set', Em.K);
- sinon.stub(App.get('router.mainStackVersionsController'), 'loadStackVersionsToModel', function() { return $.Deferred().resolve()});
sinon.stub(App.router, 'transitionTo', Em.K);
sinon.stub(App.StackVersion, 'find', function() {
return [stackVersion];
});
+ });
+
+ afterEach(function() {
+ App.db.set.restore();
+ App.router.transitionTo.restore();
+ App.StackVersion.find.restore();
+ });
+ it('success callback for install stack version', function () {
+ stackVersion = null;
+ sinon.stub(App.get('router.mainStackVersionsController'), 'loadStackVersionsToModel', function() {
+ stackVersion = stackVersionObject;
+ return $.Deferred().resolve()});
repoVersionsController.installStackVersionSuccess({Requests: {id: requestId}}, null, {id: repoId});
expect(App.db.set.calledWith('stackUpgrade', 'id', [requestId])).to.be.true;
expect(App.get('router.mainStackVersionsController').loadStackVersionsToModel.calledOnce).to.be.true;
- expect(App.StackVersion.find.calledOnce).to.be.true;
+ expect(App.StackVersion.find.called).to.be.true;
expect(App.router.transitionTo.calledWith('main.admin.adminStackVersions.version', stackVersion)).to.be.true;
- App.db.set.restore();
App.get('router.mainStackVersionsController').loadStackVersionsToModel.restore();
- App.router.transitionTo.restore();
- App.StackVersion.find.restore();
+ });
+
+ it('success callback for install stack version without redirect', function () {
+ stackVersion = stackVersionObject;
+ sinon.stub(App.get('router.mainStackVersionsController'), 'loadStackVersionsToModel', function() {
+ return $.Deferred().resolve()
+ });
+
+ repoVersionsController.installStackVersionSuccess({Requests: {id: requestId}}, null, {id: repoId});
+ expect(App.db.set.calledWith('stackUpgrade', 'id', [requestId])).to.be.true;
+ expect(App.get('router.mainStackVersionsController').loadStackVersionsToModel.calledOnce).to.be.false;
+ expect(App.StackVersion.find.calledOnce).to.be.true;
+ expect(App.router.transitionTo.calledWith('main.admin.adminStackVersions.version', stackVersion)).to.be.false;
+
+ App.get('router.mainStackVersionsController').loadStackVersionsToModel.restore();
+
});
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/563861f7/ambari-web/test/controllers/main/admin/stack_version/stack_version_details_controller_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/main/admin/stack_version/stack_version_details_controller_test.js b/ambari-web/test/controllers/main/admin/stack_version/stack_version_details_controller_test.js
index d449547..b605281 100644
--- a/ambari-web/test/controllers/main/admin/stack_version/stack_version_details_controller_test.js
+++ b/ambari-web/test/controllers/main/admin/stack_version/stack_version_details_controller_test.js
@@ -30,15 +30,22 @@ describe('App.MainStackVersionsDetailsController', function () {
describe('#installStackVersion', function () {
beforeEach(function() {
sinon.stub(mainStackVersionsDetailsController, 'showProgressPopup', Em.K);
+ sinon.stub(mainStackVersionsDetailsController, 'installRepoVersion', Em.K);
});
afterEach(function() {
mainStackVersionsDetailsController.showProgressPopup.restore();
+ mainStackVersionsDetailsController.installRepoVersion.restore();
});
it("shows installing proggress", function() {
mainStackVersionsDetailsController.reopen({'installInProgress': true});
mainStackVersionsDetailsController.installStackVersion({});
expect(mainStackVersionsDetailsController.showProgressPopup.calledOnce).to.be.true;
});
+ it("shows senq request to install/reinstall repoVersion", function() {
+ mainStackVersionsDetailsController.reopen({'installFailed': true});
+ mainStackVersionsDetailsController.installStackVersion({context: "1"});
+ expect(mainStackVersionsDetailsController.installRepoVersion.calledWith({context: "1"})).to.be.true;
+ });
});
describe('#showProgressPopup', function () {
http://git-wip-us.apache.org/repos/asf/ambari/blob/563861f7/ambari-web/test/controllers/main/admin/stack_version/stack_versions_controller_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/main/admin/stack_version/stack_versions_controller_test.js b/ambari-web/test/controllers/main/admin/stack_version/stack_versions_controller_test.js
index 402b3d7..b05c40c 100644
--- a/ambari-web/test/controllers/main/admin/stack_version/stack_versions_controller_test.js
+++ b/ambari-web/test/controllers/main/admin/stack_version/stack_versions_controller_test.js
@@ -52,4 +52,45 @@ describe('App.MainStackVersionsController', function () {
App.HttpClient.get.restore();
});
});
+
+ describe('#filterHostsByStack()', function () {
+ beforeEach(function() {
+ sinon.stub(App.router.get('mainHostController'), 'filterByStack').returns({done: Em.K});
+ sinon.stub(App.router, 'transitionTo').returns({done: Em.K});
+ });
+ afterEach(function() {
+ App.router.get('mainHostController').filterByStack.restore();
+ App.router.transitionTo.restore();
+ });
+ var tests = [
+ {
+ version: "version1",
+ state: "state1",
+ m: 'go to hosts filtered by host stack version and host stack state',
+ runAll: true
+ },
+ {
+ version: null,
+ state: "state1",
+ m: 'doesn\'t do anything because version is missing'
+ },
+ {
+ version: "version1",
+ state: null,
+ m: 'doesn\'t do anything because state is missing'
+ }
+ ].forEach(function(t) {
+ it(t.m, function () {
+ controller.load(t.version, t.stack);
+ if (t.runAll) {
+ expect(App.router.get('mainHostController').filterByStack.calledWith('hosts.index')).to.be.true;
+ expect(App.router.transitionTo.calledWith('hosts.index')).to.be.true;
+ } else {
+ expect(App.router.get('mainHostController').filterByStack.calledOnce).to.be.false;
+ expect(App.router.transitionTo.calledOnce).to.be.false;
+ }
+
+ });
+ });
+ });
});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/563861f7/ambari-web/test/views/main/admin/stack_version/stack_version_details_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/views/main/admin/stack_version/stack_version_details_test.js b/ambari-web/test/views/main/admin/stack_version/stack_version_details_test.js
index ae16e25..61c0cb4 100644
--- a/ambari-web/test/views/main/admin/stack_version/stack_version_details_test.js
+++ b/ambari-web/test/views/main/admin/stack_version/stack_version_details_test.js
@@ -40,6 +40,10 @@ describe('App.MainStackVersionsDetailsView', function () {
{
state: "INSTALLING",
buttonClass: 'btn-primary'
+ },
+ {
+ state: "INSTALL_FAILED",
+ buttonClass: "btn-danger"
}
].forEach(function(t) {
it("status is " + t.status + " class is " + t.buttonClass, function() {