virt-v2v/SOURCES/0010-output-Remove-o-json-m...

1126 lines
37 KiB
Diff
Raw Normal View History

2022-09-27 13:40:09 +00:00
From a1f1129dc148639ed0b05b737157268d9b824a63 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Mon, 11 Apr 2022 11:01:46 +0100
Subject: [PATCH] output: Remove -o json mode
This removes the -o json mode completely.
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
(cherry picked from commit 4e6b389b4e27c8d13e57fcaf777d96ad7e08650b)
---
docs/virt-v2v.pod | 4 -
output/Makefile.am | 51 +-----
output/create_json.ml | 338 -----------------------------------
output/create_json.mli | 27 ---
output/output_json.ml | 153 ----------------
output/output_json.mli | 21 ---
output/var_expander.ml | 72 --------
output/var_expander.mli | 82 ---------
output/var_expander_tests.ml | 113 ------------
tests/Makefile.am | 2 -
tests/test-v2v-o-json.sh | 68 -------
v2v/v2v.ml | 7 +-
12 files changed, 5 insertions(+), 933 deletions(-)
delete mode 100644 output/create_json.ml
delete mode 100644 output/create_json.mli
delete mode 100644 output/output_json.ml
delete mode 100644 output/output_json.mli
delete mode 100644 output/var_expander.ml
delete mode 100644 output/var_expander.mli
delete mode 100644 output/var_expander_tests.ml
delete mode 100755 tests/test-v2v-o-json.sh
diff --git a/docs/virt-v2v.pod b/docs/virt-v2v.pod
index 7ad22f00..912f1bc3 100644
--- a/docs/virt-v2v.pod
+++ b/docs/virt-v2v.pod
@@ -409,10 +409,6 @@ See L</Networks and bridges> below.
This is the same as I<-o local>.
-=item B<-o> B<json>
-
-This option is deprecated and will be removed in S<virt-v2v 2.2>.
-
=item B<-o> B<libvirt>
Set the output method to I<libvirt>. This is the default.
diff --git a/output/Makefile.am b/output/Makefile.am
index 61caf68b..dd488549 100644
--- a/output/Makefile.am
+++ b/output/Makefile.am
@@ -39,18 +39,15 @@ EXTRA_DIST = \
rhv-upload-precheck.py \
rhv-upload-transfer.py \
rhv-upload-vmcheck.py \
- test-v2v-python-syntax.sh \
- var_expander_tests.ml
+ test-v2v-python-syntax.sh
SOURCES_MLI = \
changeuid.mli \
- create_json.mli \
create_libvirt_xml.mli \
openstack_image_properties.mli \
output.mli \
output_disk.mli \
output_glance.mli \
- output_json.mli \
output_libvirt.mli \
output_null.mli \
output_openstack.mli \
@@ -66,14 +63,11 @@ SOURCES_MLI = \
output_rhv_upload_transfer_source.mli \
output_rhv_upload_vmcheck_source.mli \
python_script.mli \
- qemuopts.mli \
- var_expander.mli
+ qemuopts.mli
SOURCES_ML = \
changeuid.ml \
python_script.ml \
- var_expander.ml \
- create_json.ml \
create_libvirt_xml.ml \
qemuopts.ml \
openstack_image_properties.ml \
@@ -87,7 +81,6 @@ SOURCES_ML = \
output.ml \
output_disk.ml \
output_glance.ml \
- output_json.ml \
output_libvirt.ml \
output_null.ml \
output_openstack.ml \
@@ -203,47 +196,9 @@ $(MLOUTPUT_CMA): $(OBJECTS) libmloutput.a
$(OCAMLFIND) mklib $(OCAMLPACKAGES) \
$(OBJECTS) $(libmloutput_a_OBJECTS) -o mloutput
-# Unit tests.
-TESTS =
-if HAVE_OCAML_PKG_OUNIT
-TESTS += \
- var_expander_tests
-check_PROGRAMS = \
- var_expander_tests
-endif
-
-var_expander_tests_BOBJECTS = \
- var_expander.cmo \
- var_expander_tests.cmo
-var_expander_tests_XOBJECTS = $(var_expander_tests_BOBJECTS:.cmo=.cmx)
-
-var_expander_tests_SOURCES = dummy.c
-var_expander_tests_CPPFLAGS = $(virt_v2v_CPPFLAGS)
-var_expander_tests_CFLAGS = $(virt_v2v_CFLAGS)
-
-if !HAVE_OCAMLOPT
-# Can't call this var_expander_tests_OBJECTS because automake gets confused.
-var_expander_tests_THEOBJECTS = $(var_expander_tests_BOBJECTS)
-var_expander_tests.cmo: OCAMLPACKAGES += -package ounit2
-else
-var_expander_tests_THEOBJECTS = $(var_expander_tests_XOBJECTS)
-var_expander_tests.cmx: OCAMLPACKAGES += -package ounit2
-endif
-
-var_expander_tests_DEPENDENCIES = \
- $(var_expander_tests_THEOBJECTS) \
- $(top_builddir)/common/mlpcre/mlpcre.$(MLARCHIVE) \
- $(top_srcdir)/ocaml-link.sh
-var_expander_tests_LINK = \
- $(top_srcdir)/ocaml-link.sh -cclib '$(OCAMLCLIBS)' -- \
- $(OCAMLFIND) $(BEST) $(OCAMLFLAGS) \
- $(OCAMLPACKAGES) -package ounit2 \
- $(OCAMLLINKFLAGS) \
- $(var_expander_tests_THEOBJECTS) -o $@
-
# Unit tests.
TESTS_ENVIRONMENT = $(top_builddir)/run --test
-TESTS += test-v2v-python-syntax.sh
+TESTS = test-v2v-python-syntax.sh
# Dependencies.
.depend: \
diff --git a/output/create_json.ml b/output/create_json.ml
deleted file mode 100644
index cbc27fdc..00000000
--- a/output/create_json.ml
+++ /dev/null
@@ -1,338 +0,0 @@
-(* virt-v2v
- * Copyright (C) 2019 Red Hat Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *)
-
-open Std_utils
-open C_utils
-open Tools_utils
-
-open Types
-open Utils
-
-module G = Guestfs
-
-let json_list_of_string_list =
- List.map (fun x -> JSON.String x)
-
-let json_list_of_string_string_list =
- List.map (fun (x, y) -> x, JSON.String y)
-
-let push_optional_string lst name = function
- | None -> ()
- | Some v -> List.push_back lst (name, JSON.String v)
-
-let push_optional_int lst name = function
- | None -> ()
- | Some v -> List.push_back lst (name, JSON.Int (Int64.of_int v))
-
-let json_unknown_string = function
- | "unknown" -> JSON.Null
- | v -> JSON.String v
-
-let create_json_metadata source inspect
- { guestcaps; target_buses; target_firmware; target_nics }
- outdisk_name output_format output_name =
- let doc = ref [
- "version", JSON.Int 1L;
- "name", JSON.String output_name;
- "memory", JSON.Int source.s_memory;
- "vcpu", JSON.Int (Int64.of_int source.s_vcpu);
- ] in
-
- (match source.s_genid with
- | None -> ()
- | Some genid -> List.push_back doc ("genid", JSON.String genid)
- );
-
- if source.s_cpu_vendor <> None || source.s_cpu_model <> None ||
- source.s_cpu_topology <> None then (
- let cpu = ref [] in
-
- push_optional_string cpu "vendor" source.s_cpu_vendor;
- push_optional_string cpu "model" source.s_cpu_model;
- (match source.s_cpu_topology with
- | None -> ()
- | Some { s_cpu_sockets; s_cpu_cores; s_cpu_threads } ->
- let attrs = [
- "sockets", JSON.Int (Int64.of_int s_cpu_sockets);
- "cores", JSON.Int (Int64.of_int s_cpu_cores);
- "threads", JSON.Int (Int64.of_int s_cpu_threads);
- ] in
- List.push_back cpu ("topology", JSON.Dict attrs)
- );
-
- List.push_back doc ("cpu", JSON.Dict !cpu);
- );
-
- let firmware =
- let firmware_type =
- match target_firmware with
- | TargetBIOS -> "bios"
- | TargetUEFI -> "uefi" in
-
- let fw = ref [
- "type", JSON.String firmware_type;
- ] in
-
- (match target_firmware with
- | TargetBIOS -> ()
- | TargetUEFI ->
- let uefi_firmware = find_uefi_firmware guestcaps.gcaps_arch in
- let flags =
- List.map (
- function
- | Uefi.UEFI_FLAG_SECURE_BOOT_REQUIRED -> "secure_boot_required"
- ) uefi_firmware.Uefi.flags in
-
- let uefi = ref [
- "code", JSON.String uefi_firmware.Uefi.code;
- "vars", JSON.String uefi_firmware.Uefi.vars;
- "flags", JSON.List (json_list_of_string_list flags);
- ] in
-
- push_optional_string uefi "code-debug" uefi_firmware.Uefi.code_debug;
-
- List.push_back fw ("uefi", JSON.Dict !uefi)
- );
-
- !fw in
- List.push_back doc ("firmware", JSON.Dict firmware);
-
- List.push_back doc ("features",
- JSON.List (json_list_of_string_list source.s_features));
-
- let machine =
- match guestcaps.gcaps_machine with
- | I440FX -> "pc"
- | Q35 -> "q35"
- | Virt -> "virt" in
- List.push_back doc ("machine", JSON.String machine);
-
- let disks, removables =
- let disks = ref []
- and removables = ref [] in
-
- let iter_bus bus_name drive_prefix i = function
- | BusSlotEmpty -> ()
- | BusSlotDisk d ->
- (* Find the corresponding target disk. *)
- let outdisk = outdisk_name d.s_disk_id in
-
- let disk = [
- "dev", JSON.String (drive_prefix ^ drive_name i);
- "bus", JSON.String bus_name;
- "format", JSON.String output_format;
- "file", JSON.String outdisk;
- ] in
-
- List.push_back disks (JSON.Dict disk)
-
- | BusSlotRemovable { s_removable_type = CDROM } ->
- let cdrom = [
- "type", JSON.String "cdrom";
- "dev", JSON.String (drive_prefix ^ drive_name i);
- "bus", JSON.String bus_name;
- ] in
-
- List.push_back removables (JSON.Dict cdrom)
-
- | BusSlotRemovable { s_removable_type = Floppy } ->
- let floppy = [
- "type", JSON.String "floppy";
- "dev", JSON.String (drive_prefix ^ drive_name i);
- ] in
-
- List.push_back removables (JSON.Dict floppy)
- in
-
- Array.iteri (iter_bus "virtio" "vd") target_buses.target_virtio_blk_bus;
- Array.iteri (iter_bus "ide" "hd") target_buses.target_ide_bus;
- Array.iteri (iter_bus "scsi" "sd") target_buses.target_scsi_bus;
- Array.iteri (iter_bus "floppy" "fd") target_buses.target_floppy_bus;
-
- !disks, !removables in
- List.push_back doc ("disks", JSON.List disks);
- List.push_back doc ("removables", JSON.List removables);
-
- let nics =
- List.map (
- fun { s_mac = mac; s_vnet_type = vnet_type; s_nic_model = nic_model;
- s_vnet = vnet; } ->
- let vnet_type_str =
- match vnet_type with
- | Bridge -> "bridge"
- | Network -> "network" in
-
- let nic = ref [
- "vnet", JSON.String vnet;
- "vnet-type", JSON.String vnet_type_str;
- ] in
-
- let nic_model_str = Option.map string_of_nic_model nic_model in
- push_optional_string nic "model" nic_model_str;
-
- push_optional_string nic "mac" mac;
-
- JSON.Dict !nic
- ) target_nics in
- List.push_back doc ("nics", JSON.List nics);
-
- let guestcaps_dict =
- let block_bus =
- match guestcaps.gcaps_block_bus with
- | Virtio_blk -> "virtio-blk"
- | IDE -> "ide" in
- let net_bus =
- match guestcaps.gcaps_net_bus with
- | Virtio_net -> "virtio-net"
- | E1000 -> "e1000"
- | RTL8139 -> "rtl8139" in
- let video = "vga" in
- let machine =
- match guestcaps.gcaps_machine with
- | I440FX -> "i440fx"
- | Q35 -> "q35"
- | Virt -> "virt" in
-
- [
- "block-bus", JSON.String block_bus;
- "net-bus", JSON.String net_bus;
- "video", JSON.String video;
- "machine", JSON.String machine;
- "arch", JSON.String guestcaps.gcaps_arch;
- "virtio-rng", JSON.Bool guestcaps.gcaps_virtio_rng;
- "virtio-balloon", JSON.Bool guestcaps.gcaps_virtio_balloon;
- "isa-pvpanic", JSON.Bool guestcaps.gcaps_isa_pvpanic;
- "virtio-socket", JSON.Bool guestcaps.gcaps_virtio_socket;
- "acpi", JSON.Bool guestcaps.gcaps_acpi;
- "virtio-1-0", JSON.Bool guestcaps.gcaps_virtio_1_0;
- ] in
- List.push_back doc ("guestcaps", JSON.Dict guestcaps_dict);
-
- (match source.s_sound with
- | None -> ()
- | Some { s_sound_model = model } ->
- let sound = [
- "model", JSON.String (string_of_source_sound_model model);
- ] in
- List.push_back doc ("sound", JSON.Dict sound)
- );
-
- (match source.s_display with
- | None -> ()
- | Some d ->
- let display_type =
- match d.s_display_type with
- | Window -> "window"
- | VNC -> "vnc"
- | Spice -> "spice" in
-
- let display = ref [
- "type", JSON.String display_type;
- ] in
-
- push_optional_string display "keymap" d.s_keymap;
- push_optional_string display "password" d.s_password;
-
- let listen =
- match d.s_listen with
- | LNoListen -> None
- | LAddress address ->
- Some [
- "type", JSON.String "address";
- "address", JSON.String address;
- ]
- | LNetwork network ->
- Some [
- "type", JSON.String "network";
- "network", JSON.String network;
- ]
- | LSocket None ->
- Some [
- "type", JSON.String "socket";
- "socket", JSON.Null;
- ]
- | LSocket (Some socket) ->
- Some [
- "type", JSON.String "socket";
- "socket", JSON.String socket;
- ]
- | LNone ->
- Some [
- "type", JSON.String "none";
- ] in
- (match listen with
- | None -> ()
- | Some l -> List.push_back display ("listen", JSON.Dict l)
- );
-
- push_optional_int display "port" d.s_port;
-
- List.push_back doc ("display", JSON.Dict !display)
- );
-
- let inspect_dict =
- let apps =
- List.map (
- fun { G.app2_name = name; app2_display_name = display_name;
- app2_epoch = epoch; app2_version = version;
- app2_release = release; app2_arch = arch; } ->
- JSON.Dict [
- "name", JSON.String name;
- "display-name", JSON.String display_name;
- "epoch", JSON.Int (Int64.of_int32 epoch);
- "version", JSON.String version;
- "release", JSON.String release;
- "arch", JSON.String arch;
- ]
- ) inspect.i_apps in
-
- let firmware_dict =
- match inspect.i_firmware with
- | I_BIOS ->
- [
- "type", JSON.String "bios";
- ]
- | I_UEFI devices ->
- [
- "type", JSON.String "uefi";
- "devices", JSON.List (json_list_of_string_list devices);
- ] in
-
- [
- "root", JSON.String inspect.i_root;
- "type", JSON.String inspect.i_type;
- "distro", json_unknown_string inspect.i_distro;
- "osinfo", json_unknown_string inspect.i_osinfo;
- "arch", JSON.String inspect.i_arch;
- "major-version", JSON.Int (Int64.of_int inspect.i_major_version);
- "minor-version", JSON.Int (Int64.of_int inspect.i_minor_version);
- "package-format", json_unknown_string inspect.i_package_format;
- "package-management", json_unknown_string inspect.i_package_management;
- "product-name", json_unknown_string inspect.i_product_name;
- "product-variant", json_unknown_string inspect.i_product_variant;
- "mountpoints", JSON.Dict (json_list_of_string_string_list inspect.i_mountpoints);
- "applications", JSON.List apps;
- "windows-systemroot", JSON.String inspect.i_windows_systemroot;
- "windows-software-hive", JSON.String inspect.i_windows_software_hive;
- "windows-system-hive", JSON.String inspect.i_windows_system_hive;
- "windows-current-control-set", JSON.String inspect.i_windows_current_control_set;
- "firmware", JSON.Dict firmware_dict;
- ] in
- List.push_back doc ("inspect", JSON.Dict inspect_dict);
-
- !doc
diff --git a/output/create_json.mli b/output/create_json.mli
deleted file mode 100644
index 97086ff5..00000000
--- a/output/create_json.mli
+++ /dev/null
@@ -1,27 +0,0 @@
-(* virt-v2v
- * Copyright (C) 2019 Red Hat Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *)
-
-(** Create JSON metadata for [-o json]. *)
-
-val create_json_metadata : Types.source -> Types.inspect ->
- Types.target_meta ->
- (int -> string) -> string -> string ->
- JSON.doc
-(** [create_json_metadata source targets outdisk_map output_format output_name]
- creates the JSON with the majority of the data that virt-v2v used for the
- conversion. *)
diff --git a/output/output_json.ml b/output/output_json.ml
deleted file mode 100644
index 6e81b639..00000000
--- a/output/output_json.ml
+++ /dev/null
@@ -1,153 +0,0 @@
-(* virt-v2v
- * Copyright (C) 2009-2021 Red Hat Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *)
-
-open Printf
-open Unix
-
-open C_utils
-open Std_utils
-open Tools_utils
-open Common_gettext.Gettext
-
-open Types
-open Utils
-
-open Output
-
-module Json = struct
- type poptions = string * Types.output_allocation * string * string * string
-
- type t = unit
-
- let to_string options =
- "-o json" ^
- match options.output_storage with
- | Some os -> " -os " ^ os
- | None -> ""
-
- let query_output_options () =
- printf (f_"Output options (-oo) which can be used with -o json:
-
- -oo json-disks-pattern=PATTERN Pattern for the disks.
-")
-
- let parse_options options source =
- if options.output_conn <> None then
- error_option_cannot_be_used_in_output_mode "json" "-oc";
- if options.output_password <> None then
- error_option_cannot_be_used_in_output_mode "json" "-op";
-
- let known_pattern_variables = ["DiskNo"; "DiskDeviceName"; "GuestName"] in
- let json_disks_pattern = ref None in
- List.iter (
- fun (k, v) ->
- match k with
- | "json-disks-pattern" ->
- if !json_disks_pattern <> None then
- error (f_"-o json: -oo json-disks-pattern set more than once");
- let vars =
- try Var_expander.scan_variables v
- with Var_expander.Invalid_variable var ->
- error (f_"-o json: -oo json-disks-pattern: invalid variable %%{%s}")
- var in
- List.iter (
- fun var ->
- if not (List.mem var known_pattern_variables) then
- error (f_"-o json: -oo json-disks-pattern: unhandled variable %%{%s}")
- var
- ) vars;
- json_disks_pattern := Some v
- | k ->
- error (f_"-o json: unknown output option -oo %s") k
- ) options.output_options;
-
- let json_disks_pattern =
- Option.default "%{GuestName}-%{DiskDeviceName}" !json_disks_pattern in
-
- (* -os must be set to a directory. *)
- let output_storage =
- match options.output_storage with
- | None ->
- error (f_"-o json: output directory was not specified, use '-os /dir'")
- | Some d when not (is_directory d) ->
- error (f_"-os %s: output directory does not exist or is not a directory") d
- | Some d -> d in
-
- let output_name = Option.default source.s_name options.output_name in
-
- (json_disks_pattern,
- options.output_alloc, options.output_format, output_name, output_storage)
-
- let rec setup dir options source =
- let disks = get_disks dir in
- let json_disks_pattern,
- output_alloc, output_format, output_name,
- output_storage = options in
-
- List.iter (
- fun (i, size) ->
- let socket = sprintf "%s/out%d" dir i in
- On_exit.unlink socket;
-
- (* Create the actual output disk. *)
- let outdisk = json_path output_storage output_name
- json_disks_pattern i in
- mkdir_p (Filename.dirname outdisk) 0o755;
-
- output_to_local_file output_alloc output_format outdisk size socket
- ) disks
-
- (* For -o json, return the output disk name of the i'th disk. *)
- and json_path os output_name json_disks_pattern i =
- let outname =
- let vars_fn = function
- | "DiskNo" -> Some (string_of_int (i+1))
- | "DiskDeviceName" -> Some (sprintf "sd%s" (drive_name i))
- | "GuestName" -> Some output_name
- | _ -> assert false
- in
- Var_expander.replace_fn json_disks_pattern vars_fn in
- let outdisk = os // outname in
- let outdisk = absolute_path outdisk in
- outdisk
-
- let finalize dir options () source inspect target_meta =
- let json_disks_pattern,
- output_alloc, output_format, output_name, output_storage = options in
-
- let doc =
- Create_json.create_json_metadata source inspect target_meta
- (json_path output_storage output_name json_disks_pattern)
- output_format output_name in
- let doc_string = JSON.string_of_doc ~fmt:JSON.Indented doc in
-
- if verbose () then (
- eprintf "resulting JSON:\n";
- output_string Stdlib.stderr doc_string;
- eprintf "\n\n%!";
- );
-
- let file = output_storage // output_name ^ ".json" in
- with_open_out file (
- fun chan ->
- output_string chan doc_string;
- output_char chan '\n'
- )
-
- let request_size = None
-end
diff --git a/output/output_json.mli b/output/output_json.mli
deleted file mode 100644
index 00786ef7..00000000
--- a/output/output_json.mli
+++ /dev/null
@@ -1,21 +0,0 @@
-(* virt-v2v
- * Copyright (C) 2009-2021 Red Hat Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *)
-
-(** [-o json] output mode. *)
-
-module Json : Output.OUTPUT
diff --git a/output/var_expander.ml b/output/var_expander.ml
deleted file mode 100644
index 24b9bafe..00000000
--- a/output/var_expander.ml
+++ /dev/null
@@ -1,72 +0,0 @@
-(* virt-v2v
- * Copyright (C) 2019 Red Hat Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *)
-
-open Std_utils
-
-exception Invalid_variable of string
-
-let var_re = PCRE.compile "(^|[^%])%{([^}]+)}"
-
-let check_variable var =
- String.iter (
- function
- | '0'..'9'
- | 'a'..'z'
- | 'A'..'Z'
- | '_'
- | '-' -> ()
- | _ -> raise (Invalid_variable var)
- ) var
-
-let scan_variables str =
- let res = ref [] in
- let offset = ref 0 in
- while PCRE.matches ~offset:!offset var_re str; do
- let var = PCRE.sub 2 in
- check_variable var;
- let _, end_ = PCRE.subi 0 in
- List.push_back res var;
- offset := end_
- done;
- List.remove_duplicates !res
-
-let replace_fn str fn =
- let res = ref str in
- let offset = ref 0 in
- while PCRE.matches ~offset:!offset var_re !res; do
- let var = PCRE.sub 2 in
- check_variable var;
- let start_, end_ = PCRE.subi 0 in
- match fn var with
- | None ->
- offset := end_
- | Some text ->
- let prefix_len =
- let prefix_start, prefix_end = PCRE.subi 1 in
- prefix_end - prefix_start in
- res := (String.sub !res 0 (start_ + prefix_len)) ^ text ^ (String.sub !res end_ (String.length !res - end_));
- offset := start_ + prefix_len + String.length text
- done;
- !res
-
-let replace_list str lst =
- let fn var =
- try Some (List.assoc var lst)
- with Not_found -> None
- in
- replace_fn str fn
diff --git a/output/var_expander.mli b/output/var_expander.mli
deleted file mode 100644
index 80aa33c2..00000000
--- a/output/var_expander.mli
+++ /dev/null
@@ -1,82 +0,0 @@
-(* virt-v2v
- * Copyright (C) 2019 Red Hat Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *)
-
-(** Simple variable expander.
-
- This module provides the support to expand variables in strings,
- specified in the form of [%{name}].
-
- For example:
-
-{v
-let str = "variable-%{INDEX} in %{INDEX} replaced %{INDEX} times"
-let index = ref 0
-let fn = function
- | "INDEX" ->
- incr index;
- Some (string_of_int !index)
- | _ -> None
-in
-let str = Var_expander.replace_fn str fn
-(* now str is "variable-1 in 2 replaced 3 times" *)
-v}
-
- The names of variables can contain only ASCII letters (uppercase,
- and lowercase), digits, underscores, and dashes.
-
- The replacement is done in a single pass: this means that if a
- variable is replaced with the text of a variable, that new text
- is kept as is in the final output. In practice:
-
-{v
-let str = "%{VAR}"
-let str = Var_expander.replace_list str [("VAR", "%{VAR}")]
-(* now str is "%{VAR}" *)
-v}
-*)
-
-exception Invalid_variable of string
-(** Invalid variable name error.
-
- In case a variable contains characters not allowed, then this
- exception with the actual unacceptable variable. *)
-
-val scan_variables : string -> string list
-(** Scan the pattern string for all the variables available.
-
- This can raise {!Invalid_variable} in case there are invalid
- variable names. *)
-
-val replace_fn : string -> (string -> string option) -> string
-(** Replaces a string expanding all the variables.
-
- The replacement function specify how a variable is replaced;
- if [None] is returned, then that variable is not replaced.
-
- This can raise {!Invalid_variable} in case there are invalid
- variable names. *)
-
-val replace_list : string -> (string * string) list -> string
-(** Replaces a string expanding all the variables.
-
- The replacement list specify how a variable is replaced;
- if it is not specified in the list, then that variable is not
- replaced.
-
- This can raise {!Invalid_variable} in case there are invalid
- variable names. *)
diff --git a/output/var_expander_tests.ml b/output/var_expander_tests.ml
deleted file mode 100644
index 35b62836..00000000
--- a/output/var_expander_tests.ml
+++ /dev/null
@@ -1,113 +0,0 @@
-(* virt-v2v
- * Copyright (C) 2019 Red Hat Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *)
-
-open Printf
-open OUnit
-
-open Std_utils
-
-let assert_equal_string = assert_equal ~printer:identity
-let assert_equal_stringlist = assert_equal ~printer:(fun x -> "(" ^ (String.escaped (String.concat "," x)) ^ ")")
-
-let replace_none_fn _ = None
-let replace_empty_fn _ = Some ""
-
-let test_no_replacement () =
- assert_equal_string "" (Var_expander.replace_fn "" replace_none_fn);
- assert_equal_string "x" (Var_expander.replace_fn "x" replace_none_fn);
- assert_equal_string "%{}" (Var_expander.replace_fn "%{}" replace_none_fn);
- assert_equal_string "%{EMPTY}" (Var_expander.replace_fn "%{EMPTY}" replace_none_fn);
- assert_equal_string "%{EMPTY} %{no}" (Var_expander.replace_fn "%{EMPTY} %{no}" replace_none_fn);
- assert_equal_string "a %{EMPTY} b" (Var_expander.replace_fn "a %{EMPTY} b" replace_none_fn);
- ()
-
-let test_replacements () =
- assert_equal_string "" (Var_expander.replace_fn "%{EMPTY}" replace_empty_fn);
- assert_equal_string "x " (Var_expander.replace_fn "x %{EMPTY}" replace_empty_fn);
- assert_equal_string "xy" (Var_expander.replace_fn "x%{EMPTY}y" replace_empty_fn);
- assert_equal_string "x<->y" (Var_expander.replace_fn "x%{FOO}y" (function | "FOO" -> Some "<->" | _ -> None));
- assert_equal_string "a x b" (Var_expander.replace_fn "a %{FOO} b" (function | "FOO" -> Some "x" | _ -> None));
- assert_equal_string "%{FOO} x" (Var_expander.replace_fn "%{FOO} %{BAR}" (function | "BAR" -> Some "x" | _ -> None));
- assert_equal_string "%{FOO}" (Var_expander.replace_fn "%{BAR}" (function | "BAR" -> Some "%{FOO}" | _ -> None));
- assert_equal_string "%{FOO} x" (Var_expander.replace_fn "%{BAR} %{FOO}" (function | "BAR" -> Some "%{FOO}" | "FOO" -> Some "x" | _ -> None));
- begin
- let str = "%{INDEX}, %{INDEX}, %{INDEX}" in
- let index = ref 0 in
- let fn = function
- | "INDEX" ->
- incr index;
- Some (string_of_int !index)
- | _ -> None
- in
- assert_equal_string "1, 2, 3" (Var_expander.replace_fn str fn)
- end;
- ()
-
-let test_escape () =
- assert_equal_string "%%{FOO}" (Var_expander.replace_fn "%%{FOO}" replace_empty_fn);
- assert_equal_string "x %%{FOO} x" (Var_expander.replace_fn "%{FOO} %%{FOO} %{FOO}" (function | "FOO" -> Some "x" | _ -> None));
- ()
-
-let test_list () =
- assert_equal_string "x %{NONE}" (Var_expander.replace_list "%{FOO} %{NONE}" [("FOO", "x")]);
- ()
-
-let test_scan_variables () =
- let assert_invalid_variable var =
- let str = "%{" ^ var ^ "}" in
- assert_raises (Var_expander.Invalid_variable var)
- (fun () -> Var_expander.scan_variables str)
- in
- assert_equal_stringlist [] (Var_expander.scan_variables "");
- assert_equal_stringlist [] (Var_expander.scan_variables "foo");
- assert_equal_stringlist ["FOO"] (Var_expander.scan_variables "%{FOO}");
- assert_equal_stringlist ["FOO"; "BAR"] (Var_expander.scan_variables "%{FOO} %{BAR}");
- assert_equal_stringlist ["FOO"; "BAR"] (Var_expander.scan_variables "%{FOO} %{BAR} %{FOO}");
- assert_equal_stringlist ["FOO"; "BAR"] (Var_expander.scan_variables "%{FOO} %%{ESCAPED} %{BAR}");
- assert_invalid_variable "FOO/BAR";
- ()
-
-let test_errors () =
- let assert_invalid_variable var =
- let str = "%{" ^ var ^ "}" in
- assert_raises (Var_expander.Invalid_variable var)
- (fun () -> Var_expander.replace_fn str replace_none_fn)
- in
- assert_invalid_variable "FOO/BAR";
- assert_invalid_variable "FOO:BAR";
- assert_invalid_variable "FOO(BAR";
- assert_invalid_variable "FOO)BAR";
- assert_invalid_variable "FOO@BAR";
- ()
-
-(* Suites declaration. *)
-let suite =
- TestList ([
- "basic" >::: [
- "no_replacement" >:: test_no_replacement;
- "replacements" >:: test_replacements;
- "escape" >:: test_escape;
- "list" >:: test_list;
- "scan_variables" >:: test_scan_variables;
- "errors" >:: test_errors;
- ];
- ])
-
-let () =
- ignore (run_test_tt_main suite);
- Printf.fprintf stderr "\n"
diff --git a/tests/Makefile.am b/tests/Makefile.am
index db32e42b..e787a86c 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -81,7 +81,6 @@ TESTS = \
test-v2v-machine-readable.sh \
test-v2v-networks-and-bridges.sh \
test-v2v-o-glance.sh \
- test-v2v-o-json.sh \
test-v2v-o-libvirt.sh \
test-v2v-o-null.sh \
test-v2v-o-openstack.sh \
@@ -241,7 +240,6 @@ EXTRA_DIST += \
test-v2v-networks-and-bridges.sh \
test-v2v-networks-and-bridges-expected.xml \
test-v2v-o-glance.sh \
- test-v2v-o-json.sh \
test-v2v-o-libvirt.sh \
test-v2v-o-null.sh \
test-v2v-o-openstack.sh \
diff --git a/tests/test-v2v-o-json.sh b/tests/test-v2v-o-json.sh
deleted file mode 100755
index 15e7ad5a..00000000
--- a/tests/test-v2v-o-json.sh
+++ /dev/null
@@ -1,68 +0,0 @@
-#!/bin/bash -
-# libguestfs virt-v2v test script
-# Copyright (C) 2019 Red Hat Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-# Test -o json.
-
-set -e
-set -x
-
-source ./functions.sh
-set -e
-set -x
-
-skip_if_skipped
-requires test -f ../test-data/phony-guests/windows.img
-requires jq --version
-
-libvirt_uri="test://$abs_top_builddir/test-data/phony-guests/guests.xml"
-
-export VIRT_TOOLS_DATA_DIR="$srcdir/../test-data/fake-virt-tools"
-
-guestname=windows
-
-d=test-v2v-o-json.d
-rm -rf $d
-cleanup_fn rm -r $d
-mkdir $d
-
-json=$d/$guestname.json
-disk=$d/$guestname-sda
-
-$VG virt-v2v --debug-gc \
- -i libvirt -ic "$libvirt_uri" windows \
- -o json -os $d -on $guestname
-
-# Test the disk was created.
-test -f $disk
-
-# Test the JSON.
-test x$(jq -r '.name' $json) = xwindows
-test x$(jq -r '.inspect.type' $json) = xwindows
-test x$(jq -r '.inspect.distro' $json) = xwindows
-test $(jq -r '.disks | length' $json) -eq 1
-test $(jq -r '.disks[0].file' $json) = $(realpath $disk)
-test $(jq -r '.nics | length' $json) -eq 1
-test $(jq -r '.removables | length' $json) -eq 0
-
-# libguestfs 1.40 didn't have osinfo inspection data, but we want this
-# test to work with 1.40, so ignore if jq returns this field as
-# "null".
-osinfo=$(jq -r '.inspect.osinfo' $json)
-if [ "x$osinfo" != "xnull" ]; then
- test x$osinfo = xwin7
-fi
diff --git a/v2v/v2v.ml b/v2v/v2v.ml
index e00f9814..994982ac 100644
--- a/v2v/v2v.ml
+++ b/v2v/v2v.ml
@@ -194,7 +194,6 @@ let rec main () =
match mode with
| "libvirt" -> output_mode := `Libvirt
| "disk" | "local" -> output_mode := `Disk
- | "json" -> output_mode := `JSON
| "null" -> output_mode := `Null
| "openstack" | "osp" | "rhosp" -> output_mode := `Openstack
| "ovirt" | "rhv" | "rhev" -> output_mode := `RHV
@@ -241,7 +240,7 @@ let rec main () =
s_"Map network in to out";
[ L"no-trim" ], Getopt.String ("-", no_trim_warning),
s_"Ignored for backwards compatibility";
- [ S 'o' ], Getopt.String ("json|libvirt|local|null|openstack|qemu|rhv|rhv-upload|vdsm", set_output_mode),
+ [ S 'o' ], Getopt.String ("libvirt|local|null|openstack|qemu|rhv|rhv-upload|vdsm", set_output_mode),
s_"Set output mode (default: libvirt)";
[ M"oa" ], Getopt.String ("sparse|preallocated", set_output_alloc),
s_"Set output allocation mode";
@@ -376,7 +375,6 @@ read the man page virt-v2v(1).
pr "input:libvirtxml\n";
pr "input:ova\n";
pr "input:vmx\n";
- pr "output:json\n";
pr "output:libvirt\n";
pr "output:local\n";
pr "output:null\n";
@@ -472,8 +470,7 @@ read the man page virt-v2v(1).
| `Openstack -> (module Output_openstack.Openstack)
| `RHV_Upload -> (module Output_rhv_upload.RHVUpload)
| `RHV -> (module Output_rhv.RHV)
- | `VDSM -> (module Output_vdsm.VDSM)
- | `JSON -> (module Output_json.Json) in
+ | `VDSM -> (module Output_vdsm.VDSM) in
let output_options = {
Output.output_alloc = output_alloc;