Fixes the idf and pdf templates so that we can deploy opnfv
[pharos-tools.git] / laas-fog / pharoslaas / actions / joid_install.sh
1 #!/bin/bash
2 #############################################################################
3 #Copyright 2017 Parker Berberian and others                                 #
4 #                                                                           #
5 #Licensed under the Apache License, Version 2.0 (the "License");            #
6 #you may not use this file except in compliance with the License.           #
7 #You may obtain a copy of the License at                                    #
8 #                                                                           #
9 #    http://www.apache.org/licenses/LICENSE-2.0                             #
10 #                                                                           #
11 #Unless required by applicable law or agreed to in writing, software        #
12 #distributed under the License is distributed on an "AS IS" BASIS,          #
13 #WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   #
14 #See the License for the specific language governing permissions and        #
15 #limitations under the License.                                             #
16 #############################################################################
17
18 if [ "$1" ]; then
19     # parses the passed scenario
20     args=($(echo "$1" | tr "-" "\n"))
21     # args is array: [os, nosdn, nofeature, noha]
22 else
23     args=('os' 'nosdn' 'nofeature' 'noha')
24 fi
25 # the deploy script expects 'none' rather than 'nofeature'
26 if [ "nofeature" == "${args[2]}" ]; then
27     args[2]="none"
28 fi
29 if [ "os" == "${args[0]}" ]; then
30     args[0]="openstack"
31 fi
32 # grabs the joid repo
33 git clone "https://gerrit.opnfv.org/gerrit/joid.git"
34 # working directory has to be where 03-maasdeploy is
35 cd joid/ci || exit 1
36 # virtualy deploy maas
37 ./03-maasdeploy.sh virtual
38 # deploys OPNFV with the given scenario
39 ./deploy.sh -o newton -s "${args[1]}" -t "${args[3]}" -l default -d xenial -m "${args[0]}" -f "${args[2]}"
40
41 juju gui --show-credentials --no-browser &>output.juju
42
43 DESTINATION=$( grep -E -o "[0-9].*[0-9]" output.juju | tr -d '/' | sed s/:.*//g )
44 MYIP=$( ip a | grep -E -o "10.10.30.[0-9]+" | sed s/^.*255.*$//g | tr -d '\n' )
45
46 rm -f output.juju
47
48
49 ############## Uses NAT to make juju gui available at my public address ####################
50
51 MYIP=$1
52 DESTINATION=$2
53 MYBRIDGE=192.168.122.1
54 DESTNETWORK=192.168.122.0/24
55 PORT=17070
56
57 iptables -I INPUT 2 -d "$MYIP" -p tcp --dport "$PORT" -j ACCEPT
58 iptables -t nat -I INPUT 1 -d "$MYIP" -p tcp --dport "$PORT" -j ACCEPT
59 iptables -I FORWARD -p tcp --dport "$PORT" -j ACCEPT
60
61 iptables -t nat -I PREROUTING -p tcp -d "$MYIP" --dport "$PORT" -j DNAT --to-destination "$DESTINATION:$PORT"
62 iptables -t nat -I POSTROUTING -p tcp -s "$DESTINATION" ! -d "$DESTNETWORK" -j SNAT --to-source "$MYIP"
63
64 iptables -t nat -I POSTROUTING 2 -d "$DESTINATION" -j SNAT --to-source "$MYBRIDGE"