To avoid bashisms, convert to /bin/bash! :)
[ext/instance-debootstrap.git] / common.sh
1
2 log_error() {
3   echo "$@" >&2
4 }
5
6 SCRIPT_NAME=$(basename $0)
7
8 for dir in /lib/udev /sbin; do
9   if [ -f $dir/vol_id -a -x $dir/vol_id ]; then
10     VOL_ID=$dir/vol_id
11   fi
12 done
13
14 if [ -z "$VOL_ID" ]; then
15     log_error "vol_id not found, please install udev"
16     exit 1
17 fi
18
19 get_api5_arguments() {
20   GETOPT_RESULT=$*
21   # Note the quotes around `$TEMP': they are essential!
22   eval set -- "$GETOPT_RESULT"
23   while true; do
24     case "$1" in
25       -i|-n) instance=$2; shift 2;;
26
27       -o) old_name=$2; shift 2;;
28
29       -b) blockdev=$2; shift 2;;
30
31       -s) swapdev=$2; shift 2;;
32
33       --) shift; break;;
34
35       *)  log_error "Internal error!" >&2; exit 1;;
36     esac
37   done
38   if [ -z "$instance" -o -z "$blockdev" ]; then
39     log_error "Missing OS API Argument (-i, -n, or -b)"
40     exit 1
41   fi
42   if [ "$SCRIPT_NAME" != "export" -a -z "$swapdev"  ]; then
43     log_error "Missing OS API Argument -s (swapdev)"
44     exit 1
45   fi
46   if [ "$SCRIPT_NAME" = "rename" -a -z "$old_name"  ]; then
47     log_error "Missing OS API Argument -o (old_name)"
48     exit 1
49   fi
50 }
51
52 get_api10_arguments() {
53   if [ -z "$INSTANCE_NAME" -o -z "$HYPERVISOR" -o -z "$DISK_COUNT" ]; then
54     log_error "Missing OS API Variable:"
55     log_error "(INSTANCE_NAME HYPERVISOR or DISK_COUNT)"
56     exit 1
57   fi
58   instance=$INSTANCE_NAME
59   if [ $DISK_COUNT -lt 1 -o -z "$DISK_0_PATH" ]; then
60     log_error "At least one disk is needed"
61     exit 1
62   fi
63   if [ "$SCRIPT_NAME" = "export" ]; then
64     if [ -z "$EXPORT_DEVICE" ]; then
65       log_error "Missing OS API Variable EXPORT_DEVICE"
66     fi
67     blockdev=$EXPORT_DEVICE
68   elif [ "$SCRIPT_NAME" = "import" ]; then
69     if [ -z "$IMPORT_DEVICE" ]; then
70        log_error "Missing OS API Variable IMPORT_DEVICE"
71     fi
72     blockdev=$IMPORT_DEVICE
73   else
74     blockdev=$DISK_0_PATH
75   fi
76   if [ "$SCRIPT_NAME" = "rename" -a -z "$OLD_INSTANCE_NAME" ]; then
77     log_error "Missing OS API Variable OLD_INSTANCE_NAME"
78   fi
79   old_name=$OLD_INSTANCE_NAME
80 }
81
82 if [ -z "$OS_API_VERSION" -o "$OS_API_VERSION" = "5" ]; then
83   OS_API_VERSION=5
84   GETOPT_RESULT=`getopt -o o:n:i:b:s: -n '$0' -- "$@"`
85   if [ $? != 0 ] ; then log_error "Terminating..."; exit 1 ; fi
86   get_api5_arguments $GETOPT_RESULT
87 elif [ "$OS_API_VERSION" = "10" ]; then
88   get_api10_arguments
89 else
90   log_error "Unknown OS API VERSION $OS_API_VERSION"
91   exit 1
92 fi