Updates documentation for Fraser release
[apex.git] / build / overcloud-full.sh
index 88f9685..f7d55e5 100755 (executable)
 # which accompanies this distribution, and is available at
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
-set -e
+set -xe
 source ./cache.sh
 source ./variables.sh
-source ./functions.sh
+source ./barometer-install.sh
 
 populate_cache "$rdo_images_uri/overcloud-full.tar"
 
-if [ ! -d images/ ]; then mkdir images; fi
-tar -xf cache/overcloud-full.tar -C images/
-mv -f images/overcloud-full.qcow2 images/overcloud-full_build.qcow2
-
-# Add extra space to the overcloud image
-qemu-img resize images/overcloud-full_build.qcow2 +1G
-LIBGUESTFS_BACKEND=direct virt-customize -a images/overcloud-full_build.qcow2 \
-                                         --run-command 'resize2fs /dev/sda'
+if [ ! -d ${BUILD_DIR} ]; then mkdir ${BUILD_DIR}; fi
+tar -xf ${CACHE_DIR}/overcloud-full.tar -C ${BUILD_DIR}/
+mv -f ${BUILD_DIR}/overcloud-full.qcow2 ${BUILD_DIR}/overcloud-full_build.qcow2
 
 ##########################################################
 #####  Prep initial overcloud image with common deps #####
 ##########################################################
 
+pushd ${BUILD_DIR} > /dev/null
+
 # prep opnfv-puppet-tripleo for undercloud
-clone_fork opnfv-puppet-tripleo
-pushd opnfv-puppet-tripleo > /dev/null
-git archive --format=tar.gz --prefix=tripleo/ HEAD > ../opnfv-puppet-tripleo.tar.gz
+python3 -B $BUILD_UTILS clone-fork -r apex-puppet-tripleo
+pushd apex-puppet-tripleo > /dev/null
+git archive --format=tar.gz --prefix=tripleo/ HEAD > ${BUILD_DIR}/apex-puppet-tripleo.tar.gz
 popd > /dev/null
 
 # download customized os-net-config
-rm -fr os-net-config
-git clone https://github.com/trozet/os-net-config.git -b stable/colorado
-pushd os-net-config > /dev/null
-pushd os_net_config > /dev/null
-git archive --format=tar.gz --prefix=os_net_config/ HEAD > ../../os-net-config.tar.gz
-popd > /dev/null
+python3 -B $BUILD_UTILS clone-fork -r apex-os-net-config
+pushd apex-os-net-config/os_net_config > /dev/null
+git archive --format=tar.gz --prefix=os_net_config/ HEAD > ${BUILD_DIR}/apex-os-net-config.tar.gz
 popd > /dev/null
 
-pushd images > /dev/null
+# tar up vsperf
+rm -rf vsperf vsperf.tar.gz
+git clone https://gerrit.opnfv.org/gerrit/vswitchperf vsperf
+tar czf vsperf.tar.gz vsperf
 
