Merge "Migrates Apex to virtual deployments to use new slave"
[releng.git] / jjb / joid / joid-deploy.sh
1 #!/bin/bash
2 set +e
3 set -o nounset
4
5 JOID_LOCAL_CONFIG_FOLDER=$HOME/joid_config
6 JOID_ADMIN_OPENRC=$JOID_LOCAL_CONFIG_FOLDER/admin-openrc
7
8 ##
9 ## Load local config or defaults
10 ##
11
12 if [ -e "$JOID_LOCAL_CONFIG_FOLDER/config.sh" ]; then
13     echo "------ Load local config ------"
14     source $JOID_LOCAL_CONFIG_FOLDER/config.sh
15 else
16     echo "------ No local config, load default ------"
17     # link NODE_NAME to joid node config names
18     case $NODE_NAME in
19         orange-fr-pod2)
20             POD=orange-pod2 ;;
21         *)
22             POD=$NODE_NAME ;;
23     esac
24     export POD_DC=$(echo $POD |cut -d\- -f1)
25     export POD_NUM=$(echo $POD |cut -d\- -f2)
26     export POD_NAME=$POD_DC$POD_NUM
27     export MAAS_REINSTALL=true
28     export MAAS_USER=ubuntu
29     export MAAS_PASSWORD=ubuntu
30     export OS_ADMIN_PASSWORD=openstack
31     export CEPH_DISKS=/srv
32     export CEPH_REFORMAT=no
33 fi
34
35 ##
36 ## Redeploy MAAS or recover the previous config
37 ##
38
39 cd $WORKSPACE/ci
40 if [ -e "$JOID_LOCAL_CONFIG_FOLDER/environments.yaml" ] && [ "$MAAS_REINSTALL" == "false" ]; then
41     echo "------ Recover Juju environment to use MAAS ------"
42     cp $JOID_LOCAL_CONFIG_FOLDER/environments.yaml .
43 else
44     MAASCONFIG=$WORKSPACE/ci/maas/$POD_DC/$POD_NUM/deployment.yaml
45     echo "------ Set MAAS password ------"
46     sed -i -- "s/user: ubuntu/user: $MAAS_USER/" $MAASCONFIG
47     sed -i -- "s/password: ubuntu/password: $MAAS_PASSWORD/" $MAASCONFIG
48     echo "------ Redeploy MAAS ------"
49     ./02-maasdeploy.sh $POD_NAME
50 fi
51
52 ##
53 ## Configure Joid deployment
54 ##
55
56 # Get juju deployer file
57 if [ "$HA_MODE" == 'nonha' ]; then
58     SRCBUNDLE=$WORKSPACE/ci/$SDN_CONTROLLER/juju-deployer/ovs-$SDN_CONTROLLER.yaml
59 else
60     SRCBUNDLE=$WORKSPACE/ci/$SDN_CONTROLLER/juju-deployer/ovs-$SDN_CONTROLLER-$HA_MODE.yaml
61 fi
62
63 # Modify files
64
65 echo "------ Set openstack password ------"
66 sed -i -- "s/\"admin-password\": openstack/\"admin-password\": $OS_ADMIN_PASSWORD/" $SRCBUNDLE
67
68 echo "------ Set ceph disks ------"
69 sed -i -- "s@osd-devices: /srv@osd-devices: $CEPH_DISKS@" $SRCBUNDLE
70 sed -i -r -- "s/^(\s+osd-reformat: )'no'/\1'$CEPH_REFORMAT'/" $SRCBUNDLE
71
72 ##
73 ## Configure Joid deployment
74 ##
75
76 echo "------ Deploy with juju ------"
77 echo "Execute: ./deploy.sh -t $HA_MODE -o $OS_RELEASE -s $SDN_CONTROLLER -l $POD_NAME"
78
79 ./deploy.sh -t $HA_MODE -o $OS_RELEASE -s $SDN_CONTROLLER -l $POD_NAME
80
81 ##
82 ## Set Admin RC
83 ##
84
85 echo "------ Create OpenRC file [$JOID_ADMIN_OPENRC] ------"
86 KEYSTONE=$(cat bundles.yaml |shyaml get-value openstack-phase2.services.keystone.options.vip)
87
88 # create the folder if needed
89 JOID_ADMIN_OPENRC_FOLDER=$(echo $JOID_ADMIN_OPENRC | perl -pe "s|^(.*/).*?$|\1|")
90 if [ ! -d "$JOID_ADMIN_OPENRC_FOLDER" ]; then
91     mkdir -p $JOID_ADMIN_OPENRC_FOLDER
92 fi
93
94 # export the openrc file
95 cat << EOF > $JOID_ADMIN_OPENRC
96 export OS_USERNAME=admin
97 export OS_PASSWORD=$OS_ADMIN_PASSWORD
98 export OS_TENANT_NAME=admin
99 export OS_AUTH_URL=http://$KEYSTONE:5000/v2.0
100 export OS_REGION_NAME=Canonical
101 EOF
102
103 ##
104 ## Backup local juju env
105 ##
106
107 if [ -d "$JOID_LOCAL_CONFIG_FOLDER" ]; then
108     echo "------ Backup Juju environment ------"
109     cp environments.yaml $JOID_LOCAL_CONFIG_FOLDER/
110 fi
111
112 ##
113 ## Basic test to return a realistic result to jenkins
114 ##
115 source $JOID_ADMIN_OPENRC
116 curl -i -sw '%{http_code}' -H "Content-Type: application/json"   -d "
117 { \"auth\": {
118     \"identity\": {
119       \"methods\": [\"password\"],
120       \"password\": {
121         \"user\": {
122           \"name\": \"$OS_TENANT_NAME\",
123           \"domain\": { \"id\": \"default\" },
124           \"password\": \"$OS_PASSWORD\"
125         }
126       }
127     }
128   }
129 }"   http://$KEYSTONE:5000/v3/auth/tokens |grep "HTTP/1.1 20" 2>&1 >/dev/null; echo $?;
130 RES=$?
131 if [ $RES == 0 ]; then
132     echo "Deploy SUCCESS"
133 else
134     echo "Deploy FAILED"
135 fi
136 exit $RES