#!/bin/bash
-# Copyright (c) 2016 Cisco and/or its affiliates.
+# Copyright (c) 2018 Cisco and/or its affiliates.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
exit 1
fi
DATE=$(date +%Y-%m-%d)
-OS="ubuntu-14.04.4"
+
+if [ "$1" = "ubuntu-14.04.4" ]
+then
+ OS="ubuntu-14.04.4"
+ VIRL_TOPOLOGY_FILE="listmaker/virl-listmaker-ubuntu-14.04.4.yaml"
+elif [ "$1" = "ubuntu-16.04.1" ]
+then
+ OS="ubuntu-16.04.1"
+ VIRL_TOPOLOGY_FILE="listmaker/virl-listmaker-ubuntu-16.04.1.yaml"
+else
+ echo "Please provide OS as parameter:"
+ echo "Options: ${0} [ubuntu-14.04.4|ubuntu-16.04.1]"
+ exit 1
+fi
+
RELEASE="${OS}_${DATE}_${VERSION}"
OUTPUT_DIR="lists/${RELEASE}"
echo "Building release ${RELEASE}."
-echo "Storinging data in ${OUTPUT_DIR}/."
+echo "Storing data in ${OUTPUT_DIR}/."
# APT packages wanted
APT_WANTLIST_INFRA="nfs-common cloud-init"
-APT_WANTLIST_CSIT="python-dev python-virtualenv git"
-APT_WANTLIST_VPP="dkms"
+APT_WANTLIST_CSIT="python python-minimal python-dev python-pip python-virtualenv
+ python2.7 python2.7-minimal git strongswan socat python-cffi python3-cffi
+ python3 python3-cffi python3-cffi-backend python3-ply python3-pycparser
+ python-cffi-backend"
+APT_WANTLIST_TLDK="libpcap0.8-dev libpcap-dev cmake tcpdump"
+APT_WANTLIST_VPP="dkms bridge-utils libmbedcrypto0 libmbedtls10 libmbedx509-0
+ libpython2.7-minimal libpython-stdlib libpython2.7-stdlib libc6
+ python-pycparser python-ply libssl1.0"
APT_WANTLIST_TREX="zlib1g-dev unzip"
APT_WANTLIST_NESTED="qemu-system-x86"
+APT_WANTLIST_JAVA="openjdk-8-jdk-headless"
+#Docker is currently disabled due to issues with apt repositories retrieval
+#APT_WANTLIST_DOCKER="docker-engine"
# For now, let us NOT incude WANTLIST_NESTED in the below. We're installing qemu
# separately from a separate source.
-APT_WANTLIST="$APT_WANTLIST_INFRA $APT_WANTLIST_CSIT $APT_WANTLIST_VPP $WANTLIST_TREX"
+APT_WANTLIST="$APT_WANTLIST_INFRA $APT_WANTLIST_CSIT $APT_WANTLIST_VPP $APT_WANTLIST_TREX $APT_WANTLIST_TLDK"
APT_OUTPUTFILE="${OUTPUT_DIR}/apt-packages.txt"
SSH_USER="root"
SSH_PASS="csit"
-VIRL_TOPOLOGY_FILE="listmaker/virl-listmaker.yaml"
-
###
### Spin up simulation
###
done
echo "IP is $ip"
-sleep 10
+sleep 30
-if ping -w 60 -c 2 $ip > /dev/null
+if ping -w 60 -c 10 $ip > /dev/null
then
echo Host $ip alive
else
-o LogLevel=error ${SSH_USER}@${ip} "$@"
}
+if [ "$OS" = "ubuntu-14.04.4" ]
+then
do_ssh "cat - > /etc/apt/sources.list" <<_EOF
deb http://us.archive.ubuntu.com/ubuntu/ trusty main restricted
deb-src http://us.archive.ubuntu.com/ubuntu/ trusty main restricted
deb http://security.ubuntu.com/ubuntu trusty-security multiverse
deb-src http://security.ubuntu.com/ubuntu trusty-security multiverse
_EOF
-
+elif [ "$OS" = "ubuntu-16.04.1" ]
+then
+do_ssh "cat - > /etc/apt/sources.list" <<_EOF
+deb http://us.archive.ubuntu.com/ubuntu/ xenial main restricted
+deb-src http://us.archive.ubuntu.com/ubuntu/ xenial main restricted
+deb http://us.archive.ubuntu.com/ubuntu/ xenial-updates main restricted
+deb-src http://us.archive.ubuntu.com/ubuntu/ xenial-updates main restricted
+deb http://us.archive.ubuntu.com/ubuntu/ xenial universe
+deb-src http://us.archive.ubuntu.com/ubuntu/ xenial universe
+deb http://us.archive.ubuntu.com/ubuntu/ xenial-updates universe
+deb-src http://us.archive.ubuntu.com/ubuntu/ xenial-updates universe
+deb http://us.archive.ubuntu.com/ubuntu/ xenial multiverse
+deb-src http://us.archive.ubuntu.com/ubuntu/ xenial multiverse
+deb http://us.archive.ubuntu.com/ubuntu/ xenial-updates multiverse
+deb-src http://us.archive.ubuntu.com/ubuntu/ xenial-updates multiverse
+deb http://us.archive.ubuntu.com/ubuntu/ xenial-backports main restricted universe multiverse
+deb-src http://us.archive.ubuntu.com/ubuntu/ xenial-backports main restricted universe multiverse
+deb http://security.ubuntu.com/ubuntu xenial-security main restricted
+deb-src http://security.ubuntu.com/ubuntu xenial-security main restricted
+deb http://security.ubuntu.com/ubuntu xenial-security universe
+deb-src http://security.ubuntu.com/ubuntu xenial-security universe
+deb http://security.ubuntu.com/ubuntu xenial-security multiverse
+deb-src http://security.ubuntu.com/ubuntu xenial-security multiverse
+_EOF
+fi
### FIXME: Need error handling around all this
do_ssh apt-get update
do_ssh DEBIAN_FRONTEND=noninteractive apt-get -y install $APT_WANTLIST
### Install qemu ($APT_WANTLIST_NESTED) separately from PPA
+if [ "$OS" = "ubuntu-14.04.4" ]
+then
do_ssh "cat - >> /etc/apt/sources.list" <<_EOF
# For a custom qemu build
deb http://ppa.launchpad.net/syseleven-platform/virtualization/ubuntu trusty main
deb-src http://ppa.launchpad.net/syseleven-platform/virtualization/ubuntu trusty main
_EOF
+fi
do_ssh apt-get --allow-unauthenticated update
do_ssh apt-get --print-uris --allow-unauthenticated -y install $APT_WANTLIST_NESTED >> $APT_TEMPFILE
do_ssh DEBIAN_FRONTEND=noninteractive apt-get --allow-unauthenticated -y install $APT_WANTLIST_NESTED
+### Install Java ($APT_WANTLIST_JAVA) separately from PPA
+if [ "$OS" = "ubuntu-14.04.4" ]
+then
+do_ssh "cat - >> /etc/apt/sources.list" <<_EOF
+# For java
+deb http://ppa.launchpad.net/openjdk-r/ppa/ubuntu trusty main
+_EOF
+fi
+do_ssh apt-get --allow-unauthenticated update
+do_ssh apt-get --print-uris --allow-unauthenticated -y install $APT_WANTLIST_JAVA >> $APT_TEMPFILE
+do_ssh DEBIAN_FRONTEND=noninteractive apt-get --allow-unauthenticated -y install $APT_WANTLIST_JAVA
+
+### Install Docker ($APT_WANTLIST_DOCKER) separately from PPA
+#if [ "$OS" = "ubuntu-14.04.4" ]
+#then
+#do_ssh "cat - >> /etc/apt/sources.list" <<_EOF
+## For Docker
+#deb https://apt.dockerproject.org/repo ubuntu-trusty main
+#_EOF
+#elif [ "$OS" = "ubuntu-16.04.1" ]
+#then
+#do_ssh "cat - >> /etc/apt/sources.list" <<_EOF
+## For Docker
+#deb https://apt.dockerproject.org/repo ubuntu-xenial main
+#_EOF
+#fi
+#do_ssh apt-get --allow-unauthenticated update
+#do_ssh apt-get --print-uris --allow-unauthenticated -y install $APT_WANTLIST_DOCKER >> $APT_TEMPFILE
+#do_ssh DEBIAN_FRONTEND=noninteractive apt-get --allow-unauthenticated -y install $APT_WANTLIST_DOCKER
+
cat $APT_TEMPFILE | grep MD5Sum | sort > $APT_OUTPUTFILE
rm -f $APT_TEMPFILE