+# Increase disk size by 1500MB to accommodate more packages
+qemu-img resize overcloud-full_build.qcow2 +1500M
+
+# expand file system to max disk size
+# installing forked apex-puppet-tripleo
+# upload neutron port data plane status
+LIBGUESTFS_BACKEND=direct $VIRT_CUSTOMIZE \
+    --run-command "curl -f https://trunk.rdoproject.org/centos7-pike/delorean-deps.repo > /etc/yum.repos.d/delorean-deps.repo" \
+    --run-command "xfs_growfs /dev/sda" \
+    --upload ${BUILD_DIR}/apex-puppet-tripleo.tar.gz:/etc/puppet/modules \
+    --run-command "cd /etc/puppet/modules && rm -rf tripleo && tar xzf apex-puppet-tripleo.tar.gz" \
+    --upload ${BUILD_DIR}/apex-os-net-config.tar.gz:/usr/lib/python2.7/site-packages \
+    --run-command "cd /usr/lib/python2.7/site-packages/ && rm -rf os_net_config && tar xzf apex-os-net-config.tar.gz" \
+    --run-command "if ! rpm -qa | grep python-redis; then yum install -y python-redis; fi" \
+    --install epel-release \
+    --install unzip \
+    --upload ${BUILD_DIR}/vsperf.tar.gz:/var/opt \
+    --run-command "cd /var/opt && tar xzf vsperf.tar.gz" \
+    --run-command "sed -i -E 's/timeout=[0-9]+/timeout=60/g' /usr/share/openstack-puppet/modules/rabbitmq/lib/puppet/provider/rabbitmqctl.rb" \
+    --install patch \
+    --upload ${BUILD_ROOT}/patches/neutron_lib_dps.patch:/usr/lib/python2.7/site-packages/ \
+    --upload ${BUILD_ROOT}/patches/neutron_server_dps.patch:/usr/lib/python2.7/site-packages/ \
+    --upload ${BUILD_ROOT}/patches/neutron_openstacksdk_dps.patch:/usr/lib/python2.7/site-packages/ \
+    --upload ${BUILD_ROOT}/patches/neutron_openstackclient_dps.patch:/usr/lib/python2.7/site-packages/ \
+    --upload ${BUILD_ROOT}/patches/puppet-neutron-add-sfc.patch:/usr/share/openstack-puppet/modules/neutron/ \
+    --upload ${BUILD_ROOT}/patches/congress-parallel-execution.patch:/usr/lib/python2.7/site-packages/ \
+    --upload ${BUILD_ROOT}/patches/puppet-neutron-vpp-ml2-type_drivers-setting.patch:/usr/share/openstack-puppet/modules/neutron/ \
+    --run-command "cd /usr/share/openstack-puppet/modules/neutron && patch -p1 < puppet-neutron-vpp-ml2-type_drivers-setting.patch" \
+    --install openstack-utils \
+    -a overcloud-full_build.qcow2
+#    --upload ${BUILD_ROOT}/patches/puppet-neutron-add-external_network_bridge-option.patch:/usr/share/openstack-puppet/modules/neutron/ \
+#    --run-command "cd /usr/share/openstack-puppet/modules/neutron && patch -p1 < puppet-neutron-add-external_network_bridge-option.patch" \
+
+
+# Arch dependent on x86
+if [ "$(uname -i)" == 'x86_64' ]; then
 dpdk_pkg_str=''
 for package in ${dpdk_rpms[@]}; do
   wget "$dpdk_uri_base/$package"
-  dpdk_pkg_str+=" --upload $package:/root/dpdk_rpms"
-done
-
-fdio_pkg_str=''
-for package in ${fdio_pkgs[@]}; do
-  wget "$fdio_uri_base/$package"
-  fdio_pkg_str+=" --upload $package:/root/fdio"
+  dpdk_pkg_str+=" --upload ${BUILD_DIR}/${package}:/root/dpdk_rpms"
 done
 
-# tar up the congress puppet module
-rm -rf puppet-congress
-git clone -b stable/mitaka https://github.com/radez/puppet-congress
-pushd puppet-congress > /dev/null
-git archive --format=tar.gz --prefix=congress/ origin/stable/mitaka > ../puppet-congress.tar.gz
-popd > /dev/null
-
-# create fd.io yum repo file
-#cat > /tmp/fdio-master.repo << EOF
-#[fdio-master]
-#name=fd.io master branch latest merge
-#baseurl=https://nexus.fd.io/content/repositories/fd.io.master.centos7/
-#enabled=1
-#gpgcheck=0
-#EOF
-
 # tar up the fd.io module
 rm -rf puppet-fdio
-git clone https://github.com/radez/puppet-fdio
+git clone https://git.fd.io/puppet-fdio
 pushd puppet-fdio > /dev/null
-git archive --format=tar.gz --prefix=fdio/ HEAD > ../puppet-fdio.tar.gz
+git archive --format=tar.gz --prefix=fdio/ HEAD > ${BUILD_DIR}/puppet-fdio.tar.gz
 popd > /dev/null
 
-# tar up vsperf
-rm -rf vsperf vsperf.tar.gz
-git clone https://gerrit.opnfv.org/gerrit/vswitchperf vsperf
-tar czf vsperf.tar.gz vsperf
+# FD.IO Repo
+cat > ${BUILD_DIR}/fdio.repo << EOF
+[fdio-1710]
+name=fd.io packages
+baseurl=https://nexus.fd.io/content/repositories/fd.io.stable.1710.centos7/
+enabled=1
+gpgcheck=0
+EOF
+
+vpp_nosdn_pkg_str=''
+for package in ${nosdn_vpp_rpms[@]}; do
+  wget $package
+  vpp_nosdn_pkg_str+=" --upload ${BUILD_DIR}/${package##*/}:/root/nosdn_vpp_rpms"
+done
 
