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 2016/02/01 10:31:25 UTC
[2/2] ambari git commit: AMBARI-14858 Can't delete service if install
failed.(ababiichuk)
AMBARI-14858 Can't delete service if install failed.(ababiichuk)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/40a0ef62
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/40a0ef62
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/40a0ef62
Branch: refs/heads/trunk
Commit: 40a0ef623d3b213213ac5a8340ed825b535b0234
Parents: e15ed44
Author: ababiichuk <ab...@hortonworks.com>
Authored: Mon Feb 1 11:12:58 2016 +0200
Committer: ababiichuk <ab...@hortonworks.com>
Committed: Mon Feb 1 11:12:58 2016 +0200
----------------------------------------------------------------------
ambari-web/app/controllers/main/service/item.js | 2 +-
ambari-web/app/models/service.js | 43 ++++++++++++++++++++
.../test/controllers/main/service/item_test.js | 13 ++++--
3 files changed, 54 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/40a0ef62/ambari-web/app/controllers/main/service/item.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/service/item.js b/ambari-web/app/controllers/main/service/item.js
index b8ad011..4678c64 100644
--- a/ambari-web/app/controllers/main/service/item.js
+++ b/ambari-web/app/controllers/main/service/item.js
@@ -997,7 +997,7 @@ App.MainServiceItemController = Em.Controller.extend(App.SupportClientConfigsDow
});
} else if (dependentServices.length > 0) {
this.dependentServicesWarning(serviceName, dependentServices);
- } else if (App.Service.find(serviceName).get('workStatus') === 'INSTALLED') {
+ } else if (App.Service.allowUninstallStates.contains(App.Service.find(serviceName).get('workStatus'))) {
App.showConfirmationPopup(
function() {self.confirmDeleteService(serviceName)},
Em.I18n.t('services.service.delete.popup.warning').format(displayName),
http://git-wip-us.apache.org/repos/asf/ambari/blob/40a0ef62/ambari-web/app/models/service.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/service.js b/ambari-web/app/models/service.js
index eba0fe9..39a6b1c 100644
--- a/ambari-web/app/models/service.js
+++ b/ambari-web/app/models/service.js
@@ -158,6 +158,49 @@ App.Service = DS.Model.extend({
});
+/**
+ * Map of all service states
+ *
+ * @type {Object}
+ */
+App.Service.statesMap = {
+ init: 'INIT',
+ installing: 'INSTALLING',
+ install_failed: 'INSTALL_FAILED',
+ stopped: 'INSTALLED',
+ starting: 'STARTING',
+ started: 'STARTED',
+ stopping: 'STOPPING',
+ uninstalling: 'UNINSTALLING',
+ uninstalled: 'UNINSTALLED',
+ wiping_out: 'WIPING_OUT',
+ upgrading: 'UPGRADING',
+ maintenance: 'MAINTENANCE',
+ unknown: 'UNKNOWN'
+};
+
+/**
+ * @type {String[]}
+ */
+App.Service.inProgressStates = [
+ App.Service.statesMap.installing,
+ App.Service.statesMap.starting,
+ App.Service.statesMap.stopping,
+ App.Service.statesMap.uninstalling,
+ App.Service.statesMap.upgrading,
+ App.Service.statesMap.wiping_out
+];
+
+/**
+ * @type {String[]}
+ */
+App.Service.allowUninstallStates = [
+ App.Service.statesMap.init,
+ App.Service.statesMap.install_failed,
+ App.Service.statesMap.stopped,
+ App.Service.statesMap.unknown
+];
+
App.Service.Health = {
live: "LIVE",
dead: "DEAD-RED",
http://git-wip-us.apache.org/repos/asf/ambari/blob/40a0ef62/ambari-web/test/controllers/main/service/item_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/main/service/item_test.js b/ambari-web/test/controllers/main/service/item_test.js
index de09e1a..90a1d90 100644
--- a/ambari-web/test/controllers/main/service/item_test.js
+++ b/ambari-web/test/controllers/main/service/item_test.js
@@ -1250,21 +1250,28 @@ describe('App.MainServiceItemController', function () {
it("service has installed dependent services", function() {
this.mockDependentServices.returns(['S2']);
- this.mockService.returns(Em.Object.create({workStatus: 'INSTALLED'}));
+ this.mockService.returns(Em.Object.create({workStatus: App.Service.statesMap.stopped}));
mainServiceItemController.deleteService('S1');
expect(mainServiceItemController.dependentServicesWarning.calledWith('S1', ['S2'])).to.be.true;
});
it("service has not dependent services, and stopped", function() {
this.mockDependentServices.returns([]);
- this.mockService.returns(Em.Object.create({workStatus: 'INSTALLED'}));
+ this.mockService.returns(Em.Object.create({workStatus: App.Service.statesMap.stopped}));
+ mainServiceItemController.deleteService('S1');
+ expect(App.showConfirmationPopup.calledOnce).to.be.true;
+ });
+
+ it("service has not dependent services, and install failed", function() {
+ this.mockDependentServices.returns([]);
+ this.mockService.returns(Em.Object.create({workStatus: App.Service.statesMap.install_failed}));
mainServiceItemController.deleteService('S1');
expect(App.showConfirmationPopup.calledOnce).to.be.true;
});
it("service has not dependent services, and not stopped", function() {
this.mockDependentServices.returns([]);
- this.mockService.returns(Em.Object.create({workStatus: 'STARTED'}));
+ this.mockService.returns(Em.Object.create({workStatus: App.Service.statesMap.started}));
mainServiceItemController.deleteService('S1');
expect(App.ModalPopup.show.calledWith({
secondary: null,