#!/bin/bash
#
# OpenNebula automatic node setup

set -ve

STORAGE_IP="10.3.1.1"
STORAGE_IP_IB="172.22.1.1"
ONEADMIN_HOME="/var/lib/one"
ONEUID=200


#apt-get update

#
# Initialize oneadmin user and nfs mounts
#

#SetUp oneadmin environment
echo "Add oneadmin user."
grep oneadmin:x:200 /etc/passwd ||
adduser --disabled-password --uid $ONEUID --home ${ONEADMIN_HOME} oneadmin

if grep datastore /etc/fstab
then
	echo Skip configuring NFS.
else
	echo eth/ib?
	read NET
	#Install NFS
	apt-get -y install nfs-common vim-nox language-pack-hu
	sed -i 's/^# Domain.*/Domain = cloud.ik.bme.hu/' /etc/idmapd.conf
	restart idmapd
	#Create datastore and mounts
	mkdir -p /datastore
	chown oneadmin:oneadmin /datastore
	#Add mount options to fstab
	case "$NET" in
	eth)
	    cat << EOF >> /etc/fstab 
	    #NFS datastore
	    ${STORAGE_IP}:/datastore   /datastore      nfs     rw       0       0 
	    ${STORAGE_IP}:/oneadmin_home       /var/lib/one    nfs    rw      0       0 
EOF
	;;
	ib)
	    cat << EOF >> /etc/fstab 
	    #NFS datastore
	    ${STORAGE_IP_IB}:/datastore   /datastore      nfs     rw       0       0 
	    ${STORAGE_IP_IB}:/oneadmin_home       /var/lib/one    nfs    rw      0       0 
EOF
	;;
	*)
	     echo "Unknown NET parameter exiting..."
	     exit 1;
	;;
	esac
	#Remount from fstab
	mount -a
fi

echo "Add oneadmin sudoer command."
if ! grep ^oneadmin /etc/sudoers
then
	echo -e "\noneadmin ALL= (ALL) NOPASSWD: /usr/bin/ovs-vsctl\noneadmin ALL= (ALL) NOPASSWD: /usr/bin/ovs-ofctl
" >> /etc/sudoers
fi

#Copy files from mounted home
cp ${ONEADMIN_HOME}/setup/rc.local /etc/rc.local
#
# Install OpenVSwitch
#
#Fist blacklist the bridge module
if ! grep bridge /etc/modprobe.d/blacklist.conf
then
cat <<EOF >>/etc/modprobe.d/blacklist.conf
blacklist bridge
EOF
fi
#Install OpenVSwitch
umount /var/lib/one
apt-get install openvswitch-brcompat openvswitch-switch openvswitch-controller
sed -i 's/^# BRCOMPAT.*/BRCOMPAT=yes/' /etc/default/openvswitch-switch
/etc/init.d/openvswitch-switch restart


#
#Install opennebula_node package
#
apt-get install opennebula-node kvm qemu-utils

mount /var/lib/one

#Copy libvirt default configuration
cp ${ONEADMIN_HOME}/setup/qemu.conf /etc/libvirt/qemu.conf 
cp ${ONEADMIN_HOME}/setup/libvirtd.conf  /etc/libvirt/libvirtd.conf

#Enbale opennebula to use the kvm
addgroup oneadmin kvm
addgroup oneadmin cloud

#ssh
mkdir /root/.ssh
cp ${ONEADMIN_HOME}/setup/authorized_keys_root /root/.ssh/authorized_keys
chown root:root /root/.ssh/authorized_keys
chown root:root -R /root/.ssh

/etc/init.d/libvirt-bin restart

echo "Installation finished please reboot!"