Browse Source

AMBARI-8979. Show current kerberos descriptor plan on Disable Kerberos page. (jaimin)

Jaimin Jetly 10 năm trước cách đây
mục cha
commit
3af7a83533

+ 1 - 0
ambari-web/app/assets/test/tests.js

@@ -49,6 +49,7 @@ var files = ['test/init_model_test',
   'test/controllers/main/alerts/alert_instances_controller_test',
   'test/controllers/main/alerts/add_alert_definition/step1_controller_test',
   'test/controllers/main/alerts/manage_alert_notifications_controller_test',
+  'test/controllers/main/admin/kerberos_test',
   'test/controllers/main/admin/kerberos/step4_controller_test',
   'test/controllers/main/admin/stack_and_upgrade_controller_test',
   'test/controllers/main/admin/stack_version/stack_version_details_controller_test',

+ 1 - 1
ambari-web/app/config.js

@@ -19,7 +19,7 @@
 
 var App = require('app');
 
-App.version = '1.3.0'; // filled out by set-ambari-version.sh script
+App.version = ''; // filled out by set-ambari-version.sh script
 App.testMode = (location.port == '3333'); // test mode is automatically enabled if running on brunch server
 App.testModeDelayForActions = 10000;
 App.skipBootstrap = false;

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

@@ -18,7 +18,9 @@
 
 
 var App = require('app');
-App.MainAdminKerberosController = Em.Controller.extend({
+require('controllers/main/admin/kerberos/step4_controller');
+
+App.MainAdminKerberosController = App.KerberosWizardStep4Controller.extend({
   name: 'mainAdminKerberosController',
   securityEnabled: false,
   dataIsLoaded: false,
@@ -54,7 +56,7 @@ App.MainAdminKerberosController = Em.Controller.extend({
       bodyClass: Ember.View.extend({
         templateName: require('templates/main/admin/security/notify_security_off_popup')
       })
-    })
+    });
   },
 
   getUpdatedSecurityStatus: function () {
@@ -86,9 +88,43 @@ App.MainAdminKerberosController = Em.Controller.extend({
         self.set('dataIsLoaded', true);
       });
     }
-  }
-});
-
-
+  },
 
+  /**
+   * Override <code>App.KerberosWizardStep4Controller</code>
+   *
+   * @returns {$.ajax}
+   */
+  loadStackDescriptorConfigs: function () {
+    return App.ajax.send({
+      sender: this,
+      name: 'admin.kerberos.kerberos_descriptor',
+      data: {
+        stackName: App.get('currentStackName'),
+        stackVersionNumber: App.get('currentStackVersionNumber')
+      }
+    });
+  },
 
+  
+  /**
+   * Override <code>App.KerberosWizardStep4Controller</code>
+   * 
+   * @param {App.ServiceConfigProperty[]} configs
+   * @returns {App.ServiceConfigProperty[]} 
+   */
+  prepareConfigProperties: function(configs) {
+    var configProperties = configs.slice(0);
+    var installedServiceNames = ['Cluster'].concat(App.Service.find().mapProperty('serviceName'));
+    configProperties = configProperties.filter(function(item) {
+      return installedServiceNames.contains(item.get('serviceName'));
+    });
+    configProperties.forEach(function(item) {
+      if (item.get('serviceName') == 'Cluster') item.set('category', 'General');
+      else item.set('category', 'Advanced');
+    });
+    configProperties.setEach('isEditable', false);
+    return configProperties;
+  }
+  
+});

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

@@ -16,6 +16,9 @@
  * limitations under the License.
  */
 
