libguestfs/0001-v2v-test-harness-Add-support-for-OVA.patch
Richard W.M. Jones 35ff7d7647 More upstream patches to fix virt-v2v test harness.
- Do not delete OCaml *.a files, including ones in the virt-v2v test harness.
2015-03-20 13:05:52 +00:00

100 lines
3.9 KiB
Diff

From 5ac87b975fef867663402743d79e1b693d485bb8 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Fri, 20 Mar 2015 12:14:42 +0000
Subject: [PATCH] v2v: test-harness: Add support for OVA.
This makes VMware testing easier, since it means you don't need to
test against a live server.
---
v2v/test-harness/v2v_test_harness.ml | 62 ++++++++++++++++++++++--------------
1 file changed, 38 insertions(+), 24 deletions(-)
diff --git a/v2v/test-harness/v2v_test_harness.ml b/v2v/test-harness/v2v_test_harness.ml
index fe09d6f..67a49d8 100644
--- a/v2v/test-harness/v2v_test_harness.ml
+++ b/v2v/test-harness/v2v_test_harness.ml
@@ -62,10 +62,6 @@ let run ~test ?input_disk ?input_xml ?(test_plan = default_plan) () =
match input_disk with
| None -> test ^ ".img.xz"
| Some input_disk -> input_disk in
- let input_xml =
- match input_xml with
- | None -> test ^ ".xml"
- | Some input_xml -> input_xml in
let inspect_and_mount_disk filename =
let g = new G.guestfs () in
@@ -332,31 +328,49 @@ let run ~test ?input_disk ?input_xml ?(test_plan = default_plan) () =
printf "v2v_test_harness: starting test: %s\n%!" test;
- (* Check we are started in the correct directory, ie. the input_disk
- * and input_xml files should exist, and they should be local files.
+ (* Check we are started in the correct directory.
*)
- if not (Sys.file_exists input_disk) || not (Sys.file_exists input_xml) then
- failwithf "cannot find input files: %s, %s: you are probably running the test script from the wrong directory" input_disk input_xml;
+ if not (Sys.file_exists input_disk) then
+ failwith "cannot find input files: you are probably running the test script from the wrong directory";
- (* Uncompress the input, if it doesn't exist already. *)
- let input_disk =
- if Filename.check_suffix input_disk ".xz" then (
- let input_disk_uncomp = Filename.chop_suffix input_disk ".xz" in
- if not (Sys.file_exists input_disk_uncomp) then (
- let cmd = sprintf "unxz --keep %s" (quote input_disk) in
- printf "%s\n%!" cmd;
- if Sys.command cmd <> 0 then
- failwith "unxz command failed"
- );
- input_disk_uncomp
+ (* How we run virt-v2v depends on the extension of the input_disk. *)
+ let v2v_method =
+ (* Uncompress the input, if the uncompressed file doesn't exist already. *)
+ let input_disk =
+ if Filename.check_suffix input_disk ".xz" then (
+ let input_disk_uncomp = Filename.chop_suffix input_disk ".xz" in
+ if not (Sys.file_exists input_disk_uncomp) then (
+ let cmd = sprintf "unxz --keep %s" (quote input_disk) in
+ printf "%s\n%!" cmd;
+ if Sys.command cmd <> 0 then
+ failwith "unxz command failed"
+ );
+ input_disk_uncomp
+ )
+ else input_disk in
+
+ if Filename.check_suffix input_disk ".img" then (
+ let input_xml =
+ match input_xml with
+ | None -> test ^ ".xml"
+ | Some input_xml -> input_xml in
+ `V2v_method_libvirtxml input_xml
)
- else input_disk in
- ignore input_disk;
+ else if Filename.check_suffix input_disk ".ova" then
+ `V2v_method_ova input_disk
+ else
+ failwithf "don't know what to do with input disk '%s'" input_disk in
(* Run virt-v2v. *)
- let cmd = sprintf
- "virt-v2v -i libvirtxml %s -o local -of qcow2 -os . -on %s"
- (quote input_xml) (quote (test ^ "-converted")) in
+ let cmd_input =
+ match v2v_method with
+ | `V2v_method_libvirtxml input_xml ->
+ sprintf "-i libvirtxml %s" (quote input_xml)
+ | `V2v_method_ova input_disk ->
+ sprintf "-i ova %s" (quote input_disk) in
+ let cmd =
+ sprintf "virt-v2v %s -o local -of qcow2 -os . -on %s"
+ cmd_input (quote (test ^ "-converted")) in
printf "%s\n%!" cmd;
if Sys.command cmd <> 0 then
failwith "virt-v2v command failed";
--
2.3.1