source: drbl-virt/sbin/drbl_vm_migrate @ 250

Last change on this file since 250 was 223, checked in by rock, 14 years ago

Rename:

  • Property svn:executable set to *
File size: 2.9 KB
RevLine 
[222]1#!/bin/bash
2# Program:
3#   Deploy PXE PV VM to DRBL client
4# Author:
5#   Jazz, Rock {jazz, rock}@nchc.org.tw
6# Version:
7#    1.0
8# History:                                                                                         
9#   2010/08/27  Rock    First release (1.0)
10
11# [Source]
12source /opt/drbl-virt/conf/drbl-virt.conf
13source $Work_Path/functions_drbl_virt
14#source ./functions_drbl_PXE_PV-VM_create
15
16
17# [Declation]
18# = 1. Varibales declation =
19#vm_dir="/home/domains"
20hypervisior=$(cat $Work_Home/etc/hypervisior)
21
22# = 2. Functions declation =
23Usage(){
24echo "Usage: drbl_VM_migrate options"
25echo "Options:"
26echo "-l|--live           live migration"
[223]27echo "-v|--vm             vm name"
[222]28echo "-h|--host           host name"
29echo "Example:"
[223]30echo "drbl_VM_migrate -l -v pc131 -h pc102"
[222]31}
32
33
34# [Main]
35check_root
36# = 1. Parse parameters =
37if [ $# -eq 0 ]; then
38Usage && exit
39fi
40
41while [ $# -gt 0 ]; do
42    case "$1" in
43        -h|--host)
44            shift 
45            if [ -z "$(echo $1 |grep ^-.)" ]; then
46                if [ -n "$(echo $1)" ]; then
47                    host="$1"
48                else
49                    echo "-h host value is null"
50                    Usage && exit 2
51                fi
52            shift 
53            fi 
54            ;; 
55        -v|--vm)
56            shift 
57            if [ -z "$(echo $1 |grep ^-.)" ]; then
58                if [ -n "$(echo $1)" ]; then
59                    vm="$1"
60                else
61                    echo "-v vm value is null"
62                    Usage && exit 2
63                fi 
64            shift 
65            fi 
66            ;;
67        -l|--live)
68            shift
69            xm_option="live"
70            ;;
71        -*)
72            echo "$0 $1 invalid option" >&2
73            echo ""
74            Usage >&2
75            exit 2
76            ;;
77        *)  Usage >&2
78            exit 2
79            ;;
80    esac
81done
82
83
84# = 2. Check null value =
85[ -z "$host" ] && echo "[Error] no host" && Usage && exit 2
86[ -z "$vm" ] && echo "[Error] no vm" && Usage && exit 2
87
88
89# = 3. ssh client to execute command  =
90# check network
91IP_status="online"
92ping -c1 -w1 $host > /dev/null 2>&1 || IP_status="offline"
93
94if [ $IP_status == "offline" ]; then
95    echo "[Error] $host's network is offline !!!"
96else
97    host_hostnames="$(grep -v "#" $Work_Home/etc/IP_HOST_TABLE | awk '{print $2}')"
98
99    for host_hostname in $host_hostnames
100    do
101        ssh -o StrictHostKeyChecking=no $host_hostname "xm list | grep $vm" > /tmp/vm_in_host_file$$
102        vm_in_host=$(cat /tmp/vm_in_host_file$$)
103        if [ -n "$vm_in_host" ]; then
104            right_host=$host_hostname
105            break
106        fi
107    echo "$host_name"
108    done
109
110    if [ -z $xm_option ]; then
111        ssh -o StrictHostKeyChecking=no $right_host "xm migrate $vm $host"
112    else
113        ssh -o StrictHostKeyChecking=no $right_host "xm migrate --$xm_option $vm $host"
114    fi
115fi
116
117rm /tmp/vm_in_host_file$$
[223]118# check
119check_drbl_vm
[222]120
Note: See TracBrowser for help on using the repository browser.