in ambari-web/app/views/common/configs/services_config.js [98:279]
miscConfigChange: function (manuallyChangedProperty) {
var changedProperty;
if(manuallyChangedProperty.get("id")){
changedProperty = [manuallyChangedProperty];
}else{
changedProperty = this.get("serviceConfigs").filterProperty("editDone", true);
}
if (changedProperty.length > 0) {
changedProperty = changedProperty.objectAt(0);
} else {
return;
}
if (this.get('controller.selectedService.serviceName') == 'MISC') {
var newValue = changedProperty.get("value");
var stepConfigs = this.get("controller.stepConfigs");
this.affectedProperties = [];
var curConfigs = "";
var affectedPropertyName = App.get('isHadoop2Stack') ? "dfs.permissions.superusergroup" : "dfs.permissions.supergroup";
if (changedProperty.get("name") == "hdfs_user") {
curConfigs = stepConfigs.findProperty("serviceName", "HDFS").get("configs");
if (newValue != curConfigs.findProperty("name", affectedPropertyName).get("value")) {
this.affectedProperties.push(
{
serviceName: "HDFS",
propertyName: affectedPropertyName,
propertyDisplayName: affectedPropertyName,
newValue: newValue,
curValue: curConfigs.findProperty("name", affectedPropertyName).get("value"),
changedPropertyName: "hdfs_user"
}
);
}
if ($.trim(newValue) != $.trim(curConfigs.findProperty("name", "dfs.cluster.administrators").get("value"))) {
this.affectedProperties.push(
{
serviceName: "HDFS",
propertyName: "dfs.cluster.administrators",
propertyDisplayName: "dfs.cluster.administrators",
newValue: " " + $.trim(newValue),
curValue: curConfigs.findProperty("name", "dfs.cluster.administrators").get("value"),
changedPropertyName: "hdfs_user"
}
);
}
} else if (changedProperty.get("name") == "hbase_user" && !App.get('isHadoop2Stack')) {
curConfigs = stepConfigs.findProperty("serviceName", "HDFS").get("configs");
if (newValue != curConfigs.findProperty("name", "dfs.block.local-path-access.user").get("value")) {
this.affectedProperties.push(
{
serviceName: "HDFS",
propertyName: "dfs.block.local-path-access.user",
propertyDisplayName: "dfs.block.local-path-access.user",
newValue: newValue,
curValue: curConfigs.findProperty("name", "dfs.block.local-path-access.user").get("value"),
changedPropertyName: "hbase_user"
}
);
}
var hbaseCurConfigs = stepConfigs.findProperty("serviceName", "HBASE").get("configs");
if (newValue != hbaseCurConfigs.findProperty("name", "hbase.superuser").get("value")) {
this.affectedProperties.push(
{
serviceName: "HBASE",
propertyName: "hbase.superuser",
propertyDisplayName: "hbase.superuser",
newValue: newValue,
curValue: hbaseCurConfigs.findProperty("name", "hbase.superuser").get("value"),
changedPropertyName: "hbase_user"
}
);
}
} else if (changedProperty.get("name") == "user_group") {
if (!((this.get("controller.selectedServiceNames").indexOf("MAPREDUCE") >= 0) || (this.get("controller.selectedServiceNames").indexOf("YARN") >= 0))) {
return;
}
if(this.get("controller.selectedServiceNames").indexOf("MAPREDUCE") >= 0) {
curConfigs = stepConfigs.findProperty("serviceName", "MAPREDUCE").get("configs");
if (newValue != curConfigs.findProperty("name", "mapreduce.tasktracker.group").get("value")) {
this.affectedProperties.push(
{
serviceName: "MAPREDUCE",
propertyName: "mapreduce.tasktracker.group",
propertyDisplayName: "mapreduce.tasktracker.group",
newValue: newValue,
curValue: curConfigs.findProperty("name", "mapreduce.tasktracker.group").get("value"),
changedPropertyName: "user_group"
}
)
}
if ($.trim(newValue) != $.trim(curConfigs.findProperty("name", "mapreduce.cluster.administrators").get("value"))) {
this.affectedProperties.push(
{
serviceName: "MAPREDUCE",
propertyName: "mapreduce.cluster.administrators",
propertyDisplayName: "mapreduce.cluster.administrators",
newValue: " " + $.trim(newValue),
curValue: curConfigs.findProperty("name", "mapreduce.cluster.administrators").get("value"),
changedPropertyName: "user_group"
}
);
}
}
if(this.get("controller.selectedServiceNames").indexOf("MAPREDUCE2") >= 0) {
curConfigs = stepConfigs.findProperty("serviceName", "MAPREDUCE2").get("configs");
if ($.trim(newValue) != $.trim(curConfigs.findProperty("name", "mapreduce.cluster.administrators").get("value"))) {
this.affectedProperties.push(
{
serviceName: "MAPREDUCE2",
propertyName: "mapreduce.cluster.administrators",
propertyDisplayName: "mapreduce.cluster.administrators",
newValue: " " + $.trim(newValue),
curValue: curConfigs.findProperty("name", "mapreduce.cluster.administrators").get("value"),
changedPropertyName: "user_group"
}
);
}
}
if (this.get("controller.selectedServiceNames").indexOf("YARN") >= 0) {
curConfigs = stepConfigs.findProperty("serviceName", "YARN").get("configs");
if (newValue != curConfigs.findProperty("name", "yarn.nodemanager.linux-container-executor.group").get("value")) {
this.affectedProperties.push(
{
serviceName: "YARN",
propertyName: "yarn.nodemanager.linux-container-executor.group",
propertyDisplayName: "yarn.nodemanager.linux-container-executor.group",
newValue: newValue,
curValue: curConfigs.findProperty("name", "yarn.nodemanager.linux-container-executor.group").get("value"),
changedPropertyName: "user_group"
}
)
}
}
}
if (this.affectedProperties.length > 0 && !this.get("controller.miscModalVisible")) {
this.newAffectedProperties = this.affectedProperties;
var self = this;
return App.ModalPopup.show({
classNames: ['modal-690px-width'],
showCloseButton: false,
header: "Warning: you must also change these Service properties",
onApply: function () {
self.get("newAffectedProperties").forEach(function (item) {
self.get("controller.stepConfigs").findProperty("serviceName", item.serviceName).get("configs")
.findProperty("name", item.propertyName).set("value", item.newValue);
});
self.get("controller").set("miscModalVisible", false);
this.hide();
},
onIgnore: function () {
self.get("controller").set("miscModalVisible", false);
this.hide();
},
onUndo: function () {
var affected = self.get("newAffectedProperties").objectAt(0);
self.get("controller.stepConfigs").findProperty("serviceName", "MISC").get("configs")
.findProperty("name", affected.changedPropertyName).set("value", $.trim(affected.curValue));
self.get("controller").set("miscModalVisible", false);
this.hide();
},
footerClass: Ember.View.extend({
classNames: ['modal-footer'],
template: Ember.Handlebars.compile([
'<div class="pull-right">',
'<button class="btn" {{action onUndo target="view.parentView"}}>Cancel</button>',
'<button class="btn btn-warning" {{action onIgnore target="view.parentView"}}>Ignore</button>',
'<button class="btn btn-success" {{action onApply target="view.parentView"}}>Apply</button>',
'</div>'
].join(''))
}),
bodyClass: Ember.View.extend({
templateName: require('templates/common/configs/propertyDependence'),
controller: this,
propertyChange: self.get("newAffectedProperties"),
didInsertElement: function () {
self.get("controller").set("miscModalVisible", true);
}
})
});
}
}
}.observes('categoryConfigs.@each.editDone'),