in ambari-web/app/controllers/main/service/info/configs.js [530:645]
loadComponentConfigs: function (configs, componentConfig, restartData) {
var localDB = this.getInfoForDefaults();
var recommendedDefaults = {};
var s = this.get('serviceConfigsData').findProperty('serviceName', this.get('content.serviceName'));
var defaultGroupSelected = this.get('selectedConfigGroup.isDefault');
var defaults = [];
if (s.defaultsProviders) {
s.defaultsProviders.forEach(function(defaultsProvider) {
var d = defaultsProvider.getDefaults(localDB);
defaults.push(d);
for (var name in d) {
recommendedDefaults[name] = d[name];
}
});
}
if (s.configsValidator) {
s.configsValidator.set('recommendedDefaults', recommendedDefaults);
}
configs.forEach(function (_serviceConfigProperty) {
console.log("config", _serviceConfigProperty);
if (!_serviceConfigProperty) return;
var overrides = _serviceConfigProperty.overrides;
// we will populate the override properties below
_serviceConfigProperty.overrides = null;
if (_serviceConfigProperty.isOverridable === undefined) {
_serviceConfigProperty.isOverridable = true;
}
var serviceConfigProperty = App.ServiceConfigProperty.create(_serviceConfigProperty);
var propertyName = serviceConfigProperty.get('name');
if (restartData != null && propertyName in restartData.propertyToHostAndComponent) {
serviceConfigProperty.set('isRestartRequired', true);
var message = '<ul>';
for (var host in restartData.propertyToHostAndComponent[propertyName]) {
var appHost = App.Host.find(host);
message += "<li>" + appHost.get('publicHostName');
message += "<ul>";
restartData.propertyToHostAndComponent[propertyName][host].forEach(function (comp) {
message += "<li>" + App.format.role(comp) + "</li>"
});
message += "</ul></li>";
}
message += "</ul>";
serviceConfigProperty.set('restartRequiredMessage', message);
}
if (serviceConfigProperty.get('serviceName') === this.get('content.serviceName')) {
// Do not reset values when reconfiguring.
// This might be useful to setting better descriptions
// or default values sometime in the future.
// defaults.forEach(function(defaults) {
// for(var name in defaults) {
// if (serviceConfigProperty.name == name) {
// serviceConfigProperty.set('value', defaults[name]);
// serviceConfigProperty.set('defaultValue', defaults[name]);
// }
// }
// });
if (s.configsValidator) {
var validators = s.configsValidator.get('configValidators');
for (var validatorName in validators) {
if (serviceConfigProperty.name == validatorName) {
serviceConfigProperty.set('serviceValidator', s.configsValidator);
}
}
}
console.log("config result", serviceConfigProperty);
} else {
serviceConfigProperty.set('isVisible', false);
}
if (overrides != null) {
for (var overridenValue in overrides) {
var newSCP = App.ServiceConfigProperty.create(_serviceConfigProperty);
newSCP.set('value', overridenValue);
newSCP.set('isOriginalSCP', false); // indicated this is overridden value,
newSCP.set('parentSCP', serviceConfigProperty);
if (App.supports.hostOverrides && defaultGroupSelected) {
newSCP.set('group', overrides[overridenValue]);
newSCP.set('isEditable', false);
}
var parentOverridesArray = serviceConfigProperty.get('overrides');
if (parentOverridesArray == null) {
parentOverridesArray = Ember.A([]);
serviceConfigProperty.set('overrides', parentOverridesArray);
}
parentOverridesArray.pushObject(newSCP);
console.debug("createOverrideProperty(): Added:", newSCP, " to main-property:", serviceConfigProperty)
}
}
// serviceConfigProperty.serviceConfig = componentConfig;
if (App.supports.hostOverrides) {
serviceConfigProperty.set('isEditable', defaultGroupSelected && !this.get('isHostsConfigsPage'));
} else {
if (App.get('isAdmin')) {
serviceConfigProperty.set('isEditable', serviceConfigProperty.get('isReconfigurable'));
} else {
serviceConfigProperty.set('isEditable', false);
}
}
componentConfig.configs.pushObject(serviceConfigProperty);
serviceConfigProperty.validate();
}, this);
var overrideToAdd = this.get('overrideToAdd');
if (overrideToAdd) {
overrideToAdd = componentConfig.configs.findProperty('name', overrideToAdd.name);
if (overrideToAdd) {
this.addOverrideProperty(overrideToAdd);
this.set('overrideToAdd', null);
}
}
},