Automatically set default for SYSTEM_DISK_ACCESS_METHOD.
authorMartin Schwenke <martin@meltin.net>
Tue, 3 May 2011 03:18:55 +0000 (13:18 +1000)
committerMartin Schwenke <martin@meltin.net>
Tue, 3 May 2011 03:18:55 +0000 (13:18 +1000)
If using qcow2 system disks then prefer guestfish if it is installed,
or use loopback/NBD if requirement utilities are installed.

If not using qcow2 then default to loopback since this will be most
efficient.

Signed-off-by: Martin Schwenke <martin@meltin.net>
config.d/00base.defconf

index 1d1cbb88443d7d3055029a8ea7b38233ed424e0b..71d1c1df458d77bbc1e8d2d739dc493739878439 100644 (file)
@@ -105,9 +105,29 @@ defconf SYSTEM_DISK_CACHE "writeback" \
 defconf SYSTEM_DISK_FORMAT "qcow2" \
        "qcow2|raw|reflink|none" "system disk image format"
 
-defconf SYSTEM_DISK_ACCESS_METHOD "loopback" \
+defconf SYSTEM_DISK_ACCESS_METHOD "@uto" \
        "loopback|guestfish" "how to setup up disk images"
 
+system_disk_access_method_hook ()
+{
+    if [ "$SYSTEM_DISK_ACCESS_METHOD" = "@uto" ] ; then
+       if [ "$SYSTEM_DISK_FORMAT" = "qcow2" ] ; then
+           if which guestfish >/dev/null 2>&1 ; then
+               SYSTEM_DISK_ACCESS_METHOD="guestfish"
+           elif which qemu-nbd nbd-client >/dev/null 2>&1 ; then
+               SYSTEM_DISK_ACCESS_METHOD="loopback"
+               ISO=$(rhel_print_iso)
+           else
+               die "Can't determine SYSTEM_DISK_ACCESS_METHOD.  Need guestfish or qemu-nbd + nbd-client."
+           fi
+       else
+           SYSTEM_DISK_ACCESS_METHOD="loopback"
+       fi
+    fi
+}
+
+register_hook post_config_hooks system_disk_access_method_hook
+
 system_disk_mounts ()
 {
     # We could call a function using call_func().  However, we want