Sfoglia il codice sorgente

AMBARI-15843 Adding Test Connection widget to a theme for custom service requires JS change. (ababiichuk)

ababiichuk 9 anni fa
parent
commit
05d8743bcb

+ 15 - 3
ambari-web/app/controllers/main/service/info/configs.js

@@ -556,9 +556,9 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ConfigsLoader, A
   addHostNamesToConfigs: function(serviceConfig) {
     serviceConfig.get('configCategories').forEach(function(c) {
       if (c.showHost) {
-        var stackComponent = App.StackServiceComponent.find(c.name);
-        var component = stackComponent.get('isMaster') ? App.MasterComponent.find(c.name) : App.SlaveComponent.find(c.name);
-        var hProperty = App.config.createHostNameProperty(serviceConfig.get('serviceName'), c.name, component.get('hostNames') || [], stackComponent);
+        var stackComponent = App.StackServiceComponent.find(c.name),
+          value = this.getComponentHostValue(c.name);
+        var hProperty = App.config.createHostNameProperty(serviceConfig.get('serviceName'), c.name, value, stackComponent);
         serviceConfig.get('configs').push(App.ServiceConfigProperty.create(hProperty));
       }
     }, this);
@@ -579,6 +579,18 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ConfigsLoader, A
     }, this);
   },
 
+  /**
+   * Method to get host for master or slave component
+   *
+   * @param componentName
+   * @returns {Array}
+   */
+  getComponentHostValue: function(componentName) {
+    var stackComponent = App.StackServiceComponent.find(componentName);
+    var component = stackComponent.get('isMaster') ? App.MasterComponent.find(componentName) : App.SlaveComponent.find(componentName);
+    return component.get('hostNames') || []
+  },
+
   /**
    * Trigger loadSelectedVersion
    * @method doCancel

+ 23 - 10
ambari-web/app/controllers/wizard/step7_controller.js

@@ -774,17 +774,8 @@ App.WizardStep7Controller = Em.Controller.extend(App.ServerValidatorMixin, App.E
   addHostNamesToConfigs: function(serviceConfig, masterComponents, slaveComponents) {
     serviceConfig.get('configCategories').forEach(function(c) {
       if (c.showHost) {
-        var value = [];
         var componentName = c.name;
-        var masters = masterComponents && masterComponents.filterProperty('component', componentName);
-        if (masters.length) {
-          value = masters.mapProperty('hostName');
-        } else {
-          var slaves = slaveComponents && slaveComponents.findProperty('componentName', componentName);
-          if (slaves) {
-            value = slaves.hosts.mapProperty('hostName');
-          }
-        }
+        var value = this.getComponentHostValue(componentName, masterComponents, slaveComponents);
         var stackComponent = App.StackServiceComponent.find(componentName);
         var hProperty = App.config.createHostNameProperty(serviceConfig.get('serviceName'), componentName, value, stackComponent);
         var newConfigName = Em.get(hProperty, 'name');
@@ -795,6 +786,28 @@ App.WizardStep7Controller = Em.Controller.extend(App.ServerValidatorMixin, App.E
     }, this);
   },
 
+  /**
+   * Method to get host for master or slave component
+   *
+   * @param componentName
+   * @param masterComponents
+   * @param slaveComponents
+   * @returns {Array}
+   */
+  getComponentHostValue: function(componentName, masterComponents, slaveComponents) {
+    var value = [];
+    var masters = masterComponents && masterComponents.filterProperty('component', componentName);
+    if (masters.length) {
+      value = masters.mapProperty('hostName');
+    } else {
+      var slaves = slaveComponents && slaveComponents.findProperty('componentName', componentName);
+      if (slaves) {
+        value = slaves.hosts.mapProperty('hostName');
+      }
+    }
+    return value || [];
+  },
+
   /**
    * create new child configs from overrides, attach them to parent config
    * override - value of config, related to particular host(s)

+ 0 - 5
ambari-web/app/models/stack_service.js

@@ -346,11 +346,6 @@ App.StackService.configCategories = function () {
         App.ServiceConfigCategory.create({ name: 'KnoxSSOSettings', displayName: 'Knox SSO Settings'})
       ]);
       break;
-    case 'RANGER_KMS':
-      serviceConfigCategories.pushObjects([
-        App.ServiceConfigCategory.create({ name: 'RANGER_KMS_SERVER', displayName: 'Ranger KMS Server', showHost: true})
-      ]);
-      break;
     case 'ACCUMULO':
       serviceConfigCategories.pushObjects([
         App.ServiceConfigCategory.create({ name: 'General', displayName: 'General'})

+ 12 - 0
ambari-web/app/utils/config.js

@@ -346,6 +346,18 @@ App.config = Em.Object.create({
     }
   },
 
+  /**
+   * Get component name from config name string
+   *
+   * @param configName
+   * @returns {string}
+   */
+  getComponentName: function(configName) {
+    var match = configName.match(/^(.*)_host[s]?$/) || [],
+      component = match[1];
+    return component ? component.toUpperCase() : "";
+  },
+
   /**
    * This method merge properties form <code>stackConfigProperty<code> which are taken from stack
    * with <code>UIConfigProperty<code> which are hardcoded on UI

+ 14 - 1
ambari-web/app/views/common/configs/widgets/test_db_connection_widget_view.js

@@ -78,7 +78,20 @@ App.TestDbConnectionWidgetView = App.ConfigWidgetView.extend({
       var split = requiredProperties[key].split('/');
       var fileName =  split[0] + '.xml';
       var configName = split[1];
-      return serviceConfigs.filterProperty('filename',fileName).findProperty('name', configName);
+      var requiredConfig = serviceConfigs.filterProperty('filename',fileName).findProperty('name', configName);
+      if (!requiredConfig) {
+        var componentName = App.config.getComponentName(configName);
+        var stackComponent = App.StackServiceComponent.find(componentName);
+        if (stackComponent && stackComponent.get('componentName')) {
+          var value = this.get('controller').getComponentHostValue(componentName,
+            this.get('controller.wizardController.content.masterComponentHosts'),
+            this.get('controller.wizardController.content.slaveComponentHosts'));
+          var hProperty = App.config.createHostNameProperty(serviceName, componentName, value, stackComponent);
+          return App.ServiceConfigProperty.create(hProperty);
+        }
+      } else {
+        return requiredConfig;
+      }
     }, this);
 
     this.set('requiredProperties', requiredServiceConfigs);

+ 13 - 0
ambari-web/test/utils/config_test.js

@@ -874,4 +874,17 @@ describe('App.config', function () {
     });
   });
 
+  describe('#getComponentName', function () {
+    [
+      { configName: 'somename_host', componentName: 'SOMENAME' },
+      { configName: 'somename_hosts', componentName: 'SOMENAME' },
+      { configName: 'somenamehost', componentName: '' },
+      { configName: 'somenamehosts', componentName: '' }
+    ].forEach(function (t) {
+      it('format config name ' + t.configName + ' to component ', function() {
+        expect(App.config.getComponentName(t.configName)).to.equal(t.componentName);
+      });
+    });
+  });
+
 });