-# tar up the tacker puppet module
-rm -rf puppet-tacker
-# TODO move this back to radez puppet-tacker after PR is accepted
-git clone -b fix_db_sync https://github.com/trozet/puppet-tacker
-pushd puppet-tacker > /dev/null
-git archive --format=tar.gz --prefix=tacker/ HEAD > ../puppet-tacker.tar.gz
-popd > /dev/null
+# Kubernetes Repo
+cat > ${BUILD_DIR}/kubernetes.repo << EOF
+[kubernetes]
+name=Kubernetes
+baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
+enabled=1
+gpgcheck=0
+repo_gpgcheck=0
+gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
+        https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
+EOF
+
+# Get Real Time Kernel from kvm4nfv
+populate_cache $kvmfornfv_uri_base/$kvmfornfv_kernel_rpm
 
-# installing forked opnfv-puppet-tripleo
-# enable connection tracking for protocal sctp
 # upload dpdk rpms but do not install
-# enable connection tracking for protocal sctp
-# install the congress rpms
-# upload and explode the congress puppet module
-# install doctor driver ## Can be removed in Newton
 # install fd.io yum repo and packages
 # upload puppet fdio
 # git clone vsperf into the overcloud image
-# upload the tacker puppet module and untar it
-LIBGUESTFS_BACKEND=direct virt-customize \
-    --upload ../opnfv-puppet-tripleo.tar.gz:/etc/puppet/modules \
-    --run-command "if ! rpm -qa | grep python-redis; then yum install -y python-redis; fi" \
-    --run-command "sed -i 's/^#UseDNS.*$/UseDNS no/' /etc/ssh/sshd_config" \
-    --run-command "sed -i 's/^GSSAPIAuthentication.*$/GSSAPIAuthentication no/' /etc/ssh/sshd_config" \
-    --run-command "cd /etc/puppet/modules && rm -rf tripleo && tar xzf opnfv-puppet-tripleo.tar.gz" \
-    --run-command "echo 'nf_conntrack_proto_sctp' > /etc/modules-load.d/nf_conntrack_proto_sctp.conf" \
+# upload the rt_kvm kernel
+LIBGUESTFS_BACKEND=direct $VIRT_CUSTOMIZE \
     --run-command "mkdir /root/dpdk_rpms" \
-    --run-command "mkdir /root/fdio" \
     $dpdk_pkg_str \
-    $fdio_pkg_str \
-    --upload ../networking-vpp.noarch.rpm:/root/fdio \
-    --run-command "pip install distro flask_restful" \
-    --run-command "yum install -y etcd" \
-    --run-command "pip install python-etcd" \
-    --install "centos-release-qemu-ev" \
-    --run-command "yum update -y" \
-    --run-command "yum remove -y qemu-system-x86" \
-    --upload ../os-net-config.tar.gz:/usr/lib/python2.7/site-packages \
-    --run-command "cd /usr/lib/python2.7/site-packages/ && rm -rf os_net_config && tar xzf os-net-config.tar.gz" \
-    --upload ../noarch/openstack-congress-2016.1-1.el7.centos.noarch.rpm:/root/ \
-    --install /root/openstack-congress-2016.1-1.el7.centos.noarch.rpm \
-    --install "python2-congressclient" \
-    --upload puppet-congress.tar.gz:/etc/puppet/modules/ \
-    --run-command "cd /etc/puppet/modules/ && tar xzf puppet-congress.tar.gz" \
-    --run-command "cd /usr/lib/python2.7/site-packages/congress/datasources && curl -O $doctor_driver" \
-    --run-command "sed -i \"s/'--detailed-exitcodes',/'--detailed-exitcodes','-l','syslog','-l','console',/g\" /var/lib/heat-config/hooks/puppet" \
-    --run-command "yum install -y /root/fdio/*.rpm" \
-    --run-command "rm -f /etc/sysctl.d/80-vpp.conf" \
-    --run-command "tar zxvf /root/fdio/vpp_papi*.tar.gz -C /" \
-    --install unzip \
-    --upload puppet-fdio.tar.gz:/etc/puppet/modules \
+    --upload ${BUILD_DIR}/puppet-fdio.tar.gz:/etc/puppet/modules \
     --run-command "cd /etc/puppet/modules && tar xzf puppet-fdio.tar.gz" \
