You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by rl...@apache.org on 2015/05/22 03:02:50 UTC
ambari git commit: AMBARI-11244. Kerberos: display warning that the
user must create/distribute principals and keytabs (rlevas)
Repository: ambari
Updated Branches:
refs/heads/trunk 2230cc62f -> 12dd68ece
AMBARI-11244. Kerberos: display warning that the user must create/distribute principals and keytabs (rlevas)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/12dd68ec
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/12dd68ec
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/12dd68ec
Branch: refs/heads/trunk
Commit: 12dd68ecefadec32b0b81b4c7ccfeb77d2f20283
Parents: 2230cc6
Author: Robert Levas <rl...@hortonworks.com>
Authored: Thu May 21 21:02:39 2015 -0400
Committer: Robert Levas <rl...@hortonworks.com>
Committed: Thu May 21 21:02:39 2015 -0400
----------------------------------------------------------------------
.../app/controllers/main/admin/kerberos.js | 11 +++-
ambari-web/app/controllers/main/host/details.js | 69 ++++++++++++--------
ambari-web/app/controllers/main/service/item.js | 10 +--
.../app/controllers/wizard/step8_controller.js | 15 +++++
ambari-web/app/messages.js | 6 +-
.../main/host/details/addComponentPopup.hbs | 2 +-
ambari-web/app/templates/wizard/step8.hbs | 4 ++
.../test/controllers/main/host/details_test.js | 11 +++-
8 files changed, 89 insertions(+), 39 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/12dd68ec/ambari-web/app/controllers/main/admin/kerberos.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/admin/kerberos.js b/ambari-web/app/controllers/main/admin/kerberos.js
index 0be41fb..de61da5 100644
--- a/ambari-web/app/controllers/main/admin/kerberos.js
+++ b/ambari-web/app/controllers/main/admin/kerberos.js
@@ -25,7 +25,7 @@ App.MainAdminKerberosController = App.KerberosWizardStep4Controller.extend({
securityEnabled: false,
dataIsLoaded: false,
isRecommendedLoaded: true,
- kdc_type: 'none',
+ kdc_type: '',
kdcTypesValues: {
'mit-kdc' : Em.I18n.t('admin.kerberos.wizard.step1.option.kdc'),
@@ -374,13 +374,14 @@ App.MainAdminKerberosController = App.KerberosWizardStep4Controller.extend({
}
},
- getSecurityType: function () {
+ getSecurityType: function (callback) {
if (this.get('securityEnabled')) {
App.ajax.send({
name: 'admin.security.cluster_configs.kerberos',
sender: this,
data: {
- clustName: 'c1'
+ clusterName: App.get('clusterName'),
+ additionalCallback: callback
},
success: 'getSecurityTypeSuccess'
})
@@ -389,6 +390,10 @@ App.MainAdminKerberosController = App.KerberosWizardStep4Controller.extend({
getSecurityTypeSuccess: function (data, opt, params) {
this.set('kdc_type', data.items && Em.get(data.items[0], 'properties.kdc_type') ? Em.get(data.items[0], 'properties.kdc_type') : 'none' );
+
+ if (Em.typeOf(params.additionalCallback) === 'function') {
+ params.additionalCallback();
+ }
},
isManualKerberos: function () {
http://git-wip-us.apache.org/repos/asf/ambari/blob/12dd68ec/ambari-web/app/controllers/main/host/details.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/host/details.js b/ambari-web/app/controllers/main/host/details.js
index 4c747fd..034ceae 100644
--- a/ambari-web/app/controllers/main/host/details.js
+++ b/ambari-web/app/controllers/main/host/details.js
@@ -454,7 +454,9 @@ App.MainHostDetailsController = Em.Controller.extend({
addComponentWithCheck: function (event) {
var componentName = event.context ? event.context.get('componentName') : "";
event.hiveMetastoreHost = (componentName == "HIVE_METASTORE" && !!this.get('content.hostName')) ? this.get('content.hostName') : null;
- App.get('router.mainAdminKerberosController').getKDCSessionState(this.addComponent.bind(this, event));
+ App.get('router.mainAdminKerberosController').getSecurityType(function (event) {
+ App.get('router.mainAdminKerberosController').getKDCSessionState(this.addComponent.bind(this, event));
+ }.bind(this, event));
},
/**
* Send command to server to install selected host component
@@ -471,7 +473,10 @@ App.MainHostDetailsController = Em.Controller.extend({
missedComponents = event.selectedHost ? [] : componentsUtils.checkComponentDependencies(componentName, {
scope: 'host',
installedComponents: this.get('content.hostComponents').mapProperty('componentName')
- });
+ }),
+ isManualKerberos = App.get('router.mainAdminKerberosController.isManualKerberos'),
+ manualKerberosWarning = isManualKerberos ? Em.I18n.t('hosts.host.manualKerberosWarning') : '';
+
if (!!missedComponents.length) {
var popupMessage = Em.I18n.t('host.host.addComponent.popup.dependedComponents.body').format(component.get('displayName'),
stringUtils.getFormattedStringFromArray(missedComponents.map(function(cName) {
@@ -484,28 +489,28 @@ App.MainHostDetailsController = Em.Controller.extend({
case 'ZOOKEEPER_SERVER':
returnFunc = App.showConfirmationPopup(function () {
self.primary(component);
- }, Em.I18n.t('hosts.host.addComponent.' + componentName ));
+ }, Em.I18n.t('hosts.host.addComponent.' + componentName) + manualKerberosWarning);
break;
case 'HIVE_METASTORE':
returnFunc = App.showConfirmationPopup(function () {
self.set('hiveMetastoreHost', hostName);
self.loadConfigs("loadHiveConfigs");
- }, Em.I18n.t('hosts.host.addComponent.' + componentName ));
+ }, Em.I18n.t('hosts.host.addComponent.' + componentName) + manualKerberosWarning);
break;
case 'NIMBUS':
returnFunc = App.showConfirmationPopup(function() {
self.set('nimbusHost', hostName);
self.loadConfigs("loadStormConfigs");
- }, Em.I18n.t('hosts.host.addComponent.' + componentName));
+ }, Em.I18n.t('hosts.host.addComponent.' + componentName) + manualKerberosWarning);
break;
case 'RANGER_KMS_SERVER':
returnFunc = App.showConfirmationPopup(function() {
self.set('rangerKMSServerHost', hostName);
self.loadConfigs("loadRangerConfigs");
- }, Em.I18n.t('hosts.host.addComponent.' + componentName));
+ }, Em.I18n.t('hosts.host.addComponent.' + componentName) + manualKerberosWarning);
break;
default:
- returnFunc = this.addClientComponent(component);
+ returnFunc = this.addClientComponent(component, isManualKerberos);
}
return returnFunc;
},
@@ -513,15 +518,18 @@ App.MainHostDetailsController = Em.Controller.extend({
* Send command to server to install client on selected host
* @param component
*/
- addClientComponent: function (component) {
+ addClientComponent: function (component, isManualKerberos) {
var self = this;
var message = this.formatClientsMessage(component);
- return this.showAddComponentPopup(message, function () {
+
+ return this.showAddComponentPopup(message, isManualKerberos, function () {
self.primary(component);
});
},
- showAddComponentPopup: function (message, primary) {
+ showAddComponentPopup: function (message, isManualKerberos, primary) {
+ isManualKerberos = isManualKerberos || false;
+
return App.ModalPopup.show({
primary: Em.I18n.t('hosts.host.addComponent.popup.confirm'),
header: Em.I18n.t('popup.confirmation.commonHeader'),
@@ -530,6 +538,10 @@ App.MainHostDetailsController = Em.Controller.extend({
return Em.I18n.t('hosts.host.addComponent.msg').format(message);
}.property(),
+ manualKerberosWarning: function () {
+ return isManualKerberos ? Em.I18n.t('hosts.host.manualKerberosWarning') : '';
+ }.property(),
+
bodyClass: Em.View.extend({
templateName: require('templates/main/host/details/addComponentPopup')
}),
@@ -2156,24 +2168,27 @@ App.MainHostDetailsController = Em.Controller.extend({
})));
App.showAlertPopup(Em.I18n.t('host.host.addComponent.popup.dependedComponents.header'), popupMessage);
} else {
- App.get('router.mainAdminKerberosController').getKDCSessionState(function () {
- var sendInstallCommand = function () {
- if (clientsToInstall.length) {
- self.sendComponentCommand(clientsToInstall, Em.I18n.t('host.host.details.installClients'), 'INSTALLED');
- }
- };
- if (clientsToAdd.length) {
- var message = stringUtils.getFormattedStringFromArray(clientsToAdd.mapProperty('displayName'));
- self.showAddComponentPopup(message, function () {
+ App.get('router.mainAdminKerberosController').getSecurityType(function () {
+ App.get('router.mainAdminKerberosController').getKDCSessionState(function () {
+ var sendInstallCommand = function () {
+ if (clientsToInstall.length) {
+ self.sendComponentCommand(clientsToInstall, Em.I18n.t('host.host.details.installClients'), 'INSTALLED');
+ }
+ };
+ if (clientsToAdd.length) {
+ var message = stringUtils.getFormattedStringFromArray(clientsToAdd.mapProperty('displayName'));
+ var isManualKerberos = App.get('router.mainAdminKerberosController.isManualKerberos');
+ self.showAddComponentPopup(message, isManualKerberos, function () {
+ sendInstallCommand();
+ clientsToAdd.forEach(function (component) {
+ this.primary(component);
+ }, self);
+ });
+ } else {
sendInstallCommand();
- clientsToAdd.forEach(function (component) {
- this.primary(component);
- }, self);
- });
- } else {
- sendInstallCommand();
- }
- });
+ }
+ });
+ }.bind(this));
}
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/12dd68ec/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 ad33b98..3312457 100644
--- a/ambari-web/app/controllers/main/service/item.js
+++ b/ambari-web/app/controllers/main/service/item.js
@@ -166,10 +166,10 @@ App.MainServiceItemController = Em.Controller.extend({
var self = this;
var serviceDisplayName = this.get('content.displayName');
var isMaintenanceOFF = this.get('content.passiveState') === 'OFF';
-
+
var msg = isMaintenanceOFF && serviceHealth == 'INSTALLED'? Em.I18n.t('services.service.stop.warningMsg.turnOnMM').format(serviceDisplayName) : null;
msg = self.addAdditionalWarningMessage(serviceHealth, msg, serviceDisplayName);
-
+
var bodyMessage = Em.Object.create({
putInMaintenance: (serviceHealth == 'INSTALLED' && isMaintenanceOFF) || (serviceHealth == 'STARTED' && !isMaintenanceOFF),
turnOnMmMsg: serviceHealth == 'INSTALLED' ? Em.I18n.t('passiveState.turnOnFor').format(serviceDisplayName) : Em.I18n.t('passiveState.turnOffFor').format(serviceDisplayName),
@@ -187,7 +187,7 @@ App.MainServiceItemController = Em.Controller.extend({
addAdditionalWarningMessage: function(serviceHealth, msg, serviceDisplayName){
var servicesAffectedDisplayNames = [];
var servicesAffected = [];
-
+
if(serviceHealth == 'INSTALLED'){
//To stop a service, display dependencies message...
var currentService = this.get('content.serviceName');
@@ -214,7 +214,7 @@ App.MainServiceItemController = Em.Controller.extend({
}
}
},this);
-
+
var names = servicesAffectedDisplayNames.join();
if(names){
//only display this line with a non-empty dependency list
@@ -225,7 +225,7 @@ App.MainServiceItemController = Em.Controller.extend({
msg = dependenciesMsg;
}
}
-
+
return msg;
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/12dd68ec/ambari-web/app/controllers/wizard/step8_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/wizard/step8_controller.js b/ambari-web/app/controllers/wizard/step8_controller.js
index 0e1b777..067e089 100644
--- a/ambari-web/app/controllers/wizard/step8_controller.js
+++ b/ambari-web/app/controllers/wizard/step8_controller.js
@@ -69,6 +69,14 @@ App.WizardStep8Controller = Em.Controller.extend(App.AddSecurityConfigs, App.wiz
configs: [],
/**
+ * True if Kerberos is installed on the cluster and the kdc_type on the server is set to "none"
+ * @type {Boolean}
+ */
+ isManualKerberos: function () {
+ return App.get('router.mainAdminKerberosController.kdc_type') === 'none';
+ }.property('App.router.mainAdminKerberosController.kdc_type'),
+
+ /**
* All configs
* @type {Array}
*/
@@ -127,6 +135,12 @@ App.WizardStep8Controller = Em.Controller.extend(App.AddSecurityConfigs, App.wiz
return App.router.get('mainAdminKerberosController.securityEnabled');
}.property('App.router.mainAdminKerberosController.securityEnabled'),
+ getSecurityType: function () {
+ if (this.get('securityEnabled')) {
+ App.router.mainAdminKerberosController.getSecurityType();
+ }
+ },
+
/**
* Selected config group
* @type {Object}
@@ -221,6 +235,7 @@ App.WizardStep8Controller = Em.Controller.extend(App.AddSecurityConfigs, App.wiz
this.loadServices();
this.set('isSubmitDisabled', false);
this.set('isBackBtnDisabled', false);
+ this.getSecurityType();
},
/**
http://git-wip-us.apache.org/repos/asf/ambari/blob/12dd68ec/ambari-web/app/messages.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js
index d0f680f..15e275a 100644
--- a/ambari-web/app/messages.js
+++ b/ambari-web/app/messages.js
@@ -771,8 +771,9 @@ Em.I18n.translations = {
'installer.step7.misc.notification.use_ssl':'Use SSL',
- 'installer.step8.header':'Review',
- 'installer.step8.body':'Please review the configuration before installation',
+ 'installer.step8.header': 'Review',
+ 'installer.step8.body': 'Please review the configuration before installation',
+ 'installer.step8.kerberors.warning': '<strong>Because Kerberos has been manually installed on the cluster, you will have to create/distribute principals and keytabs when this operation is finished.</strong>',
'installer.step8.deployPopup.message':'Preparing to Deploy: {0} of {1} tasks completed.',
'installer.step8.hosts':' hosts',
'installer.step8.host':' host',
@@ -2185,6 +2186,7 @@ Em.I18n.translations = {
'hosts.host.zooKeeper.configs.save.note': 'This configuration is created by ambari while installing/deleting zookeeper component on a host',
'hosts.host.addComponent.securityNote':'You are running your cluster in secure mode. You must set up the keytab for {0} on {1} before you proceed. Otherwise, the component will not be able to start properly.',
'hosts.host.addComponent.popup.confirm':'Confirm Add',
+ 'hosts.host.manualKerberosWarning': '<br/><strong>Because Kerberos has been manually installed on the cluster, you will have to create/distribute principals and keytabs when this operation is finished.</strong>',
'hosts.host.deleteComponent.popup.deleteNimbus':'Deleting <i>Storm Nimbus</i> will reconfigure <b>nimbus.seeds</b>, <b>topology.min.replication.count</b>, <b>topology.max.replication.wait.time.sec</b> properties if they are defined.',
'hosts.host.storm.configs.save.note': 'This configuration is created by ambari while installing/deleting storm component on a host',
'hosts.host.datanode.decommission':'Decommission DataNode',
http://git-wip-us.apache.org/repos/asf/ambari/blob/12dd68ec/ambari-web/app/templates/main/host/details/addComponentPopup.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/host/details/addComponentPopup.hbs b/ambari-web/app/templates/main/host/details/addComponentPopup.hbs
index a65f0e6..ff69b9e 100644
--- a/ambari-web/app/templates/main/host/details/addComponentPopup.hbs
+++ b/ambari-web/app/templates/main/host/details/addComponentPopup.hbs
@@ -16,4 +16,4 @@
* limitations under the License.
}}
-{{addComponentMsg}}<br /><br />
\ No newline at end of file
+{{addComponentMsg}}<br />{{{manualKerberosWarning}}}
http://git-wip-us.apache.org/repos/asf/ambari/blob/12dd68ec/ambari-web/app/templates/wizard/step8.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/wizard/step8.hbs b/ambari-web/app/templates/wizard/step8.hbs
index 8506371..ec4bac7 100644
--- a/ambari-web/app/templates/wizard/step8.hbs
+++ b/ambari-web/app/templates/wizard/step8.hbs
@@ -20,6 +20,10 @@
<div class="alert alert-info">
{{t installer.step8.body}}
+ {{#if controller.isManualKerberos}}
+ <br/><br/>
+ {{t installer.step8.kerberors.warning}}
+ {{/if}}
</div>
<div id="step8-content" class="well pre-scrollable">
http://git-wip-us.apache.org/repos/asf/ambari/blob/12dd68ec/ambari-web/test/controllers/main/host/details_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/main/host/details_test.js b/ambari-web/test/controllers/main/host/details_test.js
index f0df0f2..30f1d01 100644
--- a/ambari-web/test/controllers/main/host/details_test.js
+++ b/ambari-web/test/controllers/main/host/details_test.js
@@ -531,7 +531,7 @@ describe('App.MainHostDetailsController', function () {
});
it('should display add component confirmation', function () {
- var popup = controller.showAddComponentPopup(message, function () {
+ var popup = controller.showAddComponentPopup(message, false, function () {
controller.primary(component);
});
expect(App.ModalPopup.show.calledOnce).to.be.true;
@@ -2191,6 +2191,7 @@ describe('App.MainHostDetailsController', function () {
c1: [],
c2: []
},
+ getSecurityTypeCalled: null, //should have same value as getKDCSessionStateCalled, always
getKDCSessionStateCalled: true,
sendComponentCommandCalled: true,
showAlertPopupCalled: false,
@@ -2206,6 +2207,7 @@ describe('App.MainHostDetailsController', function () {
dependencies: {
c3: []
},
+ getSecurityTypeCalled: null, //should have same value as getKDCSessionStateCalled, always
getKDCSessionStateCalled: true,
sendComponentCommandCalled: false,
showAlertPopupCalled: false,
@@ -2221,6 +2223,7 @@ describe('App.MainHostDetailsController', function () {
dependencies: {
c4: ['c5']
},
+ getSecurityTypeCalled: null, //should have same value as getKDCSessionStateCalled, always
getKDCSessionStateCalled: false,
sendComponentCommandCalled: false,
showAlertPopupCalled: true,
@@ -2241,6 +2244,7 @@ describe('App.MainHostDetailsController', function () {
c5: ['c6'],
c6: ['c5']
},
+ getSecurityTypeCalled: null, //should have same value as getKDCSessionStateCalled, always
getKDCSessionStateCalled: true,
sendComponentCommandCalled: false,
showAlertPopupCalled: false,
@@ -2255,6 +2259,9 @@ describe('App.MainHostDetailsController', function () {
sinon.stub(App.get('router.mainAdminKerberosController'), 'getKDCSessionState', function (arg) {
return arg();
});
+ sinon.stub(App.get('router.mainAdminKerberosController'), 'getSecurityType', function (arg) {
+ return arg();
+ });
sinon.stub(App, 'showAlertPopup', Em.K);
sinon.stub(App.StackServiceComponent, 'find', function (componentName) {
return Em.Object.create({
@@ -2267,6 +2274,7 @@ describe('App.MainHostDetailsController', function () {
controller.sendComponentCommand.restore();
controller.showAddComponentPopup.restore();
App.get('router.mainAdminKerberosController').getKDCSessionState.restore();
+ App.get('router.mainAdminKerberosController').getSecurityType.restore();
App.showAlertPopup.restore();
App.StackServiceComponent.find.restore();
componentsUtils.checkComponentDependencies.restore();
@@ -2280,6 +2288,7 @@ describe('App.MainHostDetailsController', function () {
controller.installClients({
context: item.context
});
+ expect(App.get('router.mainAdminKerberosController').getSecurityType.calledOnce).to.equal(item.getKDCSessionStateCalled);
expect(App.get('router.mainAdminKerberosController').getKDCSessionState.calledOnce).to.equal(item.getKDCSessionStateCalled);
expect(controller.sendComponentCommand.calledOnce).to.equal(item.sendComponentCommandCalled);
expect(App.showAlertPopup.calledOnce).to.equal(item.showAlertPopupCalled);