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();