#!/bin/bash

set -eux

status-set maintenance "Installing: configuring apt" || true
SERIES=$(lsb_release -sc)
DEB_LINE="http://archive.ubuntu.com/ubuntu/ $SERIES-proposed restricted main multiverse universe"
apt-add-repository -y ppa:juju/stable
if [[ ! -f /etc/apt/preferences.d/proposed-updates ]]; then
    cat << EOC | tee /etc/apt/preferences.d/proposed-updates
Package: *
Pin: release a=$SERIES-proposed
Pin-Priority: 400
EOC
fi
if ! grep "$SERIES-proposed" /etc/apt/sources.list; then
    echo "deb $DEB_LINE" | tee -a /etc/apt/sources.list
fi

status-set maintenance "Installing: installing packages" || true
apt-get update
apt-get install -y ntp make bzr git lxc

status-set maintenance "Installing: moving directories to big partition" || true
if [[ -n $(df -h | grep /mnt | tr -s ' ' |  cut -d ' ' -f 4 | grep G) ]]; then
    if [[ ! -d /mnt/jenkins ]]; then
        cp -rp /var/lib/jenkins /mnt
        mv /var/lib/jenkins /var/lib/jenkins.old
        ln -s /mnt/jenkins /var/lib/jenkins
        chown -h jenkins:jenkins /var/lib/jenkins
    fi
    if [[ ! -d /mnt/lxc ]]; then
        cp -rp /var/lib/lxc /mnt
        mv /var/lib/lxc /var/lib/lxc.old
        ln -s /mnt/lxc /var/lib/lxc
    fi
    if [[ ! -d /mnt/lxd && -d /var/lib/lxd ]]; then
        cp -rp /var/lib/lxd /mnt
        mv /var/lib/lxd /var/lib/lxd.old
        ln -s /mnt/lxd /var/lib/lxd
        chown -h lxd:lxd /var/lib/lxd
    fi
fi

status-set maintenance "Installing: setting up jenkins permissions" || true
usermod -a -G lxd jenkins || true
if [[ ! -f /etc/sudoers.d/91-jenkins ]]; then
    echo 'jenkins ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/91-jenkins
fi
chmod 0440 /etc/sudoers.d/91-jenkins

status-set maintenance "Installing: setting up jenkins ssh" || true
test -d /var/lib/jenkins/.ssh/ || mkdir -p /var/lib/jenkins/.ssh/
if [[ ! -f /var/lib/jenkins/.ssh/authorized_keys ]]; then
    cat /home/ubuntu/.ssh/authorized_keys | tee -a /var/lib/jenkins/.ssh/authorized_keys
fi
chmod 700 /var/lib/jenkins/.ssh/
chmod 600 /var/lib/jenkins/.ssh/authorized_keys
chown -R jenkins:jenkins /var/lib/jenkins/.ssh

status-set maintenance "Installed" || true
