Ver Fonte

AMBARI-9314. Change the API call to set the cluster property "security_type" instead of cluster-env/security_enabled for invoking kerberization. (jaimin via yusaku)

Yusaku Sako há 10 anos atrás
pai
commit
50d8c783de

+ 1 - 1
ambari-web/app/controllers/global/cluster_controller.js

@@ -72,7 +72,7 @@ App.ClusterController = Em.Controller.extend({
 
   doOnClusterLoad: function (item) {
     if (this.get('isLoaded')) {
-      App.router.get('mainAdminSecurityController').getUpdatedSecurityStatus();
+      App.router.get('mainAdminKerberosController').getUpdatedSecurityStatus();
     }
   }.observes('isLoaded'),
 

+ 42 - 10
ambari-web/app/controllers/main/admin/kerberos.js

@@ -60,12 +60,12 @@ App.MainAdminKerberosController = App.KerberosWizardStep4Controller.extend({
   },
 
   getUpdatedSecurityStatus: function () {
-    this.setSecurityStatus();
+    this.getSecurityStatus();
     return this.get('securityEnabled');
   },
 
   /**
-   * performes clustere check before kerbefos security
+   * performs cluster check before kerbefos security
    * wizard starts if <code>preKerberizeCheck<code> supports is true
    * otherwise runs <code>startKerberosWizard<code>
    * @method checkAndStartKerberosWizard
@@ -116,18 +116,50 @@ App.MainAdminKerberosController = App.KerberosWizardStep4Controller.extend({
       this.set('dataIsLoaded', true);
     } else {
       //get Security Status From Server
-      var self = this;
-      var tags = [{siteName: 'cluster-env'}];
-      App.router.get('configurationController').getConfigsByTags(tags).done(function (data) {
-        var configs = data[0].properties;
-        if (configs) {
-          self.set('securityEnabled', configs['security_enabled'] === 'true');
-        }
-        self.set('dataIsLoaded', true);
+      this.getSecurityStatus();
+    }
+  },
+
+  getSecurityStatus: function () {
+    if (App.get('testMode')) {
+      this.set('securityEnabled', !App.get('testEnableSecurity'));
+      this.set('dataIsLoaded', true);
+    } else {
+      //get Security Status From Server
+      App.ajax.send({
+        name: 'admin.security_status',
+        sender: this,
+        success: 'getSecurityStatusSuccessCallback',
+        error: 'errorCallback'
       });
     }
   },
 
+  getSecurityStatusSuccessCallback: function(data) {
+    this.set('dataIsLoaded', true);
+    var securityType = data.Clusters.security_type;
+    this.set('securityEnabled', securityType === 'KERBEROS');
+  },
+
+  errorCallback: function (jqXHR) {
+    this.set('dataIsLoaded', true);
+    // Show the error popup if the API call received a response from the server.
+    // jqXHR.status will be empty when browser cancels the request. Refer to AMBARI-5921 for more info
+    if (!!jqXHR.status) {
+      this.showSecurityErrorPopup();
+    }
+  },
+
+  showSecurityErrorPopup: function () {
+    App.ModalPopup.show({
+      header: Em.I18n.t('common.error'),
+      secondary: false,
+      bodyClass: Ember.View.extend({
+        template: Ember.Handlebars.compile('<p>{{t admin.security.status.error}}</p>')
+      })
+    });
+  },
+
   /**
    * Override <code>App.KerberosWizardStep4Controller</code>
    *

+ 2 - 2
ambari-web/app/controllers/main/admin/kerberos/step6_controller.js

@@ -24,14 +24,14 @@ App.KerberosWizardStep6Controller = App.KerberosProgressPageController.extend({
   commands: [],
   contextForPollingRequest: Em.I18n.t('requestInfo.kerberizeCluster'),
 
-  setRequest: function (data) {
+  setRequest: function () {
     this.set('request', {
       name: 'KERBERIZE_CLUSTER',
       ajaxName: 'admin.kerberize.cluster',
       ajaxData: {
         data: {
           Clusters: {
-            desired_config: data
+            security_type: "KERBEROS"
           }
         }
       }

+ 7 - 11
ambari-web/app/routes/add_kerberos_routes.js

@@ -260,23 +260,19 @@ module.exports = App.WizardRoute.extend({
       controller.dataLoading().done(function () {
         controller.setLowerStepsDisable(6);
         controller.loadAllPriorSteps();
-        controller.getClusterEnvData().done(function (clusterEnvdata) {
-          var kerberosDescriptor = controller.get('kerberosDescriptorConfigs');
-          stepController.postKerberosDescriptor(kerberosDescriptor).always(function(data){
-            stepController.setRequest(clusterEnvdata);
-            controller.connectOutlet('kerberosWizardStep6', controller.get('content'));
-          });
+        var kerberosDescriptor = controller.get('kerberosDescriptorConfigs');
+          stepController.postKerberosDescriptor(kerberosDescriptor).always(function (data) {
+          stepController.setRequest();
+          controller.connectOutlet('kerberosWizardStep6', controller.get('content'));
         });
       });
     },
     retry: function () {
       var router = App.get('router');
       var controller = router.get('kerberosWizardController');
-      controller.getClusterEnvData().done(function (data) {
-        var stepController = router.get('kerberosWizardStep6Controller');
-        stepController.setRequest(data);
-        stepController.loadStep();
-      });
+      var stepController = router.get('kerberosWizardStep6Controller');
+      stepController.setRequest();
+      stepController.loadStep();
     },
     unroutePath: function () {
       return false;

+ 1 - 1
ambari-web/app/utils/ajax/ajax.js

@@ -1060,7 +1060,7 @@ var urls = {
     'testInProduction': true
   },
   'admin.security_status': {
-    'real': '/clusters/{clusterName}?fields=Clusters/desired_configs',
+    'real': '/clusters/{clusterName}?fields=Clusters/security_type',
     'mock': '',
     'format': function () {
       return {