in ambari-web/app/controllers/wizard/step3_controller.js [773:970]
parseWarnings: function (data) {
data = App.testMode ? data : this.filterBootHosts(data);
var warnings = [];
var warning;
var hosts = [];
data.items.sort(function (a, b) {
if (a.Hosts.host_name > b.Hosts.host_name) {
return 1;
}
if (a.Hosts.host_name < b.Hosts.host_name) {
return -1;
}
return 0;
});
data.items.forEach(function (_host) {
var host = {
name: _host.Hosts.host_name,
warnings: []
}
if (!_host.Hosts.last_agent_env) {
// in some unusual circumstances when last_agent_env is not available from the _host,
// skip the _host and proceed to process the rest of the hosts.
console.log("last_agent_env is missing for " + _host.Hosts.host_name + ". Skipping _host check.");
return;
}
//parse all directories and files warnings for host
//todo: to be removed after check in new API
var stackFoldersAndFiles = _host.Hosts.last_agent_env.stackFoldersAndFiles || _host.Hosts.last_agent_env.paths;
stackFoldersAndFiles.forEach(function (path) {
warning = warnings.filterProperty('category', 'fileFolders').findProperty('name', path.name);
if (warning) {
warning.hosts.push(_host.Hosts.host_name);
warning.onSingleHost = false;
} else {
warning = {
name: path.name,
hosts: [_host.Hosts.host_name],
category: 'fileFolders',
onSingleHost: true
}
warnings.push(warning);
}
host.warnings.push(warning);
}, this);
//parse all package warnings for host
_host.Hosts.last_agent_env.installedPackages.forEach(function (_package) {
warning = warnings.filterProperty('category', 'packages').findProperty('name', _package.name);
if (warning) {
warning.hosts.push(_host.Hosts.host_name);
warning.version = _package.version,
warning.onSingleHost = false;
} else {
warning = {
name: _package.name,
version: _package.version,
hosts: [_host.Hosts.host_name],
category: 'packages',
onSingleHost: true
}
warnings.push(warning);
}
host.warnings.push(warning);
}, this);
//parse all process warnings for host
//todo: to be removed after check in new API
var javaProcs = _host.Hosts.last_agent_env.hostHealth ? _host.Hosts.last_agent_env.hostHealth.activeJavaProcs : _host.Hosts.last_agent_env.javaProcs;
javaProcs.forEach(function (process) {
warning = warnings.filterProperty('category', 'processes').findProperty('pid', process.pid);
if (warning) {
warning.hosts.push(_host.Hosts.host_name);
warning.onSingleHost = false;
} else {
warning = {
name: (process.command.substr(0, 35) + '...'),
hosts: [_host.Hosts.host_name],
category: 'processes',
user: process.user,
pid: process.pid,
command: '<table><tr><td style="word-break: break-all;">' +
((process.command.length < 500) ? process.command : process.command.substr(0, 230) + '...' +
'<p style="text-align: center">................</p>' +
'...' + process.command.substr(-230)) + '</td></tr></table>',
onSingleHost: true
}
warnings.push(warning);
}
host.warnings.push(warning);
}, this);
//parse all service warnings for host
//todo: to be removed after check in new API
if (_host.Hosts.last_agent_env.hostHealth && _host.Hosts.last_agent_env.hostHealth.liveServices) {
_host.Hosts.last_agent_env.hostHealth.liveServices.forEach(function (service) {
if (service.status === 'Unhealthy') {
warning = warnings.filterProperty('category', 'services').findProperty('name', service.name);
if (warning) {
warning.hosts.push(_host.Hosts.host_name);
warning.onSingleHost = false;
} else {
warning = {
name: service.name,
hosts: [_host.Hosts.host_name],
category: 'services',
onSingleHost: true
}
warnings.push(warning);
}
host.warnings.push(warning);
}
}, this);
}
//parse all user warnings for host
//todo: to be removed after check in new API
if (_host.Hosts.last_agent_env.existingUsers) {
_host.Hosts.last_agent_env.existingUsers.forEach(function (user) {
warning = warnings.filterProperty('category', 'users').findProperty('name', user.userName);
if (warning) {
warning.hosts.push(_host.Hosts.host_name);
warning.onSingleHost = false;
} else {
warning = {
name: user.userName,
hosts: [_host.Hosts.host_name],
category: 'users',
onSingleHost: true
}
warnings.push(warning);
}
host.warnings.push(warning);
}, this);
}
//parse misc warnings for host
var umask = _host.Hosts.last_agent_env.umask;
if (umask && umask !== 18) {
warning = warnings.filterProperty('category', 'misc').findProperty('name', umask);
if (warning) {
warning.hosts.push(_host.Hosts.host_name);
warning.onSingleHost = false;
} else {
warning = {
name: umask,
hosts: [_host.Hosts.host_name],
category: 'misc',
onSingleHost: true
}
warnings.push(warning);
}
host.warnings.push(warning);
}
var firewallRunning = _host.Hosts.last_agent_env.iptablesIsRunning;
if (firewallRunning!==null && firewallRunning) {
var name = Em.I18n.t('installer.step3.hostWarningsPopup.firewall.name');
warning = warnings.filterProperty('category', 'firewall').findProperty('name', name);
if (warning) {
warning.hosts.push(_host.Hosts.host_name);
warning.onSingleHost = false;
} else {
warning = {
name: name,
hosts: [_host.Hosts.host_name],
category: 'firewall',
onSingleHost: true
}
warnings.push(warning);
}
host.warnings.push(warning);
}
hosts.push(host);
}, this);
warnings.forEach(function (warn) {
if (warn.hosts.length < 11) {
warn.hostsList = warn.hosts.join('<br>')
} else {
warn.hostsList = warn.hosts.slice(0,10).join('<br>') + '<br> ' + Em.I18n.t('installer.step3.hostWarningsPopup.moreHosts').format(warn.hosts.length - 10);
}
});
hosts.unshift({
name: 'All Hosts',
warnings: warnings
});
this.set('warnings', warnings);
this.set('warningsByHost', hosts);
},