[Libguestfs] [PATCH 2/8] v2v: -o rhv-upload: change precheck script to return a JSON

Pino Toscano ptoscano at redhat.com
Mon Sep 16 17:13:45 UTC 2019


This way it is possible to communicate data from the precheck script
back to virt-v2v.

For now there are no results, so the resulting JSON is discarded.
---
 v2v/output_rhv_upload.ml   | 7 ++++++-
 v2v/rhv-upload-precheck.py | 6 +++++-
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/v2v/output_rhv_upload.ml b/v2v/output_rhv_upload.ml
index 91552536a..e74a897b9 100644
--- a/v2v/output_rhv_upload.ml
+++ b/v2v/output_rhv_upload.ml
@@ -230,8 +230,13 @@ object
     error_unless_nbdkit_python_plugin_working ();
     error_unless_output_alloc_sparse ();
     (* Python code prechecks. *)
-    if Python_script.run_command precheck_script json_params [] <> 0 then
+    let precheck_fn = tmpdir // "v2vprecheck.json" in
+    let fd = Unix.openfile precheck_fn [O_WRONLY; O_CREAT] 0o600 in
+    if Python_script.run_command ~stdout_fd:fd precheck_script json_params [] <> 0 then
       error (f_"failed server prechecks, see earlier errors");
+    let json = JSON_parser.json_parser_tree_parse_file precheck_fn in
+    debug "precheck output parsed as: %s"
+          (JSON.string_of_doc ~fmt:JSON.Indented ["", json]);
     if have_selinux then
       error_unless_nbdkit_compiled_with_selinux ()
 
diff --git a/v2v/rhv-upload-precheck.py b/v2v/rhv-upload-precheck.py
index 6253c26ac..a317d997c 100644
--- a/v2v/rhv-upload-precheck.py
+++ b/v2v/rhv-upload-precheck.py
@@ -70,4 +70,8 @@ if len(clusters) == 0:
     raise RuntimeError("The cluster ‘%s’ does not exist" %
                        (params['rhv_cluster']))
 
-# Otherwise everything is OK, exit with no error.
+# Otherwise everything is OK, print a JSON with the results.
+results = {
+}
+
+json.dump(results, sys.stdout)
-- 
2.21.0




More information about the Libguestfs mailing list