|
@@ -17,6 +17,7 @@
|
|
*/
|
|
*/
|
|
|
|
|
|
var App = require('app');
|
|
var App = require('app');
|
|
|
|
+var configPropertyHelper = require('utils/configs/config_property_helper');
|
|
/**
|
|
/**
|
|
* By Step 7, we have the following information stored in App.db and set on this
|
|
* By Step 7, we have the following information stored in App.db and set on this
|
|
* controller by the router.
|
|
* controller by the router.
|
|
@@ -727,7 +728,7 @@ App.WizardStep7Controller = Em.Controller.extend(App.ServerValidatorMixin, App.E
|
|
masterComponentHosts: this.get('wizardController.content.masterComponentHosts'),
|
|
masterComponentHosts: this.get('wizardController.content.masterComponentHosts'),
|
|
slaveComponentHosts: this.get('wizardController.content.slaveComponentHosts')
|
|
slaveComponentHosts: this.get('wizardController.content.slaveComponentHosts')
|
|
};
|
|
};
|
|
- var serviceConfigs = App.config.renderConfigs(configs, storedConfigs, this.get('allSelectedServiceNames'), this.get('installedServiceNames'), localDB);
|
|
|
|
|
|
+ var serviceConfigs = this.renderConfigs(configs, storedConfigs, this.get('allSelectedServiceNames'), this.get('installedServiceNames'), localDB);
|
|
if (this.get('wizardController.name') === 'addServiceController') {
|
|
if (this.get('wizardController.name') === 'addServiceController') {
|
|
serviceConfigs.setEach('showConfig', true);
|
|
serviceConfigs.setEach('showConfig', true);
|
|
serviceConfigs.setEach('selected', false);
|
|
serviceConfigs.setEach('selected', false);
|
|
@@ -766,6 +767,100 @@ App.WizardStep7Controller = Em.Controller.extend(App.ServerValidatorMixin, App.E
|
|
this.set('stepConfigs', serviceConfigs);
|
|
this.set('stepConfigs', serviceConfigs);
|
|
},
|
|
},
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * render configs, distribute them by service
|
|
|
|
+ * and wrap each in ServiceConfigProperty object
|
|
|
|
+ * @param configs
|
|
|
|
+ * @param storedConfigs
|
|
|
|
+ * @param allSelectedServiceNames
|
|
|
|
+ * @param installedServiceNames
|
|
|
|
+ * @param localDB
|
|
|
|
+ * @return {App.ServiceConfig[]}
|
|
|
|
+ */
|
|
|
|
+ renderConfigs: function (configs, storedConfigs, allSelectedServiceNames, installedServiceNames, localDB) {
|
|
|
|
+ var renderedServiceConfigs = [];
|
|
|
|
+ var services = [];
|
|
|
|
+
|
|
|
|
+ App.config.get('preDefinedServiceConfigs').forEach(function (serviceConfig) {
|
|
|
|
+ var serviceName = serviceConfig.get('serviceName');
|
|
|
|
+ if (allSelectedServiceNames.contains(serviceName) || serviceName === 'MISC') {
|
|
|
|
+ if (!installedServiceNames.contains(serviceName) || serviceName === 'MISC') {
|
|
|
|
+ serviceConfig.set('showConfig', true);
|
|
|
|
+ }
|
|
|
|
+ services.push(serviceConfig);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ services.forEach(function (service) {
|
|
|
|
+ var configsByService = [];
|
|
|
|
+ var serviceConfigs = configs.filterProperty('serviceName', service.get('serviceName'));
|
|
|
|
+ serviceConfigs.forEach(function (_config) {
|
|
|
|
+ var serviceConfigProperty = App.ServiceConfigProperty.create(_config);
|
|
|
|
+ this.updateHostOverrides(serviceConfigProperty, _config);
|
|
|
|
+ if (!storedConfigs && !serviceConfigProperty.get('hasInitialValue')) {
|
|
|
|
+ configPropertyHelper.initialValue(serviceConfigProperty, localDB, configs);
|
|
|
|
+ }
|
|
|
|
+ serviceConfigProperty.validate();
|
|
|
|
+ configsByService.pushObject(serviceConfigProperty);
|
|
|
|
+ }, this);
|
|
|
|
+ var serviceConfig = App.config.createServiceConfig(service.get('serviceName'));
|
|
|
|
+ serviceConfig.set('showConfig', service.get('showConfig'));
|
|
|
|
+ serviceConfig.set('configs', configsByService);
|
|
|
|
+ if (['addServiceController', 'installerController'].contains(this.get('wizardController.name'))) {
|
|
|
|
+ this.addHostNamesToConfigs(serviceConfig, localDB.masterComponentHosts, localDB.slaveComponentHosts);
|
|
|
|
+ }
|
|
|
|
+ renderedServiceConfigs.push(serviceConfig);
|
|
|
|
+ }, this);
|
|
|
|
+ return renderedServiceConfigs;
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Add host name properties to appropriate categories (for installer only)
|
|
|
|
+ * @param serviceConfig
|
|
|
|
+ * @param masterComponents
|
|
|
|
+ * @param slaveComponents
|
|
|
|
+ */
|
|
|
|
+ addHostNamesToConfigs: function(serviceConfig, masterComponents, slaveComponents) {
|
|
|
|
+ serviceConfig.get('configCategories').forEach(function(c) {
|
|
|
|
+ if (c.showHost) {
|
|
|
|
+ var value = [];
|
|
|
|
+ var componentName = c.name;
|
|
|
|
+ var masters = masterComponents.filterProperty('component', componentName);
|
|
|
|
+ if (masters.length) {
|
|
|
|
+ value = masters.mapProperty('hostName');
|
|
|
|
+ } else {
|
|
|
|
+ var slaves = slaveComponents.findProperty('componentName', componentName);
|
|
|
|
+ if (slaves) {
|
|
|
|
+ value = slaves.hosts.mapProperty('hostName');
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ var stackComponent = App.StackServiceComponent.find(componentName);
|
|
|
|
+ var hProperty = App.config.createHostNameProperty(serviceConfig.get('serviceName'), componentName, value, stackComponent);
|
|
|
|
+ serviceConfig.get('configs').push(App.ServiceConfigProperty.create(hProperty));
|
|
|
|
+ }
|
|
|
|
+ }, this);
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * create new child configs from overrides, attach them to parent config
|
|
|
|
+ * override - value of config, related to particular host(s)
|
|
|
|
+ * @param configProperty
|
|
|
|
+ * @param storedConfigProperty
|
|
|
|
+ */
|
|
|
|
+ updateHostOverrides: function (configProperty, storedConfigProperty) {
|
|
|
|
+ if (storedConfigProperty.overrides != null && storedConfigProperty.overrides.length > 0) {
|
|
|
|
+ var overrides = [];
|
|
|
|
+ storedConfigProperty.overrides.forEach(function (overrideEntry) {
|
|
|
|
+ // create new override with new value
|
|
|
|
+ var newSCP = App.ServiceConfigProperty.create(configProperty);
|
|
|
|
+ newSCP.set('value', overrideEntry.value);
|
|
|
|
+ newSCP.set('isOriginalSCP', false); // indicated this is overridden value,
|
|
|
|
+ newSCP.set('parentSCP', configProperty);
|
|
|
|
+ overrides.pushObject(newSCP);
|
|
|
|
+ });
|
|
|
|
+ configProperty.set('overrides', overrides);
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* When NameNode HA is enabled some configs based on <code>dfs.nameservices</code> should be changed
|
|
* When NameNode HA is enabled some configs based on <code>dfs.nameservices</code> should be changed
|
|
* This happens only if service is added AFTER NN HA is enabled
|
|
* This happens only if service is added AFTER NN HA is enabled
|
|
@@ -891,7 +986,7 @@ App.WizardStep7Controller = Em.Controller.extend(App.ServerValidatorMixin, App.E
|
|
Em.keys(configsMap).forEach(function (filename) {
|
|
Em.keys(configsMap).forEach(function (filename) {
|
|
Em.keys(configsMap[filename]).forEach(function (propertyName) {
|
|
Em.keys(configsMap[filename]).forEach(function (propertyName) {
|
|
configs.push(configMixin.createDefaultConfig(propertyName,
|
|
configs.push(configMixin.createDefaultConfig(propertyName,
|
|
- configMixin.getServiceByConfigType(filename).get('serviceName'),
|
|
|
|
|
|
+ configMixin.getServiceByConfigType(filename) ? configMixin.getServiceByConfigType(filename).get('serviceName') : 'MISC',
|
|
configMixin.getOriginalFileName(filename),
|
|
configMixin.getOriginalFileName(filename),
|
|
false, {
|
|
false, {
|
|
value: configsMap[filename][propertyName],
|
|
value: configsMap[filename][propertyName],
|