Quellcode durchsuchen

AMBARI-9450 Add Service wizard: Integrate configure Identities page with the API to get the current kerberos descriptor. (ababiichuk)

aBabiichuk vor 10 Jahren
Ursprung
Commit
ebea796625

+ 0 - 16
ambari-web/app/controllers/main/admin/kerberos.js

@@ -160,22 +160,6 @@ App.MainAdminKerberosController = App.KerberosWizardStep4Controller.extend({
     });
   },
 
-  /**
-   * Override <code>App.KerberosWizardStep4Controller</code>
-   *
-   * @returns {$.ajax}
-   */
-  loadStackDescriptorConfigs: function () {
-    return App.ajax.send({
-      sender: this,
-      name: 'get.cluster.artifact',
-      data: {
-        artifactName: 'kerberos_descriptor',
-        stackVersionNumber: App.get('currentStackVersionNumber')
-      }
-    });
-  },
-  
   /**
    * Override <code>App.KerberosWizardStep4Controller</code>
    *

+ 16 - 7
ambari-web/app/controllers/main/admin/kerberos/step4_controller.js

@@ -33,7 +33,7 @@ App.KerberosWizardStep4Controller = App.WizardStep7Controller.extend(App.AddSecu
   loadStep: function() {
     var self = this;
     this.clearStep();
-    this.getStackDescriptorConfigs().then(function(properties) {
+    this.getDescriptorConfigs().then(function(properties) {
       self.setStepConfigs(properties);
       self.set('isRecommendedLoaded', true);
     });
@@ -74,9 +74,16 @@ App.KerberosWizardStep4Controller = App.WizardStep7Controller.extend(App.AddSecu
     ];
   },
 
+  /**
+   * creates categories for advanced secure configs
+   * @returns {[App.ServiceConfigCategory]}
+   */
   createCategoryForServices: function() {
-    return App.Service.find().mapProperty('serviceName').map(function(item) {
-      return App.ServiceConfigCategory.create({ name: item, displayName: App.Service.find().findProperty('serviceName',item).get('displayName'), collapsedByDefault: true});
+    var services = App.StackService.find().filter(function(s) {
+      return s.get('isInstalled') || (s.get('isSelected') && this.get('wizardController.name') == 'addServiceController');
+    }, this);
+    return services.map(function(item) {
+      return App.ServiceConfigCategory.create({ name: item.get('serviceName'), displayName: item.get('displayName'), collapsedByDefault: true});
     })
   },
 
@@ -113,7 +120,6 @@ App.KerberosWizardStep4Controller = App.WizardStep7Controller.extend(App.AddSecu
   prepareConfigProperties: function(configs) {
     var self = this;
     var storedServiceConfigs = this.get('wizardController').getDBProperty('serviceConfigProperties');
-    var realmValue = storedServiceConfigs.findProperty('name', 'realm').value;
     var installedServiceNames = ['Cluster'].concat(App.Service.find().mapProperty('serviceName'));
     var adminProps = [];
     var configProperties = configs.slice(0);
@@ -133,9 +139,12 @@ App.KerberosWizardStep4Controller = App.WizardStep7Controller.extend(App.AddSecu
     configProperties = configProperties.filter(function(item) {
       return installedServiceNames.contains(item.get('serviceName'));
     });
-    configProperties.findProperty('name', 'realm').set('value', realmValue);
-    configProperties.findProperty('name', 'realm').set('defaultValue', realmValue);
-    
+    if (this.get('wizardController.name') != 'addServiceController') {
+      var realmValue = storedServiceConfigs.findProperty('name', 'realm').value;
+      configProperties.findProperty('name', 'realm').set('value', realmValue);
+      configProperties.findProperty('name', 'realm').set('defaultValue', realmValue);
+    }
+
     configProperties.setEach('isSecureConfig', false);
     configProperties.forEach(function(property, item, allConfigs) {
       if (['spnego_keytab', 'spnego_principal'].contains(property.get('name'))) {

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

@@ -40,7 +40,7 @@ App.KerberosWizardStep6Controller = App.KerberosProgressPageController.extend({
 
   postKerberosDescriptor: function (kerberosDescriptor) {
     return App.ajax.send({
-      name: 'create.cluster.artifact',
+      name: 'admin.kerberos.cluster.artifact.create',
       sender: this,
       data: {
         artifactName: 'kerberos_descriptor',

+ 1 - 1
ambari-web/app/controllers/main/service/add_controller.js

@@ -546,7 +546,7 @@ App.AddServiceController = App.WizardController.extend({
 
   checkSecurityStatus: function() {
     if (App.supports.automatedKerberos) {
-      if (!App.router.get('mainAdminSecurityController.securityEnabled')) {
+      if (!App.router.get('mainAdminKerberosController.securityEnabled')) {
         this.get('isStepDisabled').findProperty('step', 5).set('value', true);
       }
     }

+ 2 - 2
ambari-web/app/controllers/wizard/step7_controller.js

@@ -67,8 +67,8 @@ App.WizardStep7Controller = Em.Controller.extend(App.ServerValidatorMixin, {
    * uses for add service - find out is security is enabled
    */
   securityEnabled: function () {
-    return App.router.get('mainAdminSecurityController.securityEnabled');
-  }.property('App.router.mainAdminSecurityController.securityEnabled'),
+    return App.router.get('mainAdminKerberosController.securityEnabled');
+  }.property('App.router.mainAdminKerberosController.securityEnabled'),
   /**
    * If miscConfigChange Modal is shown
    * @type {bool}

+ 23 - 2
ambari-web/app/controllers/wizard/step8_controller.js

@@ -123,8 +123,8 @@ App.WizardStep8Controller = Em.Controller.extend(App.AddSecurityConfigs, App.wiz
    * @type {bool}
    */
   securityEnabled: function () {
-    return App.router.get('mainAdminSecurityController.securityEnabled');
-  }.property('App.router.mainAdminSecurityController.securityEnabled'),
+    return App.router.get('mainAdminKerberosController.securityEnabled');
+  }.property('App.router.mainAdminKerberosController.securityEnabled'),
 
   /**
    * Selected config group
@@ -1077,6 +1077,22 @@ App.WizardStep8Controller = Em.Controller.extend(App.AddSecurityConfigs, App.wiz
     });
   },
 
+  /**
+   * updates kerberosDescriptorConfigs
+   * @method updateKerberosDescriptor
+   */
+  updateKerberosDescriptor: function() {
+    var kerberosDescriptor = App.db.get('KerberosWizard', 'kerberosDescriptorConfigs');
+    this.addRequestToAjaxQueue({
+      name: 'admin.kerberos.cluster.artifact.update',
+      data: {
+        artifactName: 'kerberos_descriptor',
+        data: {
+          artifact_data: kerberosDescriptor
+        }
+      }
+    });
+  },
   /**
    * Start deploy process
    * @method startDeploy
@@ -1085,6 +1101,11 @@ App.WizardStep8Controller = Em.Controller.extend(App.AddSecurityConfigs, App.wiz
     this.createCluster();
     this.createSelectedServices();
     if (this.get('content.controllerName') !== 'addHostController') {
+      if (this.get('content.controllerName') === 'addServiceController') {
+        if (this.get('securityEnabled')) {
+          this.updateKerberosDescriptor();
+        }
+      }
       if (this.get('wizardController').getDBProperty('fileNamesToUpdate') && this.get('wizardController').getDBProperty('fileNamesToUpdate').length) {
         this.updateConfigurations(this.get('wizardController').getDBProperty('fileNamesToUpdate'));
       }

+ 28 - 3
ambari-web/app/mixins/wizard/addSecurityConfigs.js

@@ -387,8 +387,8 @@ App.AddSecurityConfigs = Em.Mixin.create({
    *
    * @returns {$.Deferred}
    */
-  getStackDescriptorConfigs: function () {
-    return this.loadStackDescriptorConfigs().pipe(this.createServicesStackDescriptorConfigs.bind(this));
+  getDescriptorConfigs: function () {
+    return this.loadDescriptorConfigs().pipe(this.createServicesStackDescriptorConfigs.bind(this));
   },
 
   /**
@@ -661,10 +661,23 @@ App.AddSecurityConfigs = Em.Mixin.create({
     return isConfigUpdated;
   },
 
+  /**
+   * Make request for stack descriptor configs if cluster  is not secure
+   * or cluster descriptor configs if cluster is secure
+   * @returns {$.ajax}
+   * @method loadStackDescriptorConfigs
+   */
+  loadDescriptorConfigs: function() {
+    if (App.router.get('mainAdminKerberosController.securityEnabled')) {
+      return this.loadClusterDescriptorConfigs();
+    } else {
+      return this.loadStackDescriptorConfigs();
+    }
+  },
   /**
    * Make request for stack descriptor configs.
-   *
    * @returns {$.ajax}
+   * @method loadStackDescriptorConfigs
    */
   loadStackDescriptorConfigs: function () {
     return App.ajax.send({
@@ -675,5 +688,17 @@ App.AddSecurityConfigs = Em.Mixin.create({
         stackVersionNumber: App.get('currentStackVersionNumber')
       }
     });
+  },
+
+  /**
+   * Make request for cluster descriptor configs.
+   * @returns {$.ajax}
+   * @method loadClusterDescriptorConfigs
+   */
+  loadClusterDescriptorConfigs: function () {
+    return App.ajax.send({
+      sender: this,
+      name: 'admin.kerberize.cluster_descriptor'
+    });
   }
 });

+ 2 - 2
ambari-web/app/routes/add_service_routes.js

@@ -221,7 +221,7 @@ module.exports = App.WizardRoute.extend({
       addServiceController.saveServiceConfigProperties(wizardStep7Controller);
       addServiceController.saveServiceConfigGroups(wizardStep7Controller, true);
       if (App.supports.automatedKerberos) {
-        if (router.get('mainAdminSecurityController.securityEnabled')) {
+        if (router.get('mainAdminKerberosController.securityEnabled')) {
           router.transitionTo('step5');
           return;
         }
@@ -283,7 +283,7 @@ module.exports = App.WizardRoute.extend({
     },
     back: function(router){
       var controller = router.get('addServiceController');
-      if (App.supports.automatedKerberos && router.get('mainAdminSecurityController.securityEnabled')) {
+      if (App.supports.automatedKerberos && router.get('mainAdminKerberosController.securityEnabled')) {
         router.transitionTo('step5');
         return;
       }

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

@@ -1276,7 +1276,11 @@ var urls = {
     'real': '/stacks/{stackName}/versions/{stackVersionNumber}/artifacts/kerberos_descriptor?fields=artifact_data',
     'mock': '/data/wizard/kerberos/stack_descriptors.json'
   },
-  'create.cluster.artifact': {
+  'admin.kerberize.cluster_descriptor': {
+    'real': '/clusters/{clusterName}/artifacts/kerberos_descriptor?fields=artifact_data',
+    'mock': '/data/wizard/kerberos/stack_descriptors.json'
+  },
+  'admin.kerberos.cluster.artifact.create': {
     'type': 'POST',
     'real': '/clusters/{clusterName}/artifacts/{artifactName}',
     'format' : function (data) {
@@ -1285,6 +1289,15 @@ var urls = {
       }
     }
   },
+  'admin.kerberos.cluster.artifact.update': {
+    'type': 'PUT',
+    'real': '/clusters/{clusterName}/artifacts/{artifactName}',
+    'format' : function (data) {
+      return {
+        data: JSON.stringify(data.data)
+      }
+    }
+  },
   'admin.poll.kerberize.cluster.request': {
     'real': '/clusters/{clusterName}/requests/{requestId}?fields=stages/Stage/context,stages/Stage/status,stages/Stage/progress_percent,stages/tasks/*,Requests/*',
     'mock': '/data/wizard/kerberos/kerberize_cluster.json'

+ 37 - 0
ambari-web/test/controllers/main/admin/kerberos/step4_controller_test.js

@@ -212,4 +212,41 @@ describe('App.KerberosWizardStep4Controller', function() {
     });
   });
 
+  describe("#createCategoryForServices()", function() {
+    var controller = App.KerberosWizardStep4Controller.create({
+      wizardController: {
+        name: 'addServiceController'
+      }
+    });
+    beforeEach(function() {
+      sinon.stub(App.StackService, 'find').returns([
+        Em.Object.create({
+          serviceName: 'HDFS',
+          displayName: 'HDFS',
+          isInstalled: true
+        }),
+        Em.Object.create({
+          serviceName: 'MAPREDUCE2',
+          displayName: 'MapReduce 2',
+          isInstalled: false,
+          isSelected: true
+        })
+      ]);
+    });
+
+    afterEach(function() {
+      App.StackService.find.restore();
+    });
+
+    it('for add service', function() {
+      expect(controller.createCategoryForServices()).to.eql([App.ServiceConfigCategory.create({ name: 'HDFS', displayName: 'HDFS', collapsedByDefault: true}),
+        App.ServiceConfigCategory.create({ name: 'MAPREDUCE2', displayName: 'MapReduce 2', collapsedByDefault: true})]);
+    });
+
+    it('for kerberos wizard', function() {
+      controller.set('wizardController.name', 'KerberosWizard');
+      expect(controller.createCategoryForServices()).to.eql([App.ServiceConfigCategory.create({ name: 'HDFS', displayName: 'HDFS', collapsedByDefault: true})]);
+    });
+  })
+
 });