Updates docs for SR1 with final revision
[genesis.git] / fuel / prototypes / auto-deploy / examples / libvirt / setup_example_vms.sh
1 #!/bin/bash
2 ##############################################################################
3 # Copyright (c) 2015 Ericsson AB and others.
4 # stefan.k.berg@ericsson.com
5 # jonas.bjurel@ericsson.com
6 # All rights reserved. This program and the accompanying materials
7 # are made available under the terms of the Apache License, Version 2.0
8 # which accompanies this distribution, and is available at
9 # http://www.apache.org/licenses/LICENSE-2.0
10 ##############################################################################
11
12 exit_handler() {
13     rm $tmpfile
14 }
15
16
17 error_exit () {
18     echo "$@"
19     exit 1
20 }
21
22 trap exit_handler EXIT
23
24 # You can change these disk sizes to adapt to your needs
25 fueldisk="30G"
26 controllerdisk="20G"
27 computedisk="20G"
28
29
30 topdir=$(dirname $(readlink -f $BASH_SOURCE))
31 netdir=$topdir/conf/networks
32 vmdir=$topdir/conf/vms
33 tmpfile=`mktemp /tmp/XXXXX`
34
35 if [ ! -d $netdir ]; then
36   error_exit "No net directory $netdir"
37   exit 1
38 elif [ ! -d $vmdir ]; then
39   error_exit "No VM directory $vmdir"
40   exit 1
41 fi
42
43 if [ $# -ne 1 ]; then
44   echo "Argument error."
45   echo "`basename $0` <path to storage dir>"
46   exit 1
47 fi
48
49 if [ "`whoami`" != "root" ]; then
50   error_exit "You need be root to run this script"
51 fi
52
53 echo "Cleaning up"
54 tools/cleanup_example_vms.sh
55
56 storagedir=$1
57
58 if [ ! -d $storagedir ]; then
59   error_exit "Could not find storagedir directory $storagedir"
60 fi
61
62 # Create storage space and patch it in
63 for vm in $vmdir/*
64 do
65     vmname=`basename $vm`
66     virsh dumpxml $vmname >/dev/null 2>&1
67     if [ $? -eq 0 ]; then
68         echo "Found vm $vmname, deleting"
69         virsh destroy $vmname
70         virsh undefine $vmname
71         sleep 10
72
73     fi
74
75
76     storage=${storagedir}/`basename ${vm}`.raw
77     if [ -f ${storage} ]; then
78         echo "Storage already present, removing: $storage"
79         rm $storage
80     fi
81
82     echo `basename $vm` | grep -q fuel-master && size=$fueldisk
83     echo `basename $vm` | grep -q controller && size=$controllerdisk
84     echo `basename $vm` | grep -q compute && size=$computedisk
85
86     echo "Creating ${size} GB of storage in ${storage}"
87     fallocate -l ${size} ${storage} || \
88         error_exit "Could not create storage"
89     sed "s:<source file='disk.raw':<source file='${storage}':" $vm >$tmpfile
90     virsh define $tmpfile
91 done
92
93 for net in $netdir/*
94 do
95     netname=`basename $net`
96     virsh net-dumpxml $netname >/dev/null 2>&1
97     if [ $? -eq 0 ]; then
98         echo "Found net $netname, deleting"
99         virsh net-destroy $netname
100         virsh net-undefine $netname
101     fi
102     virsh net-define $net
103     virsh net-autostart $netname
104     virsh net-start $netname
105 done