Allow connecting vm to the external network
[functest.git] / functest / ci / add_proxy.sh
1 #!/bin/bash
2
3 set -e
4
5 pushd "${1:-/home/opnfv/functest/images}" > /dev/null
6
7 http_proxy_host=${http_proxy_host:-proxy}
8 http_proxy_port=${http_proxy_port:-8080}
9
10 http_proxy=http://${http_proxy_host}:${http_proxy_port}
11 https_proxy=${https_proxy:-${http_proxy:-http://proxy:8080}}
12 ftp_proxy=${ftp_proxy:-${http_proxy:-http://proxy:8080}}
13 no_proxy=${no_proxy:-"10.0.0.0/8,172.16.0.0/12,192.168.0.0/16"}
14
15 images=${images-"\
16 ubuntu-14.04-server-cloudimg-amd64-disk1.img \
17 ubuntu-16.04-server-cloudimg-amd64-disk1.img"}
18
19 add_proxy () {
20     cat << EOF >> "$1"
21 http_proxy=${http_proxy}
22 HTTP_PROXY=${http_proxy}
23 https_proxy=${https_proxy}
24 HTTPS_PROXY=${https_proxy}
25 ftp_proxy=${ftp_proxy}
26 FTP_PROXY=${ftp_proxy}
27 no_proxy=${no_proxy}
28 NO_PROXY=${no_proxy}
29 EOF
30 }
31
32 add_proxy_apt () {
33     cat << EOF >> "$1"
34 Acquire::http::Proxy "${http_proxy}";
35 Acquire::https::Proxy "${https_proxy}";
36 EOF
37 }
38
39 add_proxy_juju_env () {
40     cat << EOF >> "$1"
41 export no_proxy="${no_proxy}";
42 export NO_PROXY="${no_proxy}";
43 EOF
44 }
45
46 add_proxy_juju_systemd () {
47     cat << EOF >> "$1"
48 [Manager]
49 DefaultEnvironment="no_proxy='${no_proxy}'" "NO_PROXY='${no_proxy}'"
50 EOF
51 }
52
53 add_proxy_maven () {
54     cat << EOF >> "$1"
55 <settings>
56    <proxies>
57       <proxy>
58         <id>example-proxy</id>
59         <active>true</active>
60         <protocol>http</protocol>
61         <host>"${http_proxy_host}"</host>
62         <port>"${http_proxy_port}"</port>
63       </proxy>
64    </proxies>
65 </settings>
66 EOF
67 }
68
69 add_proxy_svn ()  {
70     cat << EOF >> "$1"
71 [global]
72 http-proxy-host = "${http_proxy_host}"
73 http-proxy-port = "${http_proxy_port}"
74 EOF
75 }
76
77 add_proxy_pip ()  {
78     cat << EOF >> "$1"
79 [global]
80 proxy="${http_proxy}"
81 EOF
82 }
83
84 tmpdir=$(mktemp -d)
85 for image in $images; do
86     if [ ! -f "$image" ]; then
87         echo "skip ${image} ($(pwd)/${image} not found)"
88         continue
89     fi
90     guestmount -a "${image}" -i --rw "${tmpdir}"
91     add_proxy "${tmpdir}/etc/environment"
92     if [[ ${image} == "ubuntu"* ]]; then
93         add_proxy_apt "${tmpdir}/etc/apt/apt.conf"
94         add_proxy_juju_env "${tmpdir}/etc/juju-proxy.conf"
95         add_proxy_juju_systemd "${tmpdir}/etc/juju-proxy-systemd.conf"
96         mkdir -p ${tmpdir}/root/.m2
97         mkdir -p ${tmpdir}/root/.subversion
98         add_proxy_maven "${tmpdir}/root/.m2/settings.xml"
99         add_proxy_svn "${tmpdir}/root/.subversion/servers"
100         add_proxy_pip "${tmpdir}/etc/pip.conf"
101     fi
102     guestunmount "${tmpdir}"
103 done
104
105 if [ -f cloudify-docker-manager-community-19.01.24.tar ]; then
106     sudo docker load -i cloudify-docker-manager-community-19.01.24.tar
107     dockerfile=${tmpdir}/Dockerfile
108     cat << EOF > $dockerfile
109 FROM docker-cfy-manager:latest
110 ENV HTTP_PROXY "${http_proxy}"
111 ENV HTTPS_PROXY "${https_proxy}"
112 ENV NO_PROXY "${no_proxy}"
113 EOF
114     for f in /etc/sysconfig/cloudify-mgmtworker /etc/sysconfig/cloudify-restservice; do \
115         cat << EOF >> $dockerfile
116 RUN echo >> $f
117 RUN echo "http_proxy=${http_proxy}" >> $f
118 RUN echo "https_proxy=${https_proxy}" >> $f
119 RUN echo "HTTP_PROXY=${http_proxy}" >> $f
120 RUN echo "HTTPS_PROXY=${https_proxy}" >> $f
121 RUN echo "no_proxy=${no_proxy}" >> $f
122 EOF
123     done
124     sudo docker build -t docker-cfy-manager -f $dockerfile ${tmpdir}
125     sudo docker save \
126         docker-cfy-manager > cloudify-docker-manager-community-19.01.24.tar
127     sudo docker rmi docker-cfy-manager
128
129     rm "${dockerfile}"
130 else
131     echo "skip cloudify-docker-manager-community-19.01.24.tar \
132         ($(pwd)/cloudify-docker-manager-community-19.01.24.tar not found)"
133 fi
134
135 rmdir "${tmpdir}"
136 popd > /dev/null
137