#!/bin/bash

#Your KernelCare key, by default we take first parameter
KEY=$1 # your kernelcare key, or two letters "IP" (case sensitive) if server is licensed by IP

#Number of tries to uninstall ksplice
RETRY=3 #-1 stands for unlimited
SLEEP=60 # number of seconds to sleep between attempts
SUCCESS=0
LOG=/var/log/ksplice2kcare.log
KCARE_INSTALL_SCRIPT_URL="https://repo.cloudlinux.com/kernelcare/kernelcare_install.sh"


date > $LOG

echolog ()
{
    echo $@
    echo $@ >>$LOG
}

test_curl() {
    command -v curl 2>&1 >/dev/null
    return $?
}

uninstall_ksplice() {
    if [ -f /etc/redhat-release ]; then
        yum -y remove uptrack ksplice-uptrack
    else
        apt-get -y remove uptrack ksplice-uptrack
    fi
}

install_kernelcare() {
    if test_curl
    then
        curl -s $KCARE_INSTALL_SCRIPT_URL | bash
    else
        wget -qq -O - $KCARE_INSTALL_SCRIPT_URL | bash
    fi
}

# Test if the system 64bit
if [ `uname -m` != 'x86_64' ]; then echolog "non-64bit system, existing"; exit -1; fi
if [ -z "$KEY" ]; then echolog "No KernelCare key specified"; exit -1; fi

echolog "Staring conversion process"

while [ $RETRY -ne 0 ]; do
    if /sbin/lsmod 2>>$LOG|grep -q ksplice 2>>$LOG
    then
        uptrack-remove -y --all >>$LOG 2>&1
    else
        RETRY=0
        SUCCESS=1
        break
    fi
    if [ $RETRY -ne -1 ]
    then
        RETRY=$[$RETRY-1]
    fi
    echolog "RETRYING...$RETRY"
    sleep $SLEEP

done


if [ $SUCCESS -eq 1 ]
then
    uninstall_ksplice >>$LOG 2>&1
    install_kernelcare >>$LOG 2>&1
    if [ $KEY != "IP" ]
    then
        kcarectl --register $KEY >>$LOG 2>&1
        kcarectl --update >>$LOG 2>&1
    fi
    echolog DONE
else
    echolog "Error removing ksplice modules"
    exit -1
fi