+var App = require('app');
+require('controllers/wizard/step7_controller');
+
 App.KerberosWizardStep4Controller = App.WizardStep7Controller.extend(App.AddSecurityConfigs, {
   name: 'kerberosWizardStep4Controller',
 

+ 1 - 0
ambari-web/app/messages.js

@@ -957,6 +957,7 @@ Em.I18n.translations = {
   'admin.kerberos.wizard.configuration.note': 'This is the initial configuration created by Enable Kerberos wizard.',
   'admin.kerberos.wizard.header':'Enable Kerberos Wizard',
   'admin.kerberos.button.enable': 'Enable Kerberos',
+  'admin.kerberos.button.disable': 'Disable Kerberos',
   'admin.kerberos.wizard.step1.header': 'Get Started',
   'admin.kerberos.wizard.step2.header': 'Configure Kerberos',
   'admin.kerberos.wizard.step3.header': 'Install and Test Kerberos',

+ 4 - 1
ambari-web/app/templates/main/admin/kerberos.hbs

@@ -19,10 +19,13 @@
   {{#if securityEnabled}}
     <div>
       <p class="text-success">{{t admin.security.enabled}}
-        <a class="btn btn-padding btn-warning admin-disable-security-btn" {{bindAttr disabled="isSubmitDisabled"}} {{action notifySecurityOffPopup target="controller"}}>{{t admin.security.button.disable}} </a>
+        <a class="btn btn-padding btn-warning admin-disable-security-btn" {{bindAttr disabled="isSubmitDisabled"}} {{action notifySecurityOffPopup target="controller"}}>{{t admin.kerberos.button.disable}} </a>
         <br/>
       </p>
     </div>
+    <div id="serviceConfig">
+      {{view App.ServicesConfigView}}
+    </div>
   {{else}}
     <div>
       <p class="muted">{{t admin.security.disabled}}

+ 6 - 0
ambari-web/app/utils/ajax/ajax.js

@@ -1268,6 +1268,12 @@ var urls = {
       }
     }
   },
+  'admin.kerberos.kerberos_descriptor': {
+    // @todo: replace with real URL after API implementation
+    //        /clusters/{clusterName}?fields=Clusters/kerberos_descriptor
+    'real': '/stacks/{stackName}/versions/{stackVersionNumber}?fields=Versions/kerberos_descriptor',
+    'mock': '/data/wizard/kerberos/stack_descriptors.json'
+  },
   'admin.kerberize.stack_descriptor': {
     'real': '/stacks/{stackName}/versions/{stackVersionNumber}?fields=Versions/kerberos_descriptor',
     'mock': '/data/wizard/kerberos/stack_descriptors.json'

+ 56 - 0
ambari-web/test/controllers/main/admin/kerberos_test.js

@@ -0,0 +1,56 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var App = require('app');
+
+describe('App.MainAdminKerberosController', function() {
+  describe('#prepareConfigProperties', function() {
+    beforeEach(function() {
+      this.controller = App.MainAdminKerberosController.create({});
+      sinon.stub(App.Service, 'find').returns([
+        Em.Object.create({ serviceName: 'KERBEROS'}),
+        Em.Object.create({ serviceName: 'HDFS' })
+      ]);
+      this.result = this.controller.prepareConfigProperties([
+        Em.Object.create({ name: 'prop1', isEditable: true, serviceName: 'SERVICE1'}),
+        Em.Object.create({ name: 'prop2', isEditable: true, serviceName: 'KERBEROS'}),
+        Em.Object.create({ name: 'prop3', isEditable: true, serviceName: 'HDFS'}),
+        Em.Object.create({ name: 'prop4', isEditable: true, serviceName: 'Cluster'}),
+        Em.Object.create({ name: 'prop5', isEditable: true, serviceName: 'SERVICE1'}),
+      ]);
+    });
+
+    afterEach(function() {
+      App.Service.find.restore();
+    });
+
+    ['prop1', 'prop5'].forEach(function(item) {
+      it('property `{0}` should be absent'.format(item), function() {
+        expect(this.result.findProperty('name', item)).to.be.undefined;
+      });
+    });
+
+    ['prop2', 'prop3', 'prop4'].forEach(function(item) {
+      it('property `{0}` should be present and not editable'.format(item), function() {
+        var prop = this.result.findProperty('name', item);
+        expect(prop).to.be.ok;
+        expect(prop.get('isEditable')).to.be.false;
+      });
+    });
+  });
+});