-    --upload vsperf.tar.gz:/var/opt \
-    --run-command "cd /var/opt && tar xzf vsperf.tar.gz" \
-    --upload ../noarch/python-tackerclient-2015.2-1.trozet.noarch.rpm:/root/ \
-    --install /root/python-tackerclient-2015.2-1.trozet.noarch.rpm \
-    --upload ../noarch/openstack-tacker-2015.2-1.trozet.noarch.rpm:/root/ \
-    --install /root/openstack-tacker-2015.2-1.trozet.noarch.rpm \
-    --upload puppet-tacker.tar.gz:/etc/puppet/modules/ \
-    --run-command "cd /etc/puppet/modules/ && tar xzf puppet-tacker.tar.gz" \
-    --run-command "yum install -y https://dl.dropboxusercontent.com/u/7079970/rabbitmq-server-3.6.3-5.el7ost.noarch.rpm" \
-    --run-command "pip install python-senlinclient" \
-    --upload ../neutron/agent/interface/interface.py:/usr/lib/python2.7/site-packages/neutron/agent/linux/ \
-    --run-command "mkdir /root/fdio_neutron_l3" \
-    --upload ../neutron/agent/l3/namespaces.py:/root/fdio_neutron_l3/ \
-    --upload ../neutron/agent/l3/router_info.py:/root/fdio_neutron_l3/ \
-    --upload ../puppet-neutron/manifests/agents/ml2/networking-vpp.pp:/etc/puppet/modules/neutron/manifests/agents/ml2/ \
-    --upload ../puppet-neutron/manifests/plugins/ml2/networking-vpp.pp:/etc/puppet/modules/neutron/manifests/plugins/ml2/ \
+    --upload ${BUILD_DIR}/fdio.repo:/etc/yum.repos.d/ \
+    --run-command "mkdir /root/nosdn_vpp_rpms" \
+    $vpp_nosdn_pkg_str \
+    --upload ${BUILD_DIR}/kubernetes.repo:/etc/yum.repos.d/ \
+    --run-command "mkdir /root/fdio" \
+    --upload ${BUILD_DIR}/noarch/$netvpp_pkg:/root/nosdn_vpp_rpms \
+    --install honeycomb,vpp-plugins,vpp,vpp-lib,vpp-api-python \
+    --run-command "rm -f /etc/sysctl.d/80-vpp.conf" \
+    --run-command "curl -f https://copr.fedorainfracloud.org/coprs/leifmadsen/ovs-master/repo/epel-7/leifmadsen-ovs-master-epel-7.repo > /etc/yum.repos.d/leifmadsen-ovs-master-epel-7.repo" \
+    --run-command "mkdir /root/ovs28" \
+    --run-command "yumdownloader --destdir=/root/ovs28 openvswitch*2.8* python-openvswitch-2.8*" \
+    --upload ${CACHE_DIR}/$kvmfornfv_kernel_rpm:/root/ \
+    --install python-etcd,puppet-etcd \
+    --install patch \
+    --install docker,kubelet,kubeadm,kubectl,kubernetes-cni \
+    --upload ${BUILD_ROOT}/patches/puppet-ceph.patch:/etc/puppet/modules/ceph/ \
+    --run-command "cd /etc/puppet/modules/ceph && patch -p1 < puppet-ceph.patch" \
     -a overcloud-full_build.qcow2
 
-rm -rf ovs_nsh_patches
-rm -rf ovs
-git clone https://github.com/yyang13/ovs_nsh_patches.git
-git clone https://github.com/openvswitch/ovs.git
-pushd ovs > /dev/null
-git reset --hard 7d433ae57ebb90cd68e8fa948a096f619ac4e2d8
-cp ../ovs_nsh_patches/*.patch ./
-# Hack for build servers that have no git config
-git config user.email "apex@opnfv.com"
-git config user.name "apex"
-git am *.patch
-popd > /dev/null
-tar czf ovs.tar.gz ovs
-
-# Required packages to redirect stdin with virt-customize
-virt_pkg_str="./$libguestfs_pkg "
-wget $virt_uri_base/$libguestfs_pkg
-for package in ${virt_pkgs[@]}; do
-  wget "$virt_uri_base/$package"
-  virt_pkg_str+=" ./$package"
-done
+    # upload and install barometer packages
+    barometer_pkgs overcloud-full_build.qcow2
 
-if ! sudo yum -y install ${virt_pkg_str}; then
-  if [ "$(rpm -q libguestfs)" != "$(rpm -qpf $libguestfs_pkg)" ]; then
-    echo "ERROR: Failed to update libguestfs"
-    exit 1
-  fi
-fi
-
-
-
-# BUILD NSH OVS
-LIBGUESTFS_BACKEND=direct virt-customize \
-    --upload ../build_ovs_nsh.sh:/root/ \
-    --upload ovs.tar.gz:/root/ \
-    --run-command "cd /root/ && tar xzf ovs.tar.gz" \
-    --run-command "cd /root/ovs && /root/build_ovs_nsh.sh" \
-    -a overcloud-full_build.qcow2
+fi # end x86_64 specific items
 
 mv -f overcloud-full_build.qcow2 overcloud-full.qcow2
 popd > /dev/null