88dbe2214988fe05ad86b9a3029e047cc49baad6
[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 #    <model>-<controller>-<nfvfeature>-<mode>[-<extrastuff>]
68 # With parameters:
69 #    model=(os|k8)
70 #    controller=(nosdn|odl_l3|odl_l2|onos|ocl)
71 #       No odl_l3 today
72 #    nfvfeature=(kvm|ovs|dpdk|nofeature)
73 #       '_' list separated.
74 #    mode=(ha|noha)
75 #    extrastuff=(none)
76 #       Optional field - Not used today
77
78 IFS='-' read -r -a DEPLOY_OPTIONS <<< "${DEPLOY_SCENARIO}--"
79 #last -- need to avoid nounset error
80
81 JOID_MODEL=${DEPLOY_OPTIONS[0]}
82 SDN_CONTROLLER=${DEPLOY_OPTIONS[1]}
83 NFV_FEATURES=${DEPLOY_OPTIONS[2]}
84 HA_MODE=${DEPLOY_OPTIONS[3]}
85 EXTRA=${DEPLOY_OPTIONS[4]}
86
87 if [ "$SDN_CONTROLLER" == 'odl_l2' ] || [ "$SDN_CONTROLLER" == 'odl_l3' ]; then
88     SDN_CONTROLLER='odl'
89 fi
90 if [ "$HA_MODE" == 'noha' ]; then
91     HA_MODE='nonha'
92 fi
93
94 # Add extra to features
95 if [ "$EXTRA" != "" ];then
96     NFV_FEATURES="${NFV_FEATURES}_${EXTRA}"
97 fi
98
99 # temporary sfc feature is availble only on onos and trusty
100 if [ "$NFV_FEATURES" == 'sfc' ] && [ "$SDN_CONTROLLER" == 'onos' ];then
101     UBUNTU_DISTRO=trusty
102 fi
103
104 ##
105 ## Configure Joid deployment
106 ##
107
108 if [ "$JOID_MODEL" == 'k8' ]; then
109   echo "------ Deploy with juju ------"
110   echo "Execute: ./deploy.sh -m $JOID_MODEL -s $SDN_CONTROLLER -l $POD_NAME -d $UBUNTU_DISTRO -f $NFV_FEATURES"
111
112   ./deploy.sh -m kubernetes -s $SDN_CONTROLLER -l $POD_NAME -d $UBUNTU_DISTRO -f $NFV_FEATURES
113   exit_on_error $? "Main deploy FAILED"
114 fi
115
116 ##
117 ## Set Admin RC
118 ##
119 if [ "$JOID_MODEL" == 'os' ]; then
120   echo "------ Deploy with juju ------"
121   echo "Execute: ./deploy.sh -m $JOID_MODEL -t $HA_MODE -o $OS_RELEASE -s $SDN_CONTROLLER -l $POD_NAME -d $UBUNTU_DISTRO -f $NFV_FEATURES"
122
123   ./deploy.sh -m openstack -t $HA_MODE -o $OS_RELEASE -s $SDN_CONTROLLER -l $POD_NAME -d $UBUNTU_DISTRO -f $NFV_FEATURES
124   exit_on_error $? "Main deploy FAILED"
125
126   JOID_ADMIN_OPENRC=$LAB_CONFIG/admin-openrc
127   echo "------ Create OpenRC file [$JOID_ADMIN_OPENRC] ------"
128
129   # get controller IP
130   case "$SDN_CONTROLLER" in
131       "odl")
132           SDN_CONTROLLER_IP=$(juju status odl-controller/0 |grep public-address|sed -- 's/.*\: //')
133           ;;
134       "onos")
135           SDN_CONTROLLER_IP=$(juju status onos-controller/0 |grep public-address|sed -- 's/.*\: //')
136           ;;
137       *)
138           SDN_CONTROLLER_IP='none'
139           ;;
140   esac
141   SDN_PASSWORD='admin'
142
143   # export the openrc file by getting the one generated by joid and add SDN
144   # controller for Functest
145   cp ./cloud/admin-openrc $JOID_ADMIN_OPENRC
146   cat << EOF >> $JOID_ADMIN_OPENRC
147   export SDN_CONTROLLER=$SDN_CONTROLLER_IP
148   export SDN_PASSWORD=$SDN_PASSWORD
149   EOF
150
151   ##
152   ## Backup local juju env
153   ##
154
155   echo "------ Backup Juju environment ------"
156   cp environments.yaml $LAB_CONFIG/
157   cp deployment.yaml $LAB_CONFIG/
158   if [ -e deployconfig.yaml ]; then
159       cp deployconfig.yaml $LAB_CONFIG
160   fi
161
162 fi
163
164 ##
165 ## Exit success
166 ##
167
168 echo "Deploy success"
169 exit 0