Merge "Adjust bifrost node provisioning timeout and fix file permissions"
[releng.git] / jjb / joid / joid-deploy.sh
1 #!/bin/bash
2 # SPDX-license-identifier: Apache-2.0
3 ##############################################################################
4 # Copyright (c) 2016 Orange and others.
5 # All rights reserved. This program and the accompanying materials
6 # are made available under the terms of the Apache License, Version 2.0
7 # which accompanies this distribution, and is available at
8 # http://www.apache.org/licenses/LICENSE-2.0
9 ##############################################################################
10 set +e
11 set -o nounset
12
13 ##
14 ## Functions
15 ##
16 function exit_on_error {
17     RES=$1
18     MSG=$2
19     if [ $RES != 0 ]; then
20         echo "FAILED - $MSG"
21         exit $RES
22     fi
23 }
24
25 ##
26 ## Create LAB_CONFIG folder if not exists
27 ##
28
29 mkdir -p $LAB_CONFIG
30
31 ##
32 ## Set Joid pod config name
33 ##
34
35 case $NODE_NAME in
36     *virtual*)
37         POD=default ;;
38     *)
39         POD=$NODE_NAME ;;
40 esac
41 export POD_NAME=${POD/-}
42
43 ##
44 ## Redeploy MAAS or recover the previous config
45 ##
46
47 cd $WORKSPACE/ci
48 if [ -e "$LAB_CONFIG/environments.yaml" ] && [ "$MAAS_REINSTALL" == "false" ]; then
49     echo "------ Recover Juju environment to use MAAS ------"
50     cp $LAB_CONFIG/environments.yaml .
51     cp $LAB_CONFIG/deployment.yaml .
52     if [ -e $LAB_CONFIG/deployconfig.yaml ]; then
53         cp $LAB_CONFIG/deployconfig.yaml .
54     fi
55 else
56     echo "------ Redeploy MAAS ------"
57     ./00-maasdeploy.sh $POD_NAME
58     exit_on_error $? "MAAS Deploy FAILED"
59 fi
60
61 ##
62 ## Configure Joid deployment
63 ##
64
65 # Based on scenario naming we can get joid options
66 # naming convention:
67 #    os-<controller>-<nfvfeature>-<mode>[-<extrastuff>]
68 # With parameters:
69 #    controller=(nosdn|odl_l3|odl_l2|onos|ocl)
70 #       No odl_l3 today
71 #    nfvfeature=(kvm|ovs|dpdk|nofeature)
72 #       '_' list separated.
73 #    mode=(ha|noha)
74 #    extrastuff=(none)
75 #       Optional field - Not used today
76
77 IFS='-' read -r -a DEPLOY_OPTIONS <<< "${DEPLOY_SCENARIO}--"
78 #last -- need to avoid nounset error
79
80 SDN_CONTROLLER=${DEPLOY_OPTIONS[1]}
81 NFV_FEATURES=${DEPLOY_OPTIONS[2]}
82 HA_MODE=${DEPLOY_OPTIONS[3]}
83 EXTRA=${DEPLOY_OPTIONS[4]}
84
85 if [ "$SDN_CONTROLLER" == 'odl_l2' ] || [ "$SDN_CONTROLLER" == 'odl_l3' ]; then
86     SDN_CONTROLLER='odl'
87 fi
88 if [ "$HA_MODE" == 'noha' ]; then
89     HA_MODE='nonha'
90 fi
91
92 # Add extra to features
93 if [ "$EXTRA" != "" ];then
94     NFV_FEATURES="${NFV_FEATURES}_${EXTRA}"
95 fi
96
97 ##
98 ## Configure Joid deployment
99 ##
100
101 echo "------ Deploy with juju ------"
102 echo "Execute: ./deploy.sh -t $HA_MODE -o $OS_RELEASE -s $SDN_CONTROLLER -l $POD_NAME -d $UBUNTU_DISTRO -f $NFV_FEATURES"
103
104 ./deploy.sh -t $HA_MODE -o $OS_RELEASE -s $SDN_CONTROLLER -l $POD_NAME -d $UBUNTU_DISTRO -f $NFV_FEATURES
105 exit_on_error $? "Main deploy FAILED"
106
107 ##
108 ## Set Admin RC
109 ##
110 JOID_ADMIN_OPENRC=$LAB_CONFIG/admin-openrc
111 echo "------ Create OpenRC file [$JOID_ADMIN_OPENRC] ------"
112
113 # get controller IP
114 case "$SDN_CONTROLLER" in
115     "odl")
116         SDN_CONTROLLER_IP=$(juju status odl-controller/0 |grep public-address|sed -- 's/.*\: //')
117         ;;
118     "onos")
119         SDN_CONTROLLER_IP=$(juju status onos-controller/0 |grep public-address|sed -- 's/.*\: //')
120         ;;
121     *)
122         SDN_CONTROLLER_IP='none'
123         ;;
124 esac
125 SDN_PASSWORD='admin'
126
127 # export the openrc file by getting the one generated by joid and add SDN
128 # controller for Functest
129 cp ./cloud/admin-openrc $JOID_ADMIN_OPENRC
130 cat << EOF >> $JOID_ADMIN_OPENRC
131 export SDN_CONTROLLER=$SDN_CONTROLLER_IP
132 export SDN_PASSWORD=$SDN_PASSWORD
133 EOF
134
135 ##
136 ## Backup local juju env
137 ##
138
139 echo "------ Backup Juju environment ------"
140 cp environments.yaml $LAB_CONFIG/
141 cp deployment.yaml $LAB_CONFIG/
142 if [ -e deployconfig.yaml ]; then
143     cp deployconfig.yaml $LAB_CONFIG
144 fi
145
146 ##
147 ## Exit success
148 ##
149
150 echo "Deploy success"
151 exit 0