in src/webportal/src/app/job-submission/models/data/mount-directories.js [133:209]
generatePreMountCmds(serverData, tmpFolder) {
const serverType = serverData.type;
let returnValue;
switch (serverType) {
case 'nfs':
returnValue = [
`mkdir --parents ${tmpFolder}`,
'apt-get install --assume-yes nfs-common',
];
break;
case 'samba':
returnValue = [
`mkdir --parents ${tmpFolder}`,
'apt-get install --assume-yes cifs-utils',
];
break;
case 'azurefile':
returnValue = [
`mkdir --parents ${tmpFolder}`,
'apt-get install --assume-yes cifs-utils',
];
if (serverData.proxy !== undefined && serverData.proxy.length === 2) {
returnValue.push('apt-get install --assume-yes sshpass');
const proxyInfo = serverData.proxy[0];
const proxyPassword = serverData.proxy[1];
const proxyIp =
proxyInfo.indexOf('@') === -1
? proxyInfo
: proxyInfo.substring(proxyInfo.indexOf('@') + 1);
returnValue.push(`mkdir --parents ~/.ssh`);
returnValue.push(`ssh-keyscan ${proxyIp} >> ~/.ssh/known_hosts`);
returnValue.push(
`sshpass -p '${proxyPassword}'` +
` ssh -N -f -L 445:${serverData.dataStore}:445 ${proxyInfo}`,
);
}
break;
case 'azureblob': {
const tmpPath = `/mnt/resource/blobfusetmp/${serverData.spn}`;
const cfgFile = `/${serverData.spn}.cfg`;
returnValue = [
'apt-get install --assume-yes wget curl lsb-release apt-transport-https',
"valid_release=('14.04' '15.10' '16.04' '16.10' '17.04' '17.10' '18.04' '18.10' '19.04')",
'release=`lsb_release -r | cut -f 2`',
'if [[ ! ${valid_release[@]} =~ ${release} ]]; then echo "Invalid OS version for Azureblob!"; exit 1; fi', // eslint-disable-line no-template-curly-in-string
'wget https://packages.microsoft.com/config/ubuntu/${release}/packages-microsoft-prod.deb', // eslint-disable-line no-template-curly-in-string
'dpkg -i packages-microsoft-prod.deb',
'apt-get update',
'apt-get install --assume-yes blobfuse fuse', // blob to mount and fuse to unmount
`mkdir --parents ${tmpPath}`,
// Generate mount point
`echo "accountName ${serverData.accountName}" >> ${cfgFile}`,
`echo "accountKey ${serverData.key}" >> ${cfgFile}`,
`echo "containerName ${serverData.containerName}" >> ${cfgFile}`,
`chmod 600 ${cfgFile}`,
`mkdir --parents ${tmpFolder}`,
];
break;
}
case 'hdfs':
returnValue = [
'apt-get install -y git fuse golang',
'git clone --recursive https://github.com/Microsoft/hdfs-mount.git',
'cd hdfs-mount',
'make',
'cp hdfs-mount /bin',
'cd ..',
'rm -rf hdfs-mount',
`mkdir --parents ${tmpFolder}`,
];
break;
default:
break;
}
return returnValue;
}