소스 검색

AMBARI-11135. Kerberos: Selecting "Manual" option and then going back to "Existing KDC" option loses KDC host field and connection tester (alexantonenko)

Alex Antonenko 10 년 전
부모
커밋
d239381ebc

+ 17 - 11
ambari-web/app/controllers/main/admin/kerberos/step2_controller.js

@@ -91,15 +91,15 @@ App.KerberosWizardStep2Controller = App.WizardStep7Controller.extend({
     //STEP 2: Load on-site configs by service from local DB
     var storedConfigs = this.get('content.serviceConfigProperties');
     //STEP 3: Merge pre-defined configs with loaded on-site configs
-    var configs = App.config.mergePreDefinedWithStored(
+    this.set('configs', App.config.mergePreDefinedWithStored(
       storedConfigs,
       advancedConfigs,
-      this.get('selectedServiceNames'));
+      this.get('selectedServiceNames')));
     App.config.setPreDefinedServiceConfigs(this.get('addMiscTabToPage'));
     //STEP 4: Add advanced configs
-    App.config.addAdvancedConfigs(configs, advancedConfigs);
-    this.filterConfigs(configs);
-    this.applyServicesConfigs(configs, storedConfigs);
+    App.config.addAdvancedConfigs(this.get('configs'), advancedConfigs);
+    this.filterConfigs(this.get('configs'));
+    this.applyServicesConfigs(this.get('configs'), storedConfigs);
   },
 
   /**
@@ -109,15 +109,21 @@ App.KerberosWizardStep2Controller = App.WizardStep7Controller.extend({
   filterConfigs: function (configs) {
     var kdcType = this.get('content.kerberosOption');
     var configNames = ['ldap_url', 'container_dn', 'create_attributes_template'];
+    var kerberosWizardController = this.controllers.get('kerberosWizardController');
+
+    if (kdcType === Em.I18n.t('admin.kerberos.wizard.step1.option.manual')) {
+      if (kerberosWizardController.get('skipClientInstall')) {
+        kerberosWizardController.overrideVisibility(configs, false, kerberosWizardController.get('exceptionsOnSkipClient'));
+      }
+      return;
+    }
+
     configNames.forEach(function (_configName) {
       var config = configs.findProperty('name', _configName);
-      config.isVisible = kdcType === Em.I18n.t('admin.kerberos.wizard.step1.option.ad');
+      if (config) {
+        config.isVisible = kdcType === Em.I18n.t('admin.kerberos.wizard.step1.option.ad');
+      }
     }, this);
-    if (kdcType === Em.I18n.t('admin.kerberos.wizard.step1.option.manual')) {
-      var host = configs.findProperty('name', 'kdc_host');
-      host.isRequiredByAgent = false;
-      host.isVisible = false;
-    }
   },
 
   submit: function () {

+ 8 - 7
ambari-web/app/controllers/main/admin/kerberos/wizard_controller.js

@@ -179,14 +179,15 @@ App.KerberosWizardController = App.WizardController.extend({
    * @param {Array} itemsArray
    * @param newValue
    */
-  overrideVisibility: function (itemsArray, newValue) {
-    var self = this;
-    newValue = newValue || false;
+  overrideVisibility: function (itemsArray, newValue, exceptions) {
+    newValue = newValue || false
 
-    for (var i=0; i < itemsArray.length; i += 1) {
-      var isException = self.get('exceptionsOnSkipClient').filterProperty(itemsArray[i].get('category'), itemsArray[i].get('name'));
-      if (!isException.length) {
-        itemsArray[i].set('isVisible', newValue);
+    for (var i = 0, len = itemsArray.length; i < len; i += 1) {
+      if (!Ember.$.isEmptyObject(itemsArray[i])) {
+        var isException = exceptions.filterProperty(itemsArray[i].category, itemsArray[i].name);
+        if (!isException.length) {
+          itemsArray[i].isVisible = newValue;
+        }
       }
     }
   },

+ 2 - 0
ambari-web/app/routes/add_kerberos_routes.js

@@ -164,7 +164,9 @@ module.exports = App.WizardRoute.extend({
     },
     back: function(router) {
       var controller = router.get('kerberosWizardStep2Controller');
+      var kerberosWizardController = router.get('kerberosWizardController');
       if (!controller.get('isBackBtnDisabled')) {
+        kerberosWizardController.overrideVisibility(controller.get('configs'), true, []);
         router.transitionTo('step1')
       }
     },

+ 0 - 4
ambari-web/app/views/common/configs/service_configs_by_category_view.js

@@ -62,10 +62,6 @@ App.ServiceConfigsByCategoryView = Em.View.extend(App.UserPref, App.ConfigOverri
    */
    categoryConfigsAll: function () {
      var configs = this.get('serviceConfigs').filterProperty('category', this.get('category.name'));
-
-     if (this.get('service.serviceName') === 'KERBEROS' && App.router.get('kerberosWizardController.skipClientInstall')) {
-       App.router.get('kerberosWizardController').overrideVisibility(configs, false);
-     }
      return configs;
    }.property('serviceConfigs.@each').cacheable(),