improve data processing script for rubbos
[bottlenecks.git] / utils / rubbos_dev_env_setup / deploy.sh
1 #!/bin/bash
2 ##############################################################################
3 # Copyright (c) 2015 Huawei Technologies Co.,Ltd and others.
4 #
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
11 # this is a modified copy of compass4nfv/deploy/host_virtual.sh
12
13 set -x
14
15 SCRIPT_DIR=`cd ${BASH_SOURCE[0]%/*};pwd`
16 WORK_DIR=${SCRIPT_DIR}/work
17
18 mkdir -p $WORK_DIR
19
20 source ./env_config.sh
21
22 host_vm_dir=$WORK_DIR/vm
23
24
25 function download_iso()
26 {
27     mkdir -p ${WORK_DIR}/cache
28     curl --connect-timeout 10 -o ${WORK_DIR}/cache/$IMAGE_NAME $IMAGE_URL
29 }
30
31
32 function tear_down_machines() {
33     for i in $HOSTNAMES; do
34         echo "tear down machine:" $i
35         sudo virsh destroy $i
36         sudo virsh undefine $i
37         rm -rf $host_vm_dir/$i
38     done
39 }
40
41
42 function get_host_macs() {
43     local mac_generator=${SCRIPT_DIR}/mac_generator.sh
44     local machines=
45
46     chmod +x $mac_generator
47     mac_array=$($mac_generator $VIRT_NUMBER)
48     machines=$(echo $mac_array)
49
50     echo $machines
51 }
52
53 function launch_host_vms() {
54     mac_array=($(get_host_macs))
55
56     echo ${mac_array[2]}
57     echo ${mac_array[*]}
58
59     old_ifs=$IFS
60     IFS=,
61     tear_down_machines
62     echo "bringing up vms ${mac_array[*]}"
63     i=0
64     for host in $HOSTNAMES; do
65         echo "creating vm disk for instance $host" \
66              "ip ${IPADDR_PREFIX}$((i+11))" \
67              "mac ${mac_array[$i]}"
68         vm_dir=$host_vm_dir/$host
69         mkdir -p $vm_dir
70
71         cp ${WORK_DIR}/cache/$IMAGE_NAME $vm_dir
72
73         # create seed.iso
74         sed -e "s/REPLACE_IPADDR/${IPADDR_PREFIX}$((i+11))/g" \
75             -e "s/REPLACE_GATEWAY/${IPADDR_PREFIX}1/g" \
76             -e "s/REPLACE_HOSTNAME/${host}/g" \
77             meta-data_template \
78             > meta-data
79         cp user-data_template user-data
80         genisoimage  -output seed.iso -volid cidata -joliet -rock user-data meta-data
81         cp seed.iso $vm_dir
82
83         # create vm xml
84         sed -e "s/REPLACE_MEM/$VIRT_MEM/g" \
85             -e "s/REPLACE_CPU/$VIRT_CPUS/g" \
86             -e "s/REPLACE_NAME/$host/g" \
87             -e "s#REPLACE_IMAGE#$vm_dir/disk.img#g" \
88             -e "s#REPLACE_SEED_IMAGE#$vm_dir/seed.iso#g" \
89             -e "s/REPLACE_MAC_ADDR/${mac_array[$i]}/g" \
90             libvirt_template.xml \
91             > $vm_dir/libvirt.xml
92
93         sudo virsh define $vm_dir/libvirt.xml
94         sudo virsh start $host
95         let i=i+1
96     done
97     IFS=$old_ifs
98     rm -rf meta-data user-data seed.iso
99 }
100
101
102 download_iso
103 launch_host_vms
104
105 set +x
106