ce7530af83a63d27704ceabd08fb7eb09dbe9250
[csit.git] / resources / tools / scripts / download_install_vpp_pkgs.sh
1 #!/bin/bash
2
3 # Copyright (c) 2018 Cisco and/or its affiliates.
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at:
7 #
8 #     http://www.apache.org/licenses/LICENSE-2.0
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15
16 set -e -o pipefail
17
18 OS_ID=$(grep '^ID=' /etc/os-release | cut -f2- -d= | sed -e 's/\"//g')
19 OS_VERSION_ID=$(grep '^VERSION_ID=' /etc/os-release | cut -f2- -d= | sed -e 's/\"//g')
20
21 NEXUSPROXY="https://nexus.fd.io"
22
23 function artifacts {
24     if [ "$OS_ID" == "ubuntu" ]; then
25         VPP_REPO_URL_PATH="./VPP_REPO_URL_UBUNTU"
26         if [ -e "$VPP_REPO_URL_PATH" ]; then
27             VPP_REPO_URL=$(cat $VPP_REPO_URL_PATH)
28             REPO_NAME=$(echo ${VPP_REPO_URL#https://nexus.fd.io/content/repositories/})
29             REPO_NAME=$(echo ${REPO_NAME%io/fd/vpp/})
30         else
31             OS_VERSION_CODENAME=$(grep '^VERSION_CODENAME=' /etc/os-release | cut -f2- -d= | sed -e 's/\"//g')
32             REPO_NAME="fd.io.master.ubuntu.${OS_VERSION_CODENAME}.main"
33         fi
34         REPO_URL="${NEXUSPROXY}/content/repositories/${REPO_NAME}"
35
36         echo "deb ${REPO_URL} ./" | sudo tee /etc/apt/sources.list.d/99fd.io.list
37         sudo apt-get -y update \
38             -o Dir::Etc::sourcelist="sources.list.d/99fd.io.list" \
39             -o Acquire::AllowInsecureRepositories=true \
40             -o Dir::Etc::sourceparts="-" \
41             -o APT::Get::AllowUnauthenticated=true \
42             -o APT::Get::List-Cleanup="0"
43
44         # If version is set we will add suffix
45         VPP=(vpp vpp-dbg vpp-dev vpp-lib vpp-plugins)
46         DKMS=(vpp-dpdk-dkms)
47         if [ -z "${VPP_VERSION}" ]; then
48             ARTIFACTS+=(${VPP[@]/%/${VPP_VERSION}})
49             ARTIFACTS+=(${DKMS[@]/%/${DKMS_VERSION}})
50         else
51             ARTIFACTS+=(${VPP[@]/%/=${VPP_VERSION}})
52             ARTIFACTS+=(${DKMS[@]/%/=${DKMS_VERSION}})
53         fi
54
55         if [ "$INSTALL" = true ]; then
56             echo Installing VPP
57             sudo apt-get -y install ${ARTIFACTS[@]} \
58                 -o Acquire::AllowInsecureRepositories=true \
59                 -o APT::Get::AllowUnauthenticated=true
60         else
61             echo Downloading VPP
62             apt-get -y download ${ARTIFACTS[@]} \
63                 -o Acquire::AllowInsecureRepositories=true \
64                 -o APT::Get::AllowUnauthenticated=true
65         fi
66
67     elif [ "$OS_ID" == "centos" ]; then
68         VPP_REPO_URL_PATH="./VPP_REPO_URL_CENTOS"
69         if [ -e "$VPP_REPO_URL_PATH" ]; then
70             VPP_REPO_URL=$(cat $VPP_REPO_URL_PATH)
71             REPO_NAME=$(echo ${VPP_REPO_URL#https://nexus.fd.io/content/repositories/})
72             REPO_NAME=$(echo ${REPO_NAME%/io/fd/vpp/})
73         else
74             REPO_NAME="fd.io.master.centos7"
75         fi
76         REPO_URL="${NEXUSPROXY}/content/repositories/${REPO_NAME}"
77
78         sudo cat << EOF > fdio-master.repo
79 [fdio-master]
80 name=fd.io master branch latest merge
81 baseurl=${REPO_URL}
82 enabled=1
83 gpgcheck=0
84 EOF
85         sudo mv fdio-master.repo /etc/yum.repos.d/fdio-master.repo
86
87         # If version is set we will add suffix
88         VPP=(vpp vpp-selinux-policy vpp-devel vpp-lib vpp-plugins)
89         if [ -z "${VPP_VERSION}" ]; then
90             ARTIFACTS+=(${VPP[@]/%/${VPP_VERSION}})
91         else
92             ARTIFACTS+=(${VPP[@]/%/-${VPP_VERSION}})
93         fi
94
95         if [ "$INSTALL" = true ]; then
96             echo Installing VPP
97             sudo yum -y install ${ARTIFACTS[@]}
98         else
99             echo Downloading VPP
100             sudo yum -y install --downloadonly --downloaddir=. ${ARTIFACTS[@]}
101         fi
102     elif [ "$OS_ID" == "opensuse" ]; then
103         VPP_REPO_URL_PATH="./VPP_REPO_URL_OPENSUSE"
104         if [ -e "$VPP_REPO_URL_PATH" ]; then
105             VPP_REPO_URL=$(cat $VPP_REPO_URL_PATH)
106             REPO_NAME=$(echo ${VPP_REPO_URL#https://nexus.fd.io/content/repositories/})
107             REPO_NAME=$(echo ${REPO_NAME%/io/fd/vpp/})
108         else
109             REPO_NAME='fd.io.master.opensuse'
110         fi
111         REPO_URL="${NEXUSPROXY}/content/repositories/${REPO_NAME}"
112
113         sudo cat << EOF > fdio-master.repo
114 [fdio-master]
115 name=fd.io master branch latest merge
116 baseurl=${REPO_URL}
117 enabled=1
118 gpgcheck=0
119 EOF
120         sudo mv fdio-master.repo /etc/yum/repos.d/fdio-master.repo
121
122         # If version is set we will add suffix
123         VPP=(vpp vpp-devel vpp-lib vpp-plugins libvpp0)
124         if [ -z "${VPP_VERSION}" ]; then
125             ARTIFACTS+=(${VPP[@]/%/${VPP_VERSION}})
126         else
127             ARTIFACTS+=(${VPP[@]/%/-${VPP_VERSION}})
128         fi
129
130         if [ "$INSTALL" = true ]; then
131             echo Installing VPP
132             sudo yum -y install ${ARTIFACTS[@]}
133         else
134             echo Downloading VPP
135             sudo yum -y install --downloadonly --downloaddir=. ${ARTIFACTS[@]}
136         fi
137     else
138         echo "$OS_ID is not yet supported."
139         exit 1
140     fi
141 }
142
143 function display_help () {
144     echo "Usage: $0 [--skip-install] [--vpp <version>] [--dkms <version>]"
145 }
146
147 # Whether to install artifacts or not
148 INSTALL=true
149 # VPP version (default empty = latest)
150 VPP_VERSION=""
151 # DKMS version (default empty = latest)
152 DKMS_VERSION=""
153
154 while :
155 do
156     case "$1" in
157         -h | --help)
158             display_help
159             exit 0
160             ;;
161         -s | --skip-install)
162             INSTALL=false
163             shift 1
164             ;;
165         -v | --vpp)
166             VPP_VERSION="$2"
167             shift 2
168             ;;
169         -d | --dkms)
170             DKMS_VERSION="$2"
171             shift 2
172             ;;
173         *)
174             break
175             ;;
176      esac
177 done
178
179 artifacts "${INSTALL}" "${VPP_VERSION}" "${DKMS_VERSION}"