summaryrefslogtreecommitdiffstats
path: root/utils/infra_setup/heat_template/HOT_create_instance.sh
blob: f04198c8400084a25166ce3c962b9fcef56e1d76 (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
#!/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
   control_ip=$(nova list | grep rubbos_control | awk '{print $13}')
   ssh -i $KEY_PATH/bottlenecks_key \
       -o StrictHostKeyChecking=no \
       -o BatchMode=yes root@$control_ip "uname -a"
   heat stack-delete bottlenecks
}

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"

   wget $IMAGE_URL -O /tmp/bottlenecks-trusty-server.img

   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://205.177.226.235:9999/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_cleanup
}

main
set +ex