You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ak...@apache.org on 2015/11/11 13:26:02 UTC
ambari git commit: AMBARI-13831. After enabling kerberos with option
'Manage Kerberos principals and keytabs manually',
adding new component buttons will not respond (akovalenko)
Repository: ambari
Updated Branches:
refs/heads/trunk f96f82249 -> 7e1cb684d
AMBARI-13831. After enabling kerberos with option 'Manage Kerberos principals and keytabs manually', adding new component buttons will not respond (akovalenko)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/7e1cb684
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/7e1cb684
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/7e1cb684
Branch: refs/heads/trunk
Commit: 7e1cb684d96d7614e6d3b0125691b05c0109c27a
Parents: f96f822
Author: Aleksandr Kovalenko <ak...@hortonworks.com>
Authored: Wed Nov 11 14:16:31 2015 +0200
Committer: Aleksandr Kovalenko <ak...@hortonworks.com>
Committed: Wed Nov 11 14:18:29 2015 +0200
----------------------------------------------------------------------
.../app/controllers/main/admin/kerberos.js | 52 +++++----
.../app/controllers/wizard/step8_controller.js | 6 +-
.../controllers/main/admin/kerberos_test.js | 114 ++++++++++++++++++-
.../test/controllers/wizard/step8_test.js | 41 ++-----
4 files changed, 157 insertions(+), 56 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/7e1cb684/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 d339f63..223dc91 100644
--- a/ambari-web/app/controllers/main/admin/kerberos.js
+++ b/ambari-web/app/controllers/main/admin/kerberos.js
@@ -391,16 +391,23 @@ App.MainAdminKerberosController = App.KerberosWizardStep4Controller.extend({
},
getKDCSessionState: function (callback, kdcCancelHandler) {
+ var self = this;
if (this.get('securityEnabled') || App.get('isKerberosEnabled')) {
- App.ajax.send({
- name: 'kerberos.session.state',
- sender: this,
- data: {
- callback: callback
- },
- success: 'checkState',
- kdcCancelHandler: kdcCancelHandler
- })
+ this.getSecurityType(function () {
+ if (!self.get('isManualKerberos')) {
+ App.ajax.send({
+ name: 'kerberos.session.state',
+ sender: self,
+ data: {
+ callback: callback
+ },
+ success: 'checkState',
+ kdcCancelHandler: kdcCancelHandler
+ })
+ } else {
+ callback();
+ }
+ });
} else {
callback();
}
@@ -408,15 +415,22 @@ App.MainAdminKerberosController = App.KerberosWizardStep4Controller.extend({
getSecurityType: function (callback) {
if (this.get('securityEnabled') || App.get('isKerberosEnabled')) {
- return App.ajax.send({
- name: 'admin.security.cluster_configs.kerberos',
- sender: this,
- data: {
- clusterName: App.get('clusterName'),
- additionalCallback: callback
- },
- success: 'getSecurityTypeSuccess'
- });
+ if (!this.get('kdc_type')) {
+ return App.ajax.send({
+ name: 'admin.security.cluster_configs.kerberos',
+ sender: this,
+ data: {
+ clusterName: App.get('clusterName'),
+ additionalCallback: callback
+ },
+ success: 'getSecurityTypeSuccess'
+ });
+ } else {
+ if (Em.typeOf(callback) === 'function') {
+ callback();
+ }
+ return $.Deferred().resolve().promise;
+ }
} else if (Em.typeOf(callback) === 'function') {
callback();
} else {
@@ -426,7 +440,7 @@ App.MainAdminKerberosController = App.KerberosWizardStep4Controller.extend({
getSecurityTypeSuccess: function (data, opt, params) {
var kdcType = data.items && data.items[0] &&
- Em.getWithDefault(Em.getWithDefault(data.items[0], 'configurations', {}).findProperty('type', 'kerberos-env') || {}, 'properties.kdc_type', 'none') || 'none';
+ Em.getWithDefault(Em.getWithDefault(data.items[0], 'configurations', []).findProperty('type', 'kerberos-env') || {}, 'properties.kdc_type', 'none') || 'none';
this.set('kdc_type', kdcType);
if (Em.typeOf(params.additionalCallback) === 'function') {
params.additionalCallback();
http://git-wip-us.apache.org/repos/asf/ambari/blob/7e1cb684/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 e8e86ae..442c31d 100644
--- a/ambari-web/app/controllers/wizard/step8_controller.js
+++ b/ambari-web/app/controllers/wizard/step8_controller.js
@@ -613,7 +613,7 @@ App.WizardStep8Controller = Em.Controller.extend(App.AddSecurityConfigs, App.wiz
checkKDCSession: function() {
var self = this;
var wizardController = App.router.get(this.get('content.controllerName'));
- if (this.get('content.controllerName') != 'installerController' && App.get('isKerberosEnabled') && !this.get('isManualKerberos')) {
+ if (this.get('content.controllerName') != 'installerController') {
App.get('router.mainAdminKerberosController').getKDCSessionState(this.submitProceed.bind(this), function () {
self.set('isSubmitDisabled', false);
self.set('isBackBtnDisabled', false);
@@ -1577,7 +1577,9 @@ App.WizardStep8Controller = Em.Controller.extend(App.AddSecurityConfigs, App.wiz
var configs = this.get('configs').filterProperty('filename', site + '.xml');
var attributes = App.router.get('mainServiceInfoConfigsController').getConfigAttributes(configs);
configs.forEach(function (_configProperty) {
- var heapsizeExceptions = ['hadoop_heapsize', 'yarn_heapsize', 'nodemanager_heapsize', 'resourcemanager_heapsize', 'apptimelineserver_heapsize', 'jobhistory_heapsize', 'nfsgateway_heapsize', 'accumulo_master_heapsize', 'accumulo_tserver_heapsize', 'accumulo_monitor_heapsize', 'accumulo_gc_heapsize', 'accumulo_other_heapsize', 'hbase_master_heapsize', 'hbase_regionserver_heapsize', 'metrics_collector_heapsize'];
+ var heapsizeExceptions = ['hadoop_heapsize', 'yarn_heapsize', 'nodemanager_heapsize', 'resourcemanager_heapsize', 'apptimelineserver_heapsize',
+ 'jobhistory_heapsize', 'nfsgateway_heapsize', 'accumulo_master_heapsize', 'accumulo_tserver_heapsize', 'accumulo_monitor_heapsize', 'accumulo_gc_heapsize',
+ 'accumulo_other_heapsize', 'hbase_master_heapsize', 'hbase_regionserver_heapsize', 'metrics_collector_heapsize'];
// do not pass any globals whose name ends with _host or _hosts
if (_configProperty.isRequiredByAgent !== false) {
// append "m" to JVM memory options except for heapsizeExtensions
http://git-wip-us.apache.org/repos/asf/ambari/blob/7e1cb684/ambari-web/test/controllers/main/admin/kerberos_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/main/admin/kerberos_test.js b/ambari-web/test/controllers/main/admin/kerberos_test.js
index b2f1825..b63d1e1 100644
--- a/ambari-web/test/controllers/main/admin/kerberos_test.js
+++ b/ambari-web/test/controllers/main/admin/kerberos_test.js
@@ -179,8 +179,120 @@ describe('App.MainAdminKerberosController', function() {
});
});
+ describe('#getKDCSessionState()', function () {
+
+ var mock = {callback: Em.K};
+
+ beforeEach(function () {
+ sinon.stub(App.ajax, 'send', Em.K);
+ sinon.spy(mock, 'callback');
+ sinon.stub(controller, 'getSecurityType', function (c) {
+ c();
+ });
+ });
+
+ afterEach(function () {
+ App.ajax.send.restore();
+ mock.callback.restore();
+ controller.getSecurityType.restore();
+ });
+
+ [
+ {
+ m: 'Skip request, as securityEnabled and isKerberosEnabled are false',
+ securityEnabled: false,
+ isKerberosEnabled: false,
+ kdc_type: 'not_none',
+ result: false
+ },
+ {
+ m: 'Skip request, as isManualKerberos is true',
+ securityEnabled: true,
+ isKerberosEnabled: true,
+ kdc_type: 'none',
+ result: false
+ },
+ {
+ m: 'Make request',
+ securityEnabled: true,
+ isKerberosEnabled: true,
+ kdc_type: 'not_none',
+ result: true
+ }
+ ].forEach(function (test) {
+ it(test.m, function () {
+ sinon.stub(App, 'get').returns(test.isKerberosEnabled);
+ controller.set('securityEnabled', test.securityEnabled);
+ controller.set('kdc_type', test.kdc_type);
+ controller.getKDCSessionState(mock.callback);
+ App.get.restore();
+ if (test.result) {
+ expect(mock.callback.calledOnce).to.be.false;
+ expect(App.ajax.send.calledOnce).to.be.true;
+ } else {
+ expect(mock.callback.calledOnce).to.be.true;
+ expect(App.ajax.send.calledOnce).to.be.false;
+ }
+ });
+ });
+ });
+
+ describe('#getSecurityType()', function () {
+
+ var mock = {callback: Em.K};
+
+ beforeEach(function () {
+ sinon.stub(App.ajax, 'send', Em.K);
+ sinon.spy(mock, 'callback');
+ });
+
+ afterEach(function () {
+ App.ajax.send.restore();
+ mock.callback.restore();
+ });
+
+ [
+ {
+ m: 'Skip request, as securityEnabled and isKerberosEnabled are false',
+ securityEnabled: false,
+ isKerberosEnabled: false,
+ kdc_type: '',
+ result: false
+ },
+ {
+ m: 'Skip request, as kdc_type exists',
+ securityEnabled: true,
+ isKerberosEnabled: true,
+ kdc_type: 'none',
+ result: false
+ },
+ {
+ m: 'Make request',
+ securityEnabled: true,
+ isKerberosEnabled: true,
+ kdc_type: '',
+ result: true
+ }
+ ].forEach(function (test) {
+ it(test.m, function () {
+ sinon.stub(App, 'get').returns(test.isKerberosEnabled);
+ controller.set('securityEnabled', test.securityEnabled);
+ controller.set('kdc_type', test.kdc_type);
+ controller.getSecurityType(mock.callback);
+ App.get.restore();
+ if (test.result) {
+ expect(mock.callback.calledOnce).to.be.false;
+ expect(App.ajax.send.calledOnce).to.be.true;
+ } else {
+ expect(mock.callback.calledOnce).to.be.true;
+ expect(App.ajax.send.calledOnce).to.be.false;
+ }
+ });
+ });
+ });
+
describe('#getSecurityTypeSuccess', function() {
- var tests = [
+ [
{
data: { },
e: 'none'
http://git-wip-us.apache.org/repos/asf/ambari/blob/7e1cb684/ambari-web/test/controllers/wizard/step8_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/wizard/step8_test.js b/ambari-web/test/controllers/wizard/step8_test.js
index 56c795c..9331db5 100644
--- a/ambari-web/test/controllers/wizard/step8_test.js
+++ b/ambari-web/test/controllers/wizard/step8_test.js
@@ -1101,41 +1101,14 @@ describe('App.WizardStep8Controller', function () {
App.set('isKerberosEnabled', false);
App.get('router.mainAdminKerberosController').getKDCSessionState.restore();
});
- Em.A([
- {
- controllerName: 'addServiceController',
- securityEnabled: true,
- isManualKerberos: true
- },
- {
- controllerName: 'addServiceController',
- securityEnabled: true,
- isManualKerberos: false
- },
- {
- controllerName: 'addServiceController',
- securityEnabled: false,
- isManualKerberos: false
- }
- ]).forEach(function (test) {
- it(test.controllerName + ' Kerberos enabled - ' + test.securityEnabled.toString() + ' manual kerberos - ' + test.isManualKerberos, function () {
- App.set('isKerberosEnabled', test.securityEnabled);
- installerStep8Controller.reopen({isSubmitDisabled: false, isManualKerberos: test.isManualKerberos, content: {controllerName: test.controllerName}});
- installerStep8Controller.submit();
- if (test.securityEnabled) {
- if (test.isManualKerberos) {
- expect(App.get('router.mainAdminKerberosController').getKDCSessionState.called).to.equal(false);
- expect(installerStep8Controller.submitProceed.called).to.equal(true);
- } else {
- expect(App.get('router.mainAdminKerberosController').getKDCSessionState.called).to.equal(true);
- expect(installerStep8Controller.submitProceed.called).to.equal(false);
- }
- } else {
- expect(App.get('router.mainAdminKerberosController').getKDCSessionState.called).to.equal(false);
- expect(installerStep8Controller.submitProceed.called).to.equal(true);
- }
- });
+ it('AddServiceController Kerberos enabled', function () {
+ installerStep8Controller.reopen({
+ isSubmitDisabled: false,
+ content: {controllerName: 'addServiceController'}
});
+ installerStep8Controller.submit();
+ expect(App.get('router.mainAdminKerberosController').getKDCSessionState.called).to.equal(true);
+ });
it('shouldn\'t do nothing if isSubmitDisabled is true', function() {
installerStep8Controller.reopen({isSubmitDisabled: true});
installerStep8Controller.submit();