add6c20c270b1d4cd9d41d751a08b029973e8183
[lut.git] / bin / lut.sh
1 #!/bin/sh -x
2 # This script lives in the lut provider and should be run from there
3
4 provider_dir=`pwd`
5 platform_git=https://leap.se/git/leap_platform
6 cli_git=https://leap.se/git/leap_cli
7 from_version=$1
8 to_version=$2
9 #workdir=`mktemp -d`
10 workdir='/tmp/lut'
11 platform_link="${workdir}/leap_platform"
12 platform_from=${workdir}/platform_$1
13 platform_to=${workdir}/platform_$1
14 cli_from=${workdir}/cli_master
15 cli_to=${workdir}/cli_develop
16
17
18 # If you hit control-c or kill the process, stop the VMs
19 killed () {
20
21     leap vm stop upgrade
22     echo "VMs stopped, but not removed. Will still incur charges, please remove them if you are not using them anymore."
23 }
24
25 trap "{ killed ; }" TERM INT ABRT QUIT
26
27 help () {
28     cat <<EOF
29 Usage lut <from version> <to version>
30
31 This script will setup leap platform, leap cli, for the versions required and
32 perform an upgrade test using leap vm credentials stored in cloud.json.
33
34 Note: the cloud.json file is encrypted with git-crypt. You need to decrypt it
35 first, just do once: apt install git-crypt and then git-crypt unlock.
36
37 EOF
38 }
39
40 check_version () {
41     git ls-remote --refs --heads --tags --exit-code $1 $2
42     if [ $? -ne 0 ]; then
43         echo "unknown <version>: $2 for $1, please use a tag from git tag -l, or specify a branch"
44         cleanup 2
45     fi
46 }
47
48 get_platform () {
49     echo "Setup platform, version $2"
50     git clone $1 ${workdir}/platform_${2} --branch $2
51     if [ $? -ne 0 ]; then
52         echo "Setup failed"
53         cleanup 2
54     fi
55 }
56
57 get_cli () {
58     cli_dir=${workdir}/cli_$2
59     echo "Setup leap_cli"
60     git clone $cli_git $cli_dir --branch $2
61     cd $cli_dir
62     rake build
63     bundle --path vendor/bundle
64 }
65
66 switch () {
67     rm -f $platform_link
68     ln -s platform_${1} $platform_link
69 }
70
71 cleanup () {
72 #    leap vm stop upgrade
73     #rm -rf $workdir
74     exit $1
75 }
76
77 start_nodes () {
78     echo "Starting all the VMs, you should go do something else now, this will take a while..."
79     # monarch: monitor, tor hidden service, webapp
80     # dogface: couchdb/soledad
81     # hairstreak: mx
82     # checkerspot: openvn, need a gateway address to do openvpn, disabled
83     # spicebush: static node, with hidden service
84     # cloak: tor exit
85     leap vm start upgrade
86 }
87
88 case "$1" in
89     -h | -help | --help )
90         help
91         exit
92         ;;
93 esac
94
95 if [ $# -ne 2 ]; then
96     help
97 else
98     check_version $platform_git $from_version
99     check_version $platform_git $to_version
100     get_platform $platform_git $from_version
101     get_platform $platform_git $to_version
102     get_cli $cli_git master
103     get_cli $cli_git develop
104     cd $provider_dir
105     ln -s platform_$from_version $platform_link
106     start_nodes
107     $cli_from/bin/leap node init upgrade
108     echo "Nodes initialized with old platform"
109     $cli_from/bin/leap -v2 deploy upgrade
110     echo "Nodes deployed with old version of platform"
111     $cli_from/bin/leap test
112     switch $to_version
113     $cli_to/bin/leap -v2 deploy upgrade
114     echo "Nodes deployed with new version of platform"
115     $cli_to/bin/leap test
116    
117     cleanup 0
118 fi
119