upgrade_400.shΒΆ

#!/usr/bin/env bash

# Loop through each user folder in /projects
sudo find /projects -maxdepth 1 -type d -print | while read f; do
    ownr=`echo "${f}" | cut -d'/' -f 3`
    # Skip blank owners (happens for /projects by itself)
    if [ -z "$ownr" ]; then continue; fi
    # Fix project rc (this should match the functionality in functions.sh -> fix_project_rc)
    sudo find "${f}" -maxdepth 1 -type d -print | while read PROJECT_HOME; do
        project_name=`echo "${PROJECT_HOME}" | cut -d'/' -f 4`
        # Skip blank owners (happens for /projects/owner by itself)
        if [ -z "$project_name" ]; then continue; fi
        oldline='export CONDA_ENVS_PATH=$WAKARI_PROJECT_HOME/envs:$CONDA_ENVS_PATH'
        newline='export CONDA_ENVS_PATH=$WAKARI_PROJECT_HOME/envs:${CONDA_ENVS_PATH:-DEFAULTS}'
        sudo cp "${PROJECT_HOME}"/.projectrc "${PROJECT_HOME}"/.projectrc.new
        sudo sed "s+$oldline+$newline+" "${PROJECT_HOME}"/.projectrc.new | sudo tee "${PROJECT_HOME}"/.projectrc > /dev/null
    done
    # Change /projects/owner to be owned by wakari
    echo "Upgrading projects owned by ${ownr}. This could take several minutes..."
    sudo chown wakari:wakari "${f}"
    sudo chmod 711 "${f}"
    sudo setfacl -m u:"${ownr}":rwx "${f}"
    # Change ownership of any root-owned files to the project owner
    sudo find "${f}" -user root -exec chown "${ownr}":"${ownr}" {} \;
    # Give wakari ACL permissions for all projects
    sudo find "${f}" -type d '!' -user wakari -exec setfacl -m u:wakari:rwX,d:u:wakari:rwX '{}' ';'
    sudo find "${f}" -type f '!' -user wakari -exec setfacl -m u:wakari:rwX '{}' ';'
    # Force re-granting of permissions at next project startup
    sudo find "${f}" -maxdepth 3 -name .skip_perms -exec rm {} \;
done

# Fix ownership of pidfiles
echo "Fixing pidfile ownership"
sudo chown -R wakari:wakari /opt/wakari/wakari-compute/var/run/compute-launcher-apps/

# Fix ownership of logfiles
echo "Fixing logfile ownership"
sudo chown -R wakari:wakari /opt/wakari/wakari-compute/var/log/wakari/compute-launcher-apps/

echo "Done upgrading."