blob: bc28a994ddd05ac8c039bc174a002ff90d375b7a (
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"
curl --connect-timeout 10 -o /tmp/bottlenecks-trusty-server.img $IMAGE_URL -v
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
|