#!/bin/bash
#
# A script for upgrading from VzLinux to OpenVZ.
# Upgrade steps are like the following:
# 1. Install openvz-release package
# 2. Install a group of packages specific to OpenVZ
#

# Just for the case, check if we have openvz-release
if [ -f /etc/openvz-release ]; then
    echo "/etc/openvz-release file found! Have you already updated your system to OpenVZ or to Virtuozzo?"
    exit 1
fi

SERVER_REPO="https://download.openvz.org"
PKG_PATH="virtuozzo/releases/7.0/x86_64/os/Packages/o"
LOG="/var/log/do-upgrade-openvz7.log"

echo "Switched to openvz-release on `date`" > ${LOG}

if [ ! -f /usr/bin/wget ]; then
    echo "wget not found! Installing it first..." | tee -a ${LOG}
    yum install -y wget
fi

echo "Downloading openvz-release RPM from ${SERVER_REPO}/${PKG_PATH}" | tee -a ${LOG}

# Download the current version of openvz-release package available on server
# to a temp location
tmpdir=`mktemp -d`
if [ $? -ne 0 ]; then
    echo "Failed to create a temporary directory to download openvz-release package" | tee -a ${LOG}
    exit 1
fi
wget -r -l1 --no-parent --no-directories -A"*openvz-release*" ${SERVER_REPO}/${PKG_PATH} -P ${tmpdir} 2>/dev/null
if [ $? -ne 0 ]; then
    echo "Failed to download openvz-release package" | tee -a ${LOG}
    rm -rf ${tmpdir}
    exit 1
fi
release_pkg_path=`ls ${tmpdir}/*openvz-release* | tail -1`
if [ -z ${release_pkg_path} ] ; then
    echo "Failed to download openvz-release package" | tee -a ${LOG}
    rm -rf ${tmpdir}
    exit 1
fi
release_pkg=`basename ${release_pkg_path}`

echo "Installing ${release_pkg} ..." | tee -a ${LOG}
yum install -y ${release_pkg_path} 2>&1 | tee -a ${LOG}

# Cleanup no longer needed temp location with downloaded openvz-release package
rm -rf ${tmpdir}

# If libvirt is installed, force its update before installing Vz packages
# We need our libvirt and in some cases this can't be solved by dependencies
rpm -qa | grep libvirt-daemon-driver | xargs yum remove -y
rpm -qa "libvirt*" --qf="%{NAME}\n" | sort -u | xargs yum distro-sync -y

# Install OpenVZ-specific packages
yum groupinstall -y templates core ps base vz qemu 2>&1 | tee -a ${LOG}

yum update -y vzkernel 2>&1 | tee -a ${LOG}

yum reinstall -y openvz-release

/usr/libexec/create_bridges.py

# Adjust services
systemctl enable vz

systemctl start prl-disp 2>&1 | tee -a ${LOG}
