#!/bin/bash

#replace with latest

KERNEL=4.4.68-33

#E.g. porto-kernel-4.4-stable-01
AGENTNAME=`hostname`

#Waiting for the net setup

while ! ping6 -c 1 search-xenial.dist.yandex.ru; do sleep 1; done

#Update sources lists

echo -e "deb http://search-kernel.dist.yandex.ru/search-kernel/ stable/amd64/\ndeb http://search-kernel.dist.yandex.ru/search-kernel/ unstable/amd64/\ndeb http://search-kernel.dist.yandex.ru/search-kernel/ stable/all/\ndeb http://search-kernel.dist.yandex.ru/search-kernel/ unstable/all/" | tee /etc/apt/sources.list.d/search-kernel.list

echo -e "deb http://search-xenial.dist.yandex.ru/search-xenial unstable/amd64/\ndeb http://search-xenial.dist.yandex.ru/search-xenial unstable/all/\ndeb http://search-xenial.dist.yandex.ru/search-xenial stable/amd64/\ndeb http://search-xenial.dist.yandex.ru/search-xenial stable/all/" | tee /etc/apt/sources.list.d/portod.list

apt-get update

#Install kernel

apt-get install -y linux-image-$KERNEL

#Install packages

apt-get install -y teamcity-agent unzip cmake debhelper pkg-config autoconf libtool protobuf-compiler libprotobuf-dev libncurses5-dev libnl-3-dev libnl-route-3-dev bison flex g++ dh-python python-all python-setuptools bash-completion libssl-dev python-protobuf python-psutil stress python-dev python-pip yandex-coverity

wget http://dist.yandex.ru/search-xenial//storage/140109/search-xenial/vmtouch_1.3.0yandex1_amd64.deb

sudo dpkg -i ./vmtouch_1.3.0yandex1_amd64.deb

pip install --upgrade psutil

#Prepare porto src checkout dir

mkdir -p /place/src/porto
chown -R teamcity:dpt_virtual_robots /place/src

#Import layers

wget  http://sandbox147.search.yandex.net:13578/4/1/122102414/ubuntu-precise.tgz

apt-get install -y yandex-porto
portoctl layer -I ubuntu-precise ./ubuntu-precise.tgz
apt-get purge -y yandex-porto

#Prepare uids

for g in porto porto-containers ; do
	getent group $g || groupadd $g
done

for u in porto-alice porto-bob; do
	id $u || useradd $u -G porto
	getent group ${u}-containers || groupadd ${u}-containers
done

id porto-charlie || useradd porto-charlie -G porto-containers
id porto-david || useradd porto-david -G porto-alice-containers

#Install agent

/etc/init.d/teamcity-agent install $AGENTNAME http://teamcity.yandex-team.ru teamcity

echo "#"`id -u teamcity`"   ALL=(ALL:ALL) NOPASSWD: ALL" | tee /etc/sudoers.d/teamcity
chmod 0440 /etc/sudoers.d/teamcity

#Startup scripts

cat <<EOF > /etc/systemd/system/porto-teamcity.service || true
[Unit]
Description=Teamcity agent for porto
After=network.target

[Service]

EnvironmentFile=/home/teamcity/teamcity.env

Type=forking
Restart=on-failure
RestartSec=2

User=teamcity
Group=dpt_virtual_robots
WorkingDirectory=/usr/local/teamcity-agents/$AGENTNAME

ExecStart=/usr/local/teamcity-agents/$AGENTNAME/bin/agent.sh start
ExecStop=/usr/local/teamcity-agents/$AGENTNAME/bin/agent.sh stop
EOF

cat <<EOF > /home/teamcity/teamcity.env || true
JAVA_HOME=/usr/local/java8
TEAMCITY_OPTS=-Dsun.security.ssl.allowUnsafeRenegotiation=true -Dnetworkaddress.cache.ttl=120 -Dfile.encoding=UTF-8 -Djava.net.preferIPv6Addresses=true
TEAMCITY_DATA_PATH=/var/lib/teamcity/BuildServer"
TEAMCITY_SERVER_MEM_OPTS=-Xms4g -Xmx16g -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError
TEAMCITY_SERVER_OPTS=-Dsun.security.ssl.allowUnsafeRenegotiation=true -Dnetworkaddress.cache.ttl=120 -Dfile.encoding=UTF-8 -Djava.net.preferIPv6Addresses=true -Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true
TEAMCITY_AGENT_MEM_OPTS=-Xms128m -Xmx1024m
TEAMCITY_AGENT_OPTS=-Dsun.security.ssl.allowUnsafeRenegotiation=true -Dnetworkaddress.cache.ttl=120 -Dfile.encoding=UTF-8 -Djava.net.preferIPv6Addresses=true
DEBFULLNAME=teamcity
DEBEMAIL=teamcity@yandex-team.ru
EOF

ln -s /etc/systemd/system/porto-teamcity.service /etc/systemd/system/multi-user.target.wants/porto-teamcity.service

systemctl daemon-reload
systemctl enable porto-teamcity

reboot
