#!/bin/sh -e
#
#  Copyright (C) 2015 ScyllaDB

if [ "`id -u`" -ne 0 ]; then
    echo "Requires root permission."
    exit 1
fi

print_usage() {
    echo "scylla-install -d /dev/hda,/dev/hdb... -n eth0 -a -l /home/scylla/rpms"
    echo "  -d  specify disks for RAID"
    echo "  -n  specify NIC"
    echo "  -a  setup AMI instance"
    echo "  -l	install locally built .rpm/.deb on specified directory"
    exit 1
}

NIC=eth0
RAID=/dev/md0
AMI=0
LOCAL_PKG=
while getopts d:n:al:h OPT; do
    case "$OPT" in
        "n")
            NIC=$OPTARG
            ;;
        "d")
            DISKS=$OPTARG
            ;;
        "a")
            AMI=1
            ;;
        "l")
            LOCAL_PKG=$OPTARG
            ;;
        "h")
            print_usage
            ;;
    esac
done

if [ $AMI -eq 0 ] && [ "$DISKS" = "" ]; then
    print_usage
    exit 1
fi

SYSCONFIG_SETUP_ARGS="-n $NIC"
. /etc/os-release

if [ "$ID" = "ubuntu" ]; then
    if [ "$LOCAL_PKG" = "" ]; then
        echo "deb http://s3.amazonaws.com/downloads.scylladb.com/deb/ubuntu trusty/scylladb multiverse" > /etc/apt/sources.list.d/scylla.list
        apt-get update
        apt-get install -y --force-yes scylla-server scylla-jmx scylla-tools
    else
        apt-get install -y --force-yes gdebi-core
        gdebi $LOCAL_PKG/scylla-server*.deb $LOCAL_PKG/scylla-jmx*.deb $LOCAL_PKG/scylla-tools*.deb
    fi
else
    setenforce 0
    sed -e "s/enforcing/disabled/" /etc/sysconfig/selinux > /tmp/selinux
    mv /tmp/selinux /etc/sysconfig/
    if [ "$LOCAL_PKG" = "" ]; then
        if [ "$ID" = "fedora" ]; then
            curl https://s3.amazonaws.com/downloads.scylladb.com/rpm/fedora/scylla.repo > /etc/yum.repos.d/scylla.repo
        elif [ "$ID" = "centos" ] || [ "$ID" = "rhel" ]; then
            curl https://s3.amazonaws.com/downloads.scylladb.com/rpm/centos/scylla.repo > /etc/yum.repos.d/scylla.repo
        else
            echo "Unsupported distribution"
            exit 1
        fi
        yum install -y scylla-server scylla-server-debuginfo scylla-jmx scylla-tools
    else
        yum install -y $LOCAL_PKG/scylla-server*.x86_64.rpm $LOCAL_PKG/scylla-jmx*.noarch.rpm $LOCAL_PKG/scylla-tools*.noarch.rpm
    fi
    if [ $AMI -eq 1 ]; then
        SYSCONFIG_SETUP_ARGS="$SYSCONFIG_SETUP_ARGS -N -a"
        if [ "$LOCAL_PKG" = "" ]; then
            yum update -y
        else
            SYSCONFIG_SETUP_ARGS="$SYSCONFIG_SETUP_ARGS -k"
        fi
        grep -v ' - mounts' /etc/cloud/cloud.cfg > /tmp/cloud.cfg
        mv /tmp/cloud.cfg /etc/cloud/cloud.cfg
        mv /home/fedora/scylla-ami /usr/lib/scylla/scylla-ami
        chmod a+rx /usr/lib/scylla/scylla-ami/ds2_configure.py
    fi
    systemctl enable scylla-server.service
    systemctl enable scylla-jmx.service
    /usr/lib/scylla/scylla_ntp_setup -a
fi
/usr/lib/scylla/scylla_coredump_setup
if [ $AMI -eq 0 ]; then
    /usr/lib/scylla/scylla_bootparam_setup
    /usr/lib/scylla/scylla_raid_setup -d $DISKS -u
else
    /usr/lib/scylla/scylla_bootparam_setup -a
fi
/usr/lib/scylla/scylla_sysconfig_setup $SYSCONFIG_SETUP_ARGS
