generatePreMountCmds()

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;
  }