- allow you to configure the xenapi_user (often other than root)
- allow you to disable the guest installer network
- install the plugins in the xcp-xapi location
- use alternate webserver location when adding the preseed file
- skip the centos specific ip forwarding configuration
- make use xcp inventory, if no xensource-inventory is found
- correctly deal with kpartx to mount the VM VDI in manage_vdi
Change-Id: I8d51725fc97f0bcaa27a46f7a7ced13c369c809e
| ... | ... |
@@ -1700,7 +1700,7 @@ fi |
| 1700 | 1700 |
# For Example: EXTRA_OPTS=(foo=true bar=2) |
| 1701 | 1701 |
for I in "${EXTRA_OPTS[@]}"; do
|
| 1702 | 1702 |
# Attempt to convert flags to options |
| 1703 |
- add_nova_opt ${I//-}
|
|
| 1703 |
+ add_nova_opt ${I//--}
|
|
| 1704 | 1704 |
done |
| 1705 | 1705 |
|
| 1706 | 1706 |
|
| ... | ... |
@@ -1711,8 +1711,9 @@ if [ "$VIRT_DRIVER" = 'xenserver' ]; then |
| 1711 | 1711 |
read_password XENAPI_PASSWORD "ENTER A PASSWORD TO USE FOR XEN." |
| 1712 | 1712 |
add_nova_opt "connection_type=xenapi" |
| 1713 | 1713 |
XENAPI_CONNECTION_URL=${XENAPI_CONNECTION_URL:-"http://169.254.0.1"}
|
| 1714 |
+ XENAPI_USER=${XENAPI_USER:-"root"}
|
|
| 1714 | 1715 |
add_nova_opt "xenapi_connection_url=$XENAPI_CONNECTION_URL" |
| 1715 |
- add_nova_opt "xenapi_connection_username=root" |
|
| 1716 |
+ add_nova_opt "xenapi_connection_username=$XENAPI_USER" |
|
| 1716 | 1717 |
add_nova_opt "xenapi_connection_password=$XENAPI_PASSWORD" |
| 1717 | 1718 |
add_nova_opt "flat_injected=False" |
| 1718 | 1719 |
# Need to avoid crash due to new firewall support |
| ... | ... |
@@ -118,6 +118,13 @@ else |
| 118 | 118 |
sed -e "s,@ETH3_NETMASK@,$PUB_NETMASK,g" -i $INTERFACES |
| 119 | 119 |
fi |
| 120 | 120 |
|
| 121 |
+if [ "$ENABLE_GI" == "true" ]; then |
|
| 122 |
+ cat <<EOF >>$INTERFACES |
|
| 123 |
+auto eth0 |
|
| 124 |
+iface eth0 inet dhcp |
|
| 125 |
+EOF |
|
| 126 |
+fi |
|
| 127 |
+ |
|
| 121 | 128 |
# Gracefully cp only if source file/dir exists |
| 122 | 129 |
function cp_it {
|
| 123 | 130 |
if [ -e $1 ] || [ -d $1 ]; then |
| ... | ... |
@@ -7,64 +7,74 @@ vm="$2" |
| 7 | 7 |
device="${3-0}"
|
| 8 | 8 |
part="${4-}"
|
| 9 | 9 |
|
| 10 |
-xe_min() |
|
| 11 |
-{
|
|
| 10 |
+function xe_min() {
|
|
| 12 | 11 |
local cmd="$1" |
| 13 | 12 |
shift |
| 14 | 13 |
xe "$cmd" --minimal "$@" |
| 15 | 14 |
} |
| 16 | 15 |
|
| 16 |
+function run_udev_settle() {
|
|
| 17 |
+ which_udev=$(which udevsettle) || true |
|
| 18 |
+ if [ -n "$which_udev" ]; then |
|
| 19 |
+ udevsettle |
|
| 20 |
+ else |
|
| 21 |
+ udevadm settle |
|
| 22 |
+ fi |
|
| 23 |
+} |
|
| 24 |
+ |
|
| 17 | 25 |
vm_uuid=$(xe_min vm-list name-label="$vm") |
| 18 | 26 |
vdi_uuid=$(xe_min vbd-list params=vdi-uuid vm-uuid="$vm_uuid" \ |
| 19 | 27 |
userdevice="$device") |
| 20 | 28 |
|
| 21 | 29 |
dom0_uuid=$(xe_min vm-list is-control-domain=true) |
| 22 | 30 |
|
| 23 |
-get_mount_device() |
|
| 24 |
-{
|
|
| 31 |
+function get_mount_device() {
|
|
| 25 | 32 |
vbd_uuid=$1 |
| 26 | 33 |
|
| 27 | 34 |
dev=$(xe_min vbd-list params=device uuid="$vbd_uuid") |
| 28 | 35 |
if [[ "$dev" =~ "sm/" ]]; then |
| 29 | 36 |
DEBIAN_FRONTEND=noninteractive \ |
| 30 | 37 |
apt-get --option "Dpkg::Options::=--force-confold" --assume-yes \ |
| 31 |
- install kpartx || true &> /dev/null |
|
| 32 |
- mapping=$(kpartx -av "/dev/$dev" | sed -ne 's,^add map \([a-f0-9\-]*\).*$,\1,p' | sed -ne "s,^\(.*${part}\)\$,\1,p")
|
|
| 38 |
+ install kpartx &> /dev/null || true |
|
| 39 |
+ mapping=$(kpartx -av "/dev/$dev" | sed -ne 's,^add map \([a-z0-9\-]*\).*$,\1,p' | sed -ne "s,^\(.*${part}\)\$,\1,p")
|
|
| 33 | 40 |
if [ -z "$mapping" ]; then |
| 34 | 41 |
echo "Failed to find mapping" |
| 35 | 42 |
exit -1 |
| 36 | 43 |
fi |
| 37 |
- echo "mapper/${mapping}"
|
|
| 44 |
+ echo "/dev/mapper/${mapping}"
|
|
| 38 | 45 |
else |
| 39 | 46 |
echo "/dev/$dev$part" |
| 40 | 47 |
fi |
| 41 | 48 |
} |
| 42 | 49 |
|
| 43 |
-open_vdi() |
|
| 44 |
-{
|
|
| 50 |
+function clean_dev_mappings() {
|
|
| 51 |
+ dev=$(xe_min vbd-list params=device uuid="$vbd_uuid") |
|
| 52 |
+ if [[ "$dev" =~ "sm/" ]]; then |
|
| 53 |
+ kpartx -dv "/dev/$dev" |
|
| 54 |
+ fi |
|
| 55 |
+} |
|
| 56 |
+ |
|
| 57 |
+function open_vdi() {
|
|
| 45 | 58 |
vbd_uuid=$(xe vbd-create vm-uuid="$dom0_uuid" vdi-uuid="$vdi_uuid" \ |
| 46 | 59 |
device=autodetect) |
| 47 | 60 |
mp=$(mktemp -d) |
| 48 | 61 |
xe vbd-plug uuid="$vbd_uuid" |
| 49 | 62 |
|
| 50 |
- which_udev=$(which udevsettle) || true |
|
| 51 |
- if [ -n "$which_udev" ]; then |
|
| 52 |
- udevsettle |
|
| 53 |
- else |
|
| 54 |
- udevadm settle |
|
| 55 |
- fi |
|
| 63 |
+ run_udev_settle |
|
| 56 | 64 |
|
| 57 | 65 |
mount_device=$(get_mount_device "$vbd_uuid") |
| 58 | 66 |
mount "$mount_device" "$mp" |
| 59 | 67 |
echo "Your vdi is mounted at $mp" |
| 60 | 68 |
} |
| 61 | 69 |
|
| 62 |
-close_vdi() |
|
| 63 |
-{
|
|
| 70 |
+function close_vdi() {
|
|
| 64 | 71 |
vbd_uuid=$(xe_min vbd-list vm-uuid="$dom0_uuid" vdi-uuid="$vdi_uuid") |
| 65 | 72 |
mount_device=$(get_mount_device "$vbd_uuid") |
| 73 |
+ run_udev_settle |
|
| 66 | 74 |
umount "$mount_device" |
| 67 | 75 |
|
| 76 |
+ clean_dev_mappings |
|
| 77 |
+ |
|
| 68 | 78 |
xe vbd-unplug uuid=$vbd_uuid |
| 69 | 79 |
xe vbd-destroy uuid=$vbd_uuid |
| 70 | 80 |
} |