in ambari-web/app/controllers/main/service/info/configs.js [697:869]
restartServicePopup: function (event) {
if (this.get("isSubmitDisabled")) {
return;
}
var header;
var message;
var messageClass;
var hasUnknown = false;
var value;
var flag = false;
var runningHosts = null;
var runningComponentCount = 0;
var unknownHosts = null;
var unknownComponentCount = 0;
var dfd = $.Deferred();
var self = this;
var serviceName = this.get('content.serviceName');
var displayName = this.get('content.displayName');
if (App.supports.hostOverrides ||
(serviceName !== 'HDFS' && this.get('content.isStopped') === true) ||
((serviceName === 'HDFS') && this.get('content.isStopped') === true && (!App.Service.find().someProperty('id', 'MAPREDUCE') || App.Service.find('MAPREDUCE').get('isStopped')))) {
// warn the user if any service directories are being changed
var dirChanged = false;
if (serviceName === 'HDFS') {
var hdfsConfigs = self.get('stepConfigs').findProperty('serviceName', 'HDFS').get('configs');
if (App.get('isHadoop2Stack')) {
if (
hdfsConfigs.findProperty('name', 'dfs.namenode.name.dir').get('isNotDefaultValue') ||
hdfsConfigs.findProperty('name', 'dfs.namenode.checkpoint.dir').get('isNotDefaultValue') ||
hdfsConfigs.findProperty('name', 'dfs.datanode.data.dir').get('isNotDefaultValue')
) {
dirChanged = true;
}
} else {
if (
hdfsConfigs.findProperty('name', 'dfs.name.dir').get('isNotDefaultValue') ||
hdfsConfigs.findProperty('name', 'fs.checkpoint.dir').get('isNotDefaultValue') ||
hdfsConfigs.findProperty('name', 'dfs.data.dir').get('isNotDefaultValue')
) {
dirChanged = true;
}
}
} else if (serviceName === 'MAPREDUCE') {
var mapredConfigs = self.get('stepConfigs').findProperty('serviceName', 'MAPREDUCE').get('configs');
if (
mapredConfigs.findProperty('name', 'mapred.local.dir').get('isNotDefaultValue') ||
mapredConfigs.findProperty('name', 'mapred.system.dir').get('isNotDefaultValue')
) {
dirChanged = true;
}
}
if (dirChanged) {
App.showConfirmationPopup(function () {
dfd.resolve();
}, Em.I18n.t('services.service.config.confirmDirectoryChange').format(displayName));
} else {
dfd.resolve();
}
dfd.done(function () {
var result = self.saveServiceConfigProperties();
App.router.get('clusterController').updateClusterData();
App.router.get('updateController').updateComponentConfig(function(){});
flag = result.flag;
if (result.flag === true) {
header = Em.I18n.t('services.service.config.saved');
message = Em.I18n.t('services.service.config.saved.message');
messageClass = 'alert alert-success';
// warn the user if any of the components are in UNKNOWN state
var uhc;
if (self.get('content.serviceName') !== 'HDFS' || (self.get('content.serviceName') === 'HDFS' && !App.Service.find().someProperty('id', 'MAPREDUCE'))) {
uhc = self.getHostComponentsByStatus([self.get('content')], App.HostComponentStatus.unknown);
} else {
uhc = self.getHostComponentsByStatus([self.get('content'), App.Service.find('MAPREDUCE')], App.HostComponentStatus.unknown);
}
unknownHosts = uhc.hosts;
unknownComponentCount = uhc.componentCount;
} else {
header = Em.I18n.t('common.failure');
message = result.message;
messageClass = 'alert alert-error';
value = result.value;
}
});
} else {
var rhc;
if (this.get('content.serviceName') !== 'HDFS' || (this.get('content.serviceName') === 'HDFS' && !App.Service.find().someProperty('id', 'MAPREDUCE'))) {
rhc = this.getHostComponentsByStatus([this.get('content')], App.HostComponentStatus.started);
header = Em.I18n.t('services.service.config.notSaved');
message = Em.I18n.t('services.service.config.msgServiceStop');
} else {
rhc = this.getHostComponentsByStatus([this.get('content'), App.Service.find('MAPREDUCE')], App.HostComponentStatus.started);
header = Em.I18n.t('services.service.config.notSaved');
message = Em.I18n.t('services.service.config.msgHDFSMapRServiceStop');
}
messageClass = 'alert alert-error';
runningHosts = rhc.hosts;
runningComponentCount = rhc.componentCount;
dfd.resolve();
}
dfd.done(function () {
App.ModalPopup.show({
header: header,
primary: Em.I18n.t('ok'),
secondary: null,
onPrimary: function () {
this.hide();
if (flag) {
self.loadStep();
}
},
bodyClass: Ember.View.extend({
flag: flag,
message: message,
messageClass: messageClass,
runningHosts: runningHosts,
runningComponentCount: runningComponentCount,
unknownHosts: unknownHosts,
unknownComponentCount: unknownComponentCount,
siteProperties: value,
getDisplayMessage: function () {
var displayMsg = [];
var siteProperties = this.get('siteProperties');
if (siteProperties) {
siteProperties.forEach(function (_siteProperty) {
var displayProperty = _siteProperty.siteProperty;
var displayNames = _siteProperty.displayNames;
/////////
if (displayNames && displayNames.length) {
if (displayNames.length === 1) {
displayMsg.push(displayProperty + Em.I18n.t('as') + displayNames[0]);
} else {
var name;
displayNames.forEach(function (_name, index) {
if (index === 0) {
name = _name;
} else if (index === siteProperties.length - 1) {
name = name + Em.I18n.t('and') + _name;
} else {
name = name + ', ' + _name;
}
}, this);
displayMsg.push(displayProperty + Em.I18n.t('as') + name);
}
} else {
displayMsg.push(displayProperty);
}
}, this);
}
return displayMsg;
}.property('siteProperties'),
runningHostsMessage: function () {
return Em.I18n.t('services.service.config.stopService.runningHostComponents').format(this.get('runningComponentCount'), this.get('runningHosts.length'));
}.property('runningComponentCount', 'runningHosts.length'),
unknownHostsMessage: function () {
return Em.I18n.t('services.service.config.stopService.unknownHostComponents').format(this.get('unknownComponentCount'), this.get('unknownHosts.length'));
}.property('unknownComponentCount', 'unknownHosts.length'),
templateName: require('templates/main/service/info/configs_save_popup')
})
})
});
},