summaryrefslogtreecommitdiffstats
path: root/utils/infra_setup/heat_template/HOT_create_instance.sh
blob: 3c96ce1c2faad8e83879869711ba8cde91e212b4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#!/bin/bash

set -ex

bottlenecks_env_prepare()
{
   if [ -d $BOTTLENECKS_REPO_DIR ]; then
       rm -rf ${BOTTLENECKS_REPO_DIR}
   fi

   mkdir -p ${BOTTLENECKS_REPO_DIR}
   git config --global http.sslVerify false
   git clone ${BOTTLENECKS_REPO} ${BOTTLENECKS_REPO_DIR}

   source $BOTTLENECKS_REPO_DIR/rubbos/rubbos_scripts/1-1-1/scripts/env_preparation.sh
}

bottlenecks_create_instance()
{
   echo "create bottlenecks instance using heat template"

   echo "upload keypair"
   nova keypair-add --pub_key $KEY_PATH/bottlenecks_key.pub $KEY_NAME

   echo "create flavor"
   nova flavor-create $FLAVOR_NAME 200 2048 10 1

   echo "use heat template to create stack"
   cd $HOT_PATH
   heat stack-create bottlenecks -f ${TEMPLATE_NAME} \
        -P "image=$IMAGE_NAME;key_name=$KEY_NAME;public_net=$PUBLIC_NET_NAME;flavor=$FLAVOR_NAME"
   sleep 120
   heat stack-list
   heat stack-show bottlenecks
   nova list
   nova list | grep rubbos_control
}

bottlenecks_rubbos_run()
{
   echo "Run Rubbos"
   control_ip=$(nova list | grep rubbos_control | awk '{print $13}')
   chmod 600 $KEY_PATH/bottlenecks_key
   ssh -i $KEY_PATH/bottlenecks_key \
       -o StrictHostKeyChecking=no \
       -o BatchMode=yes root@$control_ip "uname -a"
   scp -r -i $KEY_PATH/bottlenecks_key \
       -o StrictHostKeyChecking=no -o BatchMode=yes \
       $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup \
       root@$control_ip:/tmp
   ssh -i $KEY_PATH/bottlenecks_key \
       -o StrictHostKeyChecking=no \
       -o BatchMode=yes root@$control_ip "bash /tmp/vm_dev_setup/setup_env.sh"
}

bottlenecks_cleanup()
{
   echo "clean up bottlenecks images and keys"

   if heat stack-list; then
       for stack in $(heat stack-list | grep -e bottlenecks | awk '{print $2}'); do
           echo "clean up stack $stack"
           heat stack-delete $stack || true
           sleep 30
       done
   fi

   if glance image-list; then
       for image in $(glance image-list | grep -e $IMAGE_NAME | awk '{print $2}'); do
           echo "clean up image $image"
           glance image-delete $image || true
       done
   fi

   if nova keypair-list; then
       for key in $(nova keypair-list | grep -e $KEY_NAME | awk '{print $2}'); do
           echo "clean up key $key"
           nova keypair-delete $key || true
       done
   fi

   if nova flavor-list; then
       for flavor in $(nova flavor-list | grep -e $FLAVOR_NAME | awk '{print $2}'); do
           echo "clean up flavor $flavor"
           nova flavor-delete $flavor || true
       done
   fi
}

bottlenecks_load_bottlenecks_image()
{
   echo "load bottlenecks image"

   curl --connect-timeout 10 -o /tmp/bottlenecks-trusty-server.img $IMAGE_URL -v
   if [ $? != 0 ]; then
        wget http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img -O \
             /tmp/bottlenecks-trusty-server.img
   fi

   result=$(glance image-create \
       --name $IMAGE_NAME \
       --disk-format qcow2 \
       --container-format bare \
       --file /tmp/bottlenecks-trusty-server.img)
   echo "$result"

   rm -rf /tmp/bottlenecks-trusty-server.img

   IMAGE_ID_BOTTLENECKS=$(echo "$result" | grep " id " | awk '{print $(NF-1)}')
   if [ -z "$IMAGE_ID_BOTTLENECKS" ]; then
        echo 'failed to upload bottlenecks image to openstack'
        exit 1
   fi

   echo "bottlenecks image id: $IMAGE_ID_BOTTLENECKS"
}

main()
{
   echo "create instances with heat template"

   BOTTLENECKS_REPO=https://gerrit.opnfv.org/gerrit/bottlenecks
   BOTTLENECKS_REPO_DIR=/tmp/opnfvrepo/bottlenecks
   IMAGE_URL=http://artifacts.opnfv.org/bottlenecks/rubbos/bottlenecks-trusty-server.img
   IMAGE_NAME=bottlenecks-trusty-server
   KEY_PATH=$BOTTLENECKS_REPO_DIR/utils/infra_setup/bottlenecks_key
   HOT_PATH=$BOTTLENECKS_REPO_DIR/utils/infra_setup/heat_template
   KEY_NAME=bottlenecks-key
   FLAVOR_NAME=bottlenecks-flavor
   TEMPLATE_NAME=bottlenecks_rubbos_hot.yaml
   PUBLIC_NET_NAME=net04_ext

   bottlenecks_env_prepare
   bottlenecks_cleanup
   bottlenecks_load_bottlenecks_image
   bottlenecks_create_instance
   bottlenecks_rubbos_run
   bottlenecks_cleanup
}

main
set +ex