#!/bin/bash set -e usage () { echo "usage:" echo "invirt-admin create-sysvm {options}" echo " required options: --name, --fs-size, --swap-size, --memory," echo " --hostname, --ip, --mac, --arch, --dist, --mirror" echo echo " optional options: --netmask, --gateway. Defaults will be pulled from invirt-getconf" echo echo " fs-size, swap-size, memory in MiB" echo " fs-size + swap-size will be total disk-image size" exit 2 } if [ create-sysvm != "$1" ]; then usage fi shift vg=$(invirt-getconf lvm.vg) while [ $# -gt 0 ]; do case "$1" in --vg) vg=$2; shift 2;; --name) name=$2; shift 2;; --fs-size) fs_size=$2; shift 2;; --swap-size) swap_size=$2; shift 2;; --memory) memory=$2; shift 2;; --hostname) hostname=$2; shift 2;; --ip) ip=$2; shift 2;; --mac) mac=$2; shift 2;; --arch) arch=$2; shift 2;; --dist) dist=$2; shift 2;; --mirror) mirror=$2; shift 2;; --netmask) netmask=$2; shift 2;; --gateway) gateway=$2; shift 2;; *) echo "Unknown option: $1" echo usage ;; esac done if [ -z "$name" ]; then usage fi disk_size=$(( $fs_size + $swap_size )) lvcreate "$vg" --name "s_${name}_hda" --size "$disk_size"m # XXX breaks if $name has dashes TARGET=/dev/mapper/$vg-s_${name}_hda FSSIZE=$fs_size \ ARCH=$arch DIST=$dist MIRROR=$mirror \ HOSTNAME=$hostname IP=$ip \ NETMASK=$netmask GATEWAY=$gateway \ invirt-create-image cat >/etc/xen/sysvms/s_$name <