in ambari-web/app/models/service_config.js [419:546]
unionAllMountPoints: function (isOnlyFirstOneNeeded, localDB) {
var hostname = '';
var mountPointsPerHost = [];
var mountPointAsRoot;
var masterComponentHostsInDB = localDB.masterComponentHosts;
var slaveComponentHostsInDB = localDB.slaveComponentHosts;
var hostsInfo = localDB.hosts; // which we are setting in installerController in step3.
App.Host.find().forEach(function(item){
if(!hostsInfo[item.get('id')]){
hostsInfo[item.get('id')] = {
name: item.get('id'),
cpu: item.get('cpu'),
memory: item.get('memory'),
disk_info: item.get('diskInfo'),
bootStatus: "REGISTERED",
isInstalled: true
};
}
});
var temp = '';
var setOfHostNames = [];
switch (this.get('name')) {
case 'dfs.namenode.name.dir':
case 'dfs.name.dir':
var components = masterComponentHostsInDB.filterProperty('component', 'NAMENODE');
components.forEach(function (component) {
setOfHostNames.push(component.hostName);
}, this);
break;
case 'fs.checkpoint.dir':
case 'dfs.namenode.checkpoint.dir':
var components = masterComponentHostsInDB.filterProperty('component', 'SECONDARY_NAMENODE');
components.forEach(function (component) {
setOfHostNames.push(component.hostName);
}, this);
break;
case 'dfs.data.dir':
case 'dfs.datanode.data.dir':
temp = slaveComponentHostsInDB.findProperty('componentName', 'DATANODE');
temp.hosts.forEach(function (host) {
setOfHostNames.push(host.hostName);
}, this);
break;
case 'mapred.local.dir':
temp = slaveComponentHostsInDB.findProperty('componentName', 'TASKTRACKER') || slaveComponentHostsInDB.findProperty('componentName', 'NODEMANAGER');
temp.hosts.forEach(function (host) {
setOfHostNames.push(host.hostName);
}, this);
break;
case 'yarn.nodemanager.log-dirs':
case 'yarn.nodemanager.local-dirs':
temp = slaveComponentHostsInDB.findProperty('componentName', 'NODEMANAGER');
temp.hosts.forEach(function (host) {
setOfHostNames.push(host.hostName);
}, this);
break;
case 'zk_data_dir':
var components = masterComponentHostsInDB.filterProperty('component', 'ZOOKEEPER_SERVER');
components.forEach(function (component) {
setOfHostNames.push(component.hostName);
}, this);
break;
case 'oozie_data_dir':
var components = masterComponentHostsInDB.filterProperty('component', 'OOZIE_SERVER');
components.forEach(function (component) {
setOfHostNames.push(component.hostName);
}, this);
break;
case 'hbase.tmp.dir':
var temp = slaveComponentHostsInDB.findProperty('componentName', 'HBASE_REGIONSERVER');
temp.hosts.forEach(function (host) {
setOfHostNames.push(host.hostName);
}, this);
break;
}
// In Add Host Wizard, if we did not select this slave component for any host, then we don't process any further.
if (setOfHostNames.length === 0) {
return;
}
var allMountPoints = [];
for (var i = 0; i < setOfHostNames.length; i++) {
hostname = setOfHostNames[i];
mountPointsPerHost = hostsInfo[hostname].disk_info;
mountPointAsRoot = mountPointsPerHost.findProperty('mountpoint', '/');
mountPointsPerHost = mountPointsPerHost.filter(function (mPoint) {
return !(['/', '/home', '/boot'].contains(mPoint.mountpoint) || ['devtmpfs', 'tmpfs', 'vboxsf'].contains(mPoint.type));
});
mountPointsPerHost.forEach(function (mPoint) {
if( !allMountPoints.findProperty("mountpoint", mPoint.mountpoint)) {
allMountPoints.push(mPoint);
}
}, this);
}
if (allMountPoints.length == 0) {
allMountPoints.push(mountPointAsRoot);
}
this.set('value', '');
if (!isOnlyFirstOneNeeded) {
allMountPoints.forEach(function (eachDrive) {
var mPoint = this.get('value');
if (!mPoint) {
mPoint = "";
}
if (eachDrive.mountpoint === "/") {
mPoint += this.get('defaultDirectory') + "\n";
} else {
mPoint += eachDrive.mountpoint + this.get('defaultDirectory') + "\n";
}
this.set('value', mPoint);
this.set('defaultValue', mPoint);
}, this);
} else {
var mPoint = allMountPoints[0].mountpoint;
if (mPoint === "/") {
mPoint = this.get('defaultDirectory') + "\n";
} else {
mPoint = mPoint + this.get('defaultDirectory') + "\n";
}
this.set('value', mPoint);
this.set('defaultValue', mPoint);
}
},