Richard W.M. Jones
2015-May-15 10:40 UTC
[Libguestfs] [PATCH v2 0/4] Only tell people to use -v -x when reporting bugs if they're not using those flags.
https://bugzilla.redhat.com/show_bug.cgi?id=1167623
Richard W.M. Jones
2015-May-15 10:40 UTC
[Libguestfs] [PATCH v2 1/4] resize: Remove unnecessary 'prog' from error message.
The common error function already prints the program name, so we don't need to print it twice. Before: $ virt-resize --expand "" virt-resize: error: virt-resize: empty --expand option After: $ virt-resize --expand "" virt-resize: error: empty --expand option --- resize/resize.ml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resize/resize.ml b/resize/resize.ml index 40a777c..33abaab 100644 --- a/resize/resize.ml +++ b/resize/resize.ml @@ -170,7 +170,7 @@ let main () let dryrun = ref false in let expand = ref "" in let set_expand s - if s = "" then error (f_"%s: empty --expand option") prog + if s = "" then error (f_"empty --expand option") else if !expand <> "" then error (f_"--expand option given twice") else expand := s in -- 2.3.1
Richard W.M. Jones
2015-May-15 10:40 UTC
[Libguestfs] [PATCH v2 2/4] ocaml tools: Define Common_utils.prog and don't pass it to every function.
This large commit is just code refactoring. Instead of having every OCaml tool define 'prog' the same way, always as: let prog = Filename.basename Sys.executable_name move that into a single place, Common_utils.prog. Then we can use that global value everywhere else, instead of having to pass it as a parameter into a dozen different functions. --- builder/builder.ml | 16 +++++------ builder/cmdline.ml | 6 ++-- builder/downloader.ml | 12 ++++---- builder/downloader.mli | 2 +- builder/index_parser.ml | 6 ++-- builder/index_parser.mli | 2 +- builder/ini_reader.ml | 4 ++- builder/ini_reader.mli | 2 +- builder/paths.ml | 4 +-- builder/sources.ml | 12 ++++---- builder/sources.mli | 2 +- builder/utils.ml | 5 ---- customize/customize_main.ml | 6 ++-- customize/customize_utils.ml | 5 ---- mllib/common_utils.ml | 50 ++++++++++++++++---------------- mllib/common_utils.mli | 21 ++++++++------ mllib/common_utils_tests.ml | 54 +++++++++++++++++------------------ mllib/regedit.ml | 6 ++-- mllib/regedit.mli | 2 +- resize/resize.ml | 12 +++----- sparsify/cmdline.ml | 4 +-- sparsify/sparsify.ml | 2 +- sparsify/utils.ml | 5 ---- sysprep/main.ml | 6 ++-- sysprep/sysprep_operation.ml | 5 ---- sysprep/sysprep_operation.mli | 5 ---- sysprep/sysprep_operation_fs_uuids.ml | 2 +- v2v/OVF.ml | 2 +- v2v/cmdline.ml | 4 +-- v2v/convert_windows.ml | 2 +- v2v/input_libvirt_vcenter_https.ml | 2 +- v2v/input_ova.ml | 2 +- v2v/kvmuid.ml | 1 + v2v/output_rhev.ml | 6 ++-- v2v/utils.ml | 5 ---- v2v/v2v.ml | 4 +-- v2v/v2v_unit_tests.ml | 2 -- 37 files changed, 128 insertions(+), 160 deletions(-) diff --git a/builder/builder.ml b/builder/builder.ml index 0ddf076..7e18065 100644 --- a/builder/builder.ml +++ b/builder/builder.ml @@ -31,8 +31,6 @@ open Customize_cmdline open Unix open Printf -let prog = Filename.basename Sys.executable_name - let () = Random.self_init () let remove_duplicates index @@ -149,7 +147,7 @@ let main () (* Download the sources. *) let downloader = Downloader.create ~verbose ~curl ~cache in - let repos = Sources.read_sources ~prog ~verbose in + let repos = Sources.read_sources ~verbose in let sources = List.map ( fun (source, fingerprint) -> { @@ -166,7 +164,7 @@ let main () let sigchecker Sigchecker.create ~verbose ~gpg ~check_signature ~gpgkey:source.Sources.gpgkey in - Index_parser.get_index ~prog ~verbose ~downloader ~sigchecker source + Index_parser.get_index ~verbose ~downloader ~sigchecker source ) sources ) in let index = remove_duplicates index in @@ -206,7 +204,7 @@ let main () let template = name, arch, revision in msg (f_"Downloading: %s") file_uri; let progress_bar = not quiet in - ignore (Downloader.download ~prog downloader ~template ~progress_bar + ignore (Downloader.download downloader ~template ~progress_bar ~proxy file_uri) ) index; exit 0 @@ -264,7 +262,7 @@ let main () let template = arg, arch, revision in msg (f_"Downloading: %s") file_uri; let progress_bar = not quiet in - Downloader.download ~prog downloader ~template ~progress_bar ~proxy + Downloader.download downloader ~template ~progress_bar ~proxy file_uri in if delete_on_exit then unlink_on_exit template; template in @@ -283,7 +281,7 @@ let main () | { Index_parser.signature_uri = None } -> None | { Index_parser.signature_uri = Some signature_uri } -> let sigfile, delete_on_exit - Downloader.download ~prog downloader signature_uri in + Downloader.download downloader signature_uri in if delete_on_exit then unlink_on_exit sigfile; Some sigfile in @@ -323,7 +321,7 @@ let main () let blockdev_getsize64 dev let cmd = sprintf "blockdev --getsize64 %s" (quote dev) in - let lines = external_command ~prog cmd in + let lines = external_command cmd in assert (List.length lines >= 1); Int64.of_string (List.hd lines) in @@ -723,4 +721,4 @@ let main () | None -> () | Some stats -> print_string stats -let () = run_main_and_handle_errors ~prog main +let () = run_main_and_handle_errors main diff --git a/builder/cmdline.ml b/builder/cmdline.ml index ec189ad..61a5cb8 100644 --- a/builder/cmdline.ml +++ b/builder/cmdline.ml @@ -85,7 +85,7 @@ let parse_cmdline () let quiet = ref false in let size = ref None in - let set_size arg = size := Some (parse_size ~prog arg) in + let set_size arg = size := Some (parse_size arg) in let smp = ref None in let set_smp arg = smp := Some arg in @@ -149,9 +149,9 @@ let parse_cmdline () "--no-sync", Arg.Clear sync, " " ^ s_"Do not fsync output file on exit"; "-v", Arg.Set verbose, " " ^ s_"Enable debugging messages"; "--verbose", Arg.Set verbose, " " ^ s_"Enable debugging messages"; - "-V", Arg.Unit (print_version_and_exit ~prog), + "-V", Arg.Unit print_version_and_exit, " " ^ s_"Display version and exit"; - "--version", Arg.Unit (print_version_and_exit ~prog), + "--version", Arg.Unit print_version_and_exit, " " ^ s_"Display version and exit"; "-x", Arg.Set trace, " " ^ s_"Enable tracing of libguestfs calls"; ] in diff --git a/builder/downloader.ml b/builder/downloader.ml index 8a23bdc..0c91cbb 100644 --- a/builder/downloader.ml +++ b/builder/downloader.ml @@ -44,19 +44,19 @@ let create ~verbose ~curl ~cache = { cache = cache; } -let rec download ~prog t ?template ?progress_bar ?(proxy = SystemProxy) uri +let rec download t ?template ?progress_bar ?(proxy = SystemProxy) uri match template with | None -> (* no cache, simple download *) (* Create a temporary name. *) let tmpfile = Filename.temp_file "vbcache" ".txt" in - download_to ~prog t ?progress_bar ~proxy uri tmpfile; + download_to t ?progress_bar ~proxy uri tmpfile; (tmpfile, true) | Some (name, arch, revision) -> match t.cache with | None -> (* Not using the cache at all? *) - download t ~prog ?progress_bar ~proxy uri + download t ?progress_bar ~proxy uri | Some cache -> let filename = Cache.cache_of_name cache name arch revision in @@ -65,11 +65,11 @@ let rec download ~prog t ?template ?progress_bar ?(proxy = SystemProxy) uri * If not, download it. *) if not (Sys.file_exists filename) then - download_to ~prog t ?progress_bar ~proxy uri filename; + download_to t ?progress_bar ~proxy uri filename; (filename, false) -and download_to ~prog t ?(progress_bar = false) ~proxy uri filename +and download_to t ?(progress_bar = false) ~proxy uri filename let parseduri try URI.parse_uri uri with Invalid_argument "URI.parse_uri" -> @@ -102,7 +102,7 @@ and download_to ~prog t ?(progress_bar = false) ~proxy uri filename (if t.verbose then "" else " -s -S") (quote uri) in if t.verbose then printf "%s\n%!" cmd; - let lines = external_command ~prog cmd in + let lines = external_command cmd in if List.length lines < 1 then error (f_"unexpected output from curl command, enable debug and look at previous messages"); let status_code = List.hd lines in diff --git a/builder/downloader.mli b/builder/downloader.mli index 2721f79..837c879 100644 --- a/builder/downloader.mli +++ b/builder/downloader.mli @@ -35,7 +35,7 @@ type proxy_mode val create : verbose:bool -> curl:string -> cache:Cache.t option -> t (** Create the abstract type. *) -val download : prog:string -> t -> ?template:(string*string*int) -> ?progress_bar:bool -> ?proxy:proxy_mode -> uri -> (filename * bool) +val download : t -> ?template:(string*string*int) -> ?progress_bar:bool -> ?proxy:proxy_mode -> uri -> (filename * bool) (** Download the URI, returning the downloaded filename and a temporary file flag. The temporary file flag is [true] iff the downloaded file is temporary and should be deleted by the diff --git a/builder/index_parser.ml b/builder/index_parser.ml index 38fe195..d39bb3a 100644 --- a/builder/index_parser.ml +++ b/builder/index_parser.ml @@ -111,7 +111,7 @@ let print_entry chan (name, { printable_name = printable_name; ); if hidden then fp "hidden=true\n" -let get_index ~prog ~verbose ~downloader ~sigchecker +let get_index ~verbose ~downloader ~sigchecker { Sources.uri = uri; proxy = proxy } let corrupt_file () error (f_"The index file downloaded from '%s' is corrupt.\nYou need to ask the supplier of this file to fix it and upload a fixed version.") uri @@ -119,7 +119,7 @@ let get_index ~prog ~verbose ~downloader ~sigchecker let rec get_index () (* Get the index page. *) - let tmpfile, delete_tmpfile = Downloader.download ~prog downloader ~proxy uri in + let tmpfile, delete_tmpfile = Downloader.download downloader ~proxy uri in (* Check index file signature (also verifies it was fully * downloaded and not corrupted in transit). @@ -127,7 +127,7 @@ let get_index ~prog ~verbose ~downloader ~sigchecker Sigchecker.verify sigchecker tmpfile; (* Try parsing the file. *) - let sections = Ini_reader.read_ini ~prog tmpfile in + let sections = Ini_reader.read_ini tmpfile in if delete_tmpfile then (try Unix.unlink tmpfile with _ -> ()); diff --git a/builder/index_parser.mli b/builder/index_parser.mli index c7f244d..4687346 100644 --- a/builder/index_parser.mli +++ b/builder/index_parser.mli @@ -38,4 +38,4 @@ and entry = { proxy : Downloader.proxy_mode; } -val get_index : prog:string -> verbose:bool -> downloader:Downloader.t -> sigchecker:Sigchecker.t -> Sources.source -> index +val get_index : verbose:bool -> downloader:Downloader.t -> sigchecker:Sigchecker.t -> Sources.source -> index diff --git a/builder/ini_reader.ml b/builder/ini_reader.ml index c989e1f..50a06f9 100644 --- a/builder/ini_reader.ml +++ b/builder/ini_reader.ml @@ -16,6 +16,8 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. *) +open Common_utils + type sections = section list and section = string * fields (* [name] + fields *) and fields = field list @@ -29,7 +31,7 @@ and c_fields = field array (* Calls yyparse in the C code. *) external parse_index : prog:string -> error_suffix:string -> string -> c_sections = "virt_builder_parse_index" -let read_ini ~prog ?(error_suffix = "") file +let read_ini ?(error_suffix = "") file let sections = parse_index ~prog ~error_suffix file in let sections = Array.to_list sections in List.map ( diff --git a/builder/ini_reader.mli b/builder/ini_reader.mli index 82c8e24..62567e8 100644 --- a/builder/ini_reader.mli +++ b/builder/ini_reader.mli @@ -21,4 +21,4 @@ and section = string * fields (* [name] + fields *) and fields = field list and field = string * string option * string (* key + subkey + value *) -val read_ini : prog:string -> ?error_suffix:string -> string -> sections +val read_ini : ?error_suffix:string -> string -> sections diff --git a/builder/paths.ml b/builder/paths.ml index e4f0c7b..2b131c0 100644 --- a/builder/paths.ml +++ b/builder/paths.ml @@ -25,14 +25,14 @@ let xdg_cache_home with Not_found -> None (* no cache directory *) -let xdg_config_home ~prog +let xdg_config_home () try Some (Sys.getenv "XDG_CONFIG_HOME" // prog) with Not_found -> try Some (Sys.getenv "HOME" // ".config" // prog) with Not_found -> None (* no config directory *) -let xdg_config_dirs ~prog +let xdg_config_dirs () let dirs try Sys.getenv "XDG_CONFIG_DIRS" with Not_found -> "/etc/xdg" in diff --git a/builder/sources.ml b/builder/sources.ml index 990a2ac..cec4a04 100644 --- a/builder/sources.ml +++ b/builder/sources.ml @@ -31,11 +31,11 @@ type source = { module StringSet = Set.Make (String) -let parse_conf ~prog ~verbose file +let parse_conf ~verbose file if verbose then ( printf (f_"%s: trying to read %s\n") prog file; ); - let sections = Ini_reader.read_ini ~prog ~error_suffix:"[ignored]" file in + let sections = Ini_reader.read_ini ~error_suffix:"[ignored]" file in let sources = List.fold_right ( fun (n, fields) acc -> @@ -101,10 +101,10 @@ let merge_sources current_sources new_sources let filter_filenames filename Filename.check_suffix filename ".conf" -let read_sources ~prog ~verbose - let dirs = Paths.xdg_config_dirs ~prog in +let read_sources ~verbose + let dirs = Paths.xdg_config_dirs () in let dirs - match Paths.xdg_config_home ~prog with + match Paths.xdg_config_home () with | None -> dirs | Some dir -> dir :: dirs in let dirs = List.map (fun x -> x // "repos.d") dirs in @@ -118,7 +118,7 @@ let read_sources ~prog ~verbose List.fold_left ( fun acc file -> try ( - let s = merge_sources acc (parse_conf ~prog ~verbose (dir // file)) in + let s = merge_sources acc (parse_conf ~verbose (dir // file)) in (* Add the current file name to the set only if its parsing * was successful. *) diff --git a/builder/sources.mli b/builder/sources.mli index f7bc016..52c5908 100644 --- a/builder/sources.mli +++ b/builder/sources.mli @@ -23,4 +23,4 @@ type source = { proxy : Downloader.proxy_mode; } -val read_sources : prog:string -> verbose:bool -> source list +val read_sources : verbose:bool -> source list diff --git a/builder/utils.ml b/builder/utils.ml index 5dea74e..a6628eb 100644 --- a/builder/utils.ml +++ b/builder/utils.ml @@ -27,9 +27,4 @@ type gpgkey_type | Fingerprint of string | KeyFile of string -let prog = Filename.basename Sys.executable_name -let error ?exit_code fs = error ~prog ?exit_code fs -let warning fs = warning ~prog fs -let info fs = info ~prog fs - let quote = Filename.quote diff --git a/customize/customize_main.ml b/customize/customize_main.ml index 6669c30..fe3e7b8 100644 --- a/customize/customize_main.ml +++ b/customize/customize_main.ml @@ -100,9 +100,9 @@ let main () "--smp", Arg.Int set_smp, "vcpus" ^ " " ^ s_"Set number of vCPUs"; "-v", Arg.Set verbose, " " ^ s_"Enable debugging messages"; "--verbose", Arg.Set verbose, " " ^ s_"Enable debugging messages"; - "-V", Arg.Unit (print_version_and_exit ~prog), + "-V", Arg.Unit print_version_and_exit, " " ^ s_"Display version and exit"; - "--version", Arg.Unit (print_version_and_exit ~prog), + "--version", Arg.Unit print_version_and_exit, " " ^ s_"Display version and exit"; "-x", Arg.Set trace, " " ^ s_"Enable tracing of libguestfs calls"; ] in @@ -253,4 +253,4 @@ read the man page virt-customize(1). Gc.compact () (* Finished. *) -let () = run_main_and_handle_errors ~prog main +let () = run_main_and_handle_errors main diff --git a/customize/customize_utils.ml b/customize/customize_utils.ml index 465581a..360c252 100644 --- a/customize/customize_utils.ml +++ b/customize/customize_utils.ml @@ -22,9 +22,4 @@ open Printf open Common_utils -let prog = Filename.basename Sys.executable_name -let error ?exit_code fs = error ~prog ?exit_code fs -let warning fs = warning ~prog fs -let info fs = info ~prog fs - let quote = Filename.quote diff --git a/mllib/common_utils.ml b/mllib/common_utils.ml index 652a412..ed647e5 100644 --- a/mllib/common_utils.ml +++ b/mllib/common_utils.ml @@ -278,7 +278,9 @@ let make_message_function ~quiet fs in ksprintf p fs -let error ~prog ?(exit_code = 1) fs +let prog = Filename.basename Sys.executable_name + +let error ?(exit_code = 1) fs let display str let chan = stderr in ansi_red ~chan (); @@ -294,7 +296,7 @@ let error ~prog ?(exit_code = 1) fs in ksprintf display fs -let warning ~prog fs +let warning fs let display str let chan = stderr in ansi_blue ~chan (); @@ -304,7 +306,7 @@ let warning ~prog fs in ksprintf display fs -let info ~prog fs +let info fs let display str let chan = stdout in ansi_magenta ~chan (); @@ -317,33 +319,33 @@ let info ~prog fs (* All the OCaml virt-* programs use this wrapper to catch exceptions * and print them nicely. *) -let run_main_and_handle_errors ~prog main +let run_main_and_handle_errors main try main () with | Unix.Unix_error (code, fname, "") -> (* from a syscall *) - error ~prog (f_"%s: %s") fname (Unix.error_message code) + error (f_"%s: %s") fname (Unix.error_message code) | Unix.Unix_error (code, fname, param) -> (* from a syscall *) - error ~prog (f_"%s: %s: %s") fname (Unix.error_message code) param + error (f_"%s: %s: %s") fname (Unix.error_message code) param | Sys_error msg -> (* from a syscall *) - error ~prog (f_"%s") msg + error (f_"%s") msg | G.Error msg -> (* from libguestfs *) - error ~prog (f_"libguestfs error: %s") msg + error (f_"libguestfs error: %s") msg | Failure msg -> (* from failwith/failwithf *) - error ~prog (f_"failure: %s") msg + error (f_"failure: %s") msg | Invalid_argument msg -> (* probably should never happen *) - error ~prog (f_"internal error: invalid argument: %s") msg + error (f_"internal error: invalid argument: %s") msg | Assert_failure (file, line, char) -> (* should never happen *) - error ~prog (f_"internal error: assertion failed at %s, line %d, char %d") + error (f_"internal error: assertion failed at %s, line %d, char %d") file line char | Not_found -> (* should never happen *) - error ~prog (f_"internal error: Not_found exception was thrown") + error (f_"internal error: Not_found exception was thrown") | exn -> (* something not matched above *) - error ~prog (f_"exception: %s") (Printexc.to_string exn) + error (f_"exception: %s") (Printexc.to_string exn) (* Print the version number and exit. Used to implement --version in * the OCaml tools. *) -let print_version_and_exit ~prog () +let print_version_and_exit () printf "%s %s\n%!" prog Config.package_version_full; exit 0 @@ -366,7 +368,7 @@ let read_whole_file path (* Parse a size field, eg. "10G". *) let parse_size let const_re = Str.regexp "^\\([.0-9]+\\)\\([bKMG]\\)$" in - fun ~prog field -> + fun field -> let matches rex = Str.string_match rex field 0 in let sub i = Str.matched_group i field in let size_scaled f = function @@ -381,7 +383,7 @@ let parse_size size_scaled (float_of_string (sub 1)) (sub 2) ) else - error ~prog "%s: cannot parse size field" field + error "%s: cannot parse size field" field (* Parse a size field, eg. "10G", "+20%" etc. Used particularly by * virt-resize --resize and --resize-force options. @@ -394,7 +396,7 @@ let parse_resize and plus_percent_re = Str.regexp "^\\+\\([.0-9]+\\)%$" and minus_percent_re = Str.regexp "^-\\([.0-9]+\\)%$" in - fun ~prog oldsize field -> + fun oldsize field -> let matches rex = Str.string_match rex field 0 in let sub i = Str.matched_group i field in let size_scaled f = function @@ -429,7 +431,7 @@ let parse_resize oldsize -^ oldsize *^ percent /^ 1000L ) else - error ~prog "%s: cannot parse resize field" field + error "%s: cannot parse resize field" field let human_size i let sign, i = if i < 0L then "-", Int64.neg i else "", i in @@ -535,7 +537,7 @@ let compare_lvm2_uuids uuid1 uuid2 loop 0 0 (* Run an external command, slurp up the output as a list of lines. *) -let external_command ~prog cmd +let external_command cmd let chan = Unix.open_process_in cmd in let lines = ref [] in (try while true do lines := input_line chan :: !lines done @@ -545,17 +547,17 @@ let external_command ~prog cmd (match stat with | Unix.WEXITED 0 -> () | Unix.WEXITED i -> - error ~prog (f_"external command '%s' exited with error %d") cmd i + error (f_"external command '%s' exited with error %d") cmd i | Unix.WSIGNALED i -> - error ~prog (f_"external command '%s' killed by signal %d") cmd i + error (f_"external command '%s' killed by signal %d") cmd i | Unix.WSTOPPED i -> - error ~prog (f_"external command '%s' stopped by signal %d") cmd i + error (f_"external command '%s' stopped by signal %d") cmd i ); lines (* Run uuidgen to return a random UUID. *) -let uuidgen ~prog () - let lines = external_command ~prog "uuidgen -r" in +let uuidgen () + let lines = external_command "uuidgen -r" in assert (List.length lines >= 1); let uuid = List.hd lines in let len = String.length uuid in diff --git a/mllib/common_utils.mli b/mllib/common_utils.mli index f7d83be..957ae81 100644 --- a/mllib/common_utils.mli +++ b/mllib/common_utils.mli @@ -66,29 +66,32 @@ val make_message_function : quiet:bool -> ('a, unit, string, unit) format4 -> 'a (** Timestamped progress messages. Used for ordinary messages when not [--quiet]. *) -val error : prog:string -> ?exit_code:int -> ('a, unit, string, 'b) format4 -> 'a +val prog : string +(** The program name (derived from {!Sys.executable_name}). *) + +val error : ?exit_code:int -> ('a, unit, string, 'b) format4 -> 'a (** Standard error function. *) -val warning : prog:string -> ('a, unit, string, unit) format4 -> 'a +val warning : ('a, unit, string, unit) format4 -> 'a (** Standard warning function. *) -val info : prog:string -> ('a, unit, string, unit) format4 -> 'a +val info : ('a, unit, string, unit) format4 -> 'a (** Standard info function. Note: Use full sentences for this. *) -val run_main_and_handle_errors : prog:string -> (unit -> unit) -> unit +val run_main_and_handle_errors : (unit -> unit) -> unit (** Common function for handling pretty-printing exceptions. *) -val print_version_and_exit : prog:string -> unit -> unit +val print_version_and_exit : unit -> unit (** Print the version number and exit. Implements [--version] flag in the OCaml tools. *) val read_whole_file : string -> string (** Read in the whole file as a string. *) -val parse_size : prog:string -> string -> int64 +val parse_size : string -> int64 (** Parse a size field, eg. [10G] *) -val parse_resize : prog:string -> int64 -> string -> int64 +val parse_resize : int64 -> string -> int64 (** Parse a size field, eg. [10G], [+20%] etc. Used particularly by [virt-resize --resize] and [--resize-force] options. *) @@ -113,10 +116,10 @@ val compare_version : string -> string -> int val compare_lvm2_uuids : string -> string -> int (** Compare two LVM2 UUIDs, ignoring '-' characters. *) -val external_command : prog:string -> string -> string list +val external_command : string -> string list (** Run an external command, slurp up the output as a list of lines. *) -val uuidgen : prog:string -> unit -> string +val uuidgen : unit -> string (** Run uuidgen to return a random UUID. *) val unlink_on_exit : string -> unit diff --git a/mllib/common_utils_tests.ml b/mllib/common_utils_tests.ml index a06476b..6bfc7e1 100644 --- a/mllib/common_utils_tests.ml +++ b/mllib/common_utils_tests.ml @@ -21,8 +21,6 @@ open OUnit2 open Common_utils -let prog = "common_utils_tests" - (* Utils. *) let assert_equal_string = assert_equal ~printer:(fun x -> x) let assert_equal_int = assert_equal ~printer:(fun x -> string_of_int x) @@ -37,41 +35,41 @@ let test_le32 ctx (* Test Common_utils.parse_size. *) let test_parse_resize ctx (* For absolute sizes, oldsize is ignored. *) - assert_equal_int64 100_L (parse_resize ~prog 100_L "100b"); - assert_equal_int64 100_L (parse_resize ~prog 1000_L "100b"); - assert_equal_int64 100_L (parse_resize ~prog 10000_L "100b"); - assert_equal_int64 102400_L (parse_resize ~prog 100_L "100K"); + assert_equal_int64 100_L (parse_resize 100_L "100b"); + assert_equal_int64 100_L (parse_resize 1000_L "100b"); + assert_equal_int64 100_L (parse_resize 10000_L "100b"); + assert_equal_int64 102400_L (parse_resize 100_L "100K"); (* Fractions are always rounded down. *) - assert_equal_int64 1126_L (parse_resize ~prog 100_L "1.1K"); - assert_equal_int64 104962457_L (parse_resize ~prog 100_L "100.1M"); - assert_equal_int64 132499741081_L (parse_resize ~prog 100_L "123.4G"); + assert_equal_int64 1126_L (parse_resize 100_L "1.1K"); + assert_equal_int64 104962457_L (parse_resize 100_L "100.1M"); + assert_equal_int64 132499741081_L (parse_resize 100_L "123.4G"); (* oldsize +/- a constant. *) - assert_equal_int64 101_L (parse_resize ~prog 100_L "+1b"); - assert_equal_int64 98_L (parse_resize ~prog 100_L "-2b"); - assert_equal_int64 1124_L (parse_resize ~prog 100_L "+1K"); - assert_equal_int64 0_L (parse_resize ~prog 1024_L "-1K"); - assert_equal_int64 0_L (parse_resize ~prog 1126_L "-1.1K"); - assert_equal_int64 1154457_L (parse_resize ~prog 1024_L "+1.1M"); - assert_equal_int64 107374182_L (parse_resize ~prog 132499741081_L "-123.3G"); + assert_equal_int64 101_L (parse_resize 100_L "+1b"); + assert_equal_int64 98_L (parse_resize 100_L "-2b"); + assert_equal_int64 1124_L (parse_resize 100_L "+1K"); + assert_equal_int64 0_L (parse_resize 1024_L "-1K"); + assert_equal_int64 0_L (parse_resize 1126_L "-1.1K"); + assert_equal_int64 1154457_L (parse_resize 1024_L "+1.1M"); + assert_equal_int64 107374182_L (parse_resize 132499741081_L "-123.3G"); (* oldsize +/- a percentage. *) - assert_equal_int64 101_L (parse_resize ~prog 100_L "+1%"); - assert_equal_int64 99_L (parse_resize ~prog 100_L "-1%"); - assert_equal_int64 101000_L (parse_resize ~prog 100000_L "+1%"); - assert_equal_int64 99000_L (parse_resize ~prog 100000_L "-1%"); - assert_equal_int64 150000_L (parse_resize ~prog 100000_L "+50%"); - assert_equal_int64 50000_L (parse_resize ~prog 100000_L "-50%"); - assert_equal_int64 200000_L (parse_resize ~prog 100000_L "+100%"); - assert_equal_int64 0_L (parse_resize ~prog 100000_L "-100%"); - assert_equal_int64 300000_L (parse_resize ~prog 100000_L "+200%"); - assert_equal_int64 400000_L (parse_resize ~prog 100000_L "+300%"); + assert_equal_int64 101_L (parse_resize 100_L "+1%"); + assert_equal_int64 99_L (parse_resize 100_L "-1%"); + assert_equal_int64 101000_L (parse_resize 100000_L "+1%"); + assert_equal_int64 99000_L (parse_resize 100000_L "-1%"); + assert_equal_int64 150000_L (parse_resize 100000_L "+50%"); + assert_equal_int64 50000_L (parse_resize 100000_L "-50%"); + assert_equal_int64 200000_L (parse_resize 100000_L "+100%"); + assert_equal_int64 0_L (parse_resize 100000_L "-100%"); + assert_equal_int64 300000_L (parse_resize 100000_L "+200%"); + assert_equal_int64 400000_L (parse_resize 100000_L "+300%"); (* Implementation rounds numbers so that only a single digit after * the decimal point is significant. *) - assert_equal_int64 101100_L (parse_resize ~prog 100000_L "+1.1%"); - assert_equal_int64 101100_L (parse_resize ~prog 100000_L "+1.12%") + assert_equal_int64 101100_L (parse_resize 100000_L "+1.1%"); + assert_equal_int64 101100_L (parse_resize 100000_L "+1.12%") (* Test Common_utils.human_size. *) let test_human_size ctx diff --git a/mllib/regedit.ml b/mllib/regedit.ml index 0291fe4..389dd82 100644 --- a/mllib/regedit.ml +++ b/mllib/regedit.ml @@ -44,16 +44,16 @@ let encode_utf16le str (* Take a UTF16LE string and decode it to UTF-8. Actually this * fails if the string is not 7 bit ASCII. XXX Use iconv here. *) -let decode_utf16le ~prog str +let decode_utf16le str let len = String.length str in if len mod 2 <> 0 then - error ~prog (f_"decode_utf16le: Windows string does not appear to be in UTF16-LE encoding. This could be a bug in %s.") prog; + error (f_"decode_utf16le: Windows string does not appear to be in UTF16-LE encoding. This could be a bug in %s.") prog; let copy = String.create (len/2) in for i = 0 to (len/2)-1 do let cl = String.unsafe_get str (i*2) in let ch = String.unsafe_get str ((i*2)+1) in if ch != '\000' || Char.code cl >= 127 then - error ~prog (f_"decode_utf16le: Windows UTF16-LE string contains non-7-bit characters. This is a bug in %s, please report it.") prog; + error (f_"decode_utf16le: Windows UTF16-LE string contains non-7-bit characters. This is a bug in %s, please report it.") prog; String.unsafe_set copy i cl done; copy diff --git a/mllib/regedit.mli b/mllib/regedit.mli index 985e405..a65f5d3 100644 --- a/mllib/regedit.mli +++ b/mllib/regedit.mli @@ -61,5 +61,5 @@ val reg_import : Guestfs.guestfs -> int64 -> regedits -> unit val encode_utf16le : string -> string (** Helper: Take a 7 bit ASCII string and encode it as UTF-16LE. *) -val decode_utf16le : prog:string -> string -> string +val decode_utf16le : string -> string (** Helper: Take a UTF-16LE string and decode it to UTF-8. *) diff --git a/resize/resize.ml b/resize/resize.ml index 33abaab..ef0f601 100644 --- a/resize/resize.ml +++ b/resize/resize.ml @@ -27,10 +27,6 @@ module G = Guestfs let min_extra_partition = 10L *^ 1024L *^ 1024L (* Command line argument parsing. *) -let prog = Filename.basename Sys.executable_name -let error fs = error ~prog fs -let warning fs = warning ~prog fs - type align_first_t = [ `Never | `Always | `Auto ] (* Source partition type. *) @@ -229,9 +225,9 @@ let main () "--no-sparse", Arg.Clear sparse, " " ^ s_"Turn off sparse copying"; "-v", Arg.Set verbose, " " ^ s_"Enable debugging messages"; "--verbose", Arg.Set verbose, ditto; - "-V", Arg.Unit (print_version_and_exit ~prog), + "-V", Arg.Unit print_version_and_exit, " " ^ s_"Display version and exit"; - "--version", Arg.Unit (print_version_and_exit ~prog), ditto; + "--version", Arg.Unit print_version_and_exit, ditto; "-x", Arg.Set trace, " " ^ s_"Enable tracing of libguestfs calls"; ] in long_options := argspec; @@ -722,7 +718,7 @@ read the man page virt-resize(1). (* Parse the size field. *) let oldsize = p.p_part.G.part_size in - let newsize = parse_resize ~prog oldsize sizefield in + let newsize = parse_resize oldsize sizefield in if newsize <= 0L then error (f_"%s: new partition size is zero or negative") dev; @@ -1367,4 +1363,4 @@ read the man page virt-resize(1). if debug_gc then Gc.compact () -let () = run_main_and_handle_errors ~prog main +let () = run_main_and_handle_errors main diff --git a/sparsify/cmdline.ml b/sparsify/cmdline.ml index e8d3e81..290359c 100644 --- a/sparsify/cmdline.ml +++ b/sparsify/cmdline.ml @@ -77,9 +77,9 @@ let parse_cmdline () "--tmp", Arg.Set_string tmp, s_"block|dir|prebuilt:file" ^ " " ^ s_"Set temporary block device, directory or prebuilt file"; "-v", Arg.Set verbose, " " ^ s_"Enable debugging messages"; "--verbose", Arg.Set verbose, ditto; - "-V", Arg.Unit (print_version_and_exit ~prog), + "-V", Arg.Unit print_version_and_exit, " " ^ s_"Display version and exit"; - "--version", Arg.Unit (print_version_and_exit ~prog), ditto; + "--version", Arg.Unit print_version_and_exit, ditto; "-x", Arg.Set trace, " " ^ s_"Enable tracing of libguestfs calls"; "--zero", Arg.String (add zeroes), s_"fs" ^ " " ^ s_"Zero filesystem"; ] in diff --git a/sparsify/sparsify.ml b/sparsify/sparsify.ml index 19f1870..a16af84 100644 --- a/sparsify/sparsify.ml +++ b/sparsify/sparsify.ml @@ -46,4 +46,4 @@ let rec main () if debug_gc then Gc.compact () -let () = run_main_and_handle_errors ~prog main +let () = run_main_and_handle_errors main diff --git a/sparsify/utils.ml b/sparsify/utils.ml index 19bb85e..73e90b0 100644 --- a/sparsify/utils.ml +++ b/sparsify/utils.ml @@ -24,11 +24,6 @@ open Common_utils module G = Guestfs -let prog = Filename.basename Sys.executable_name -let error ?exit_code fs = error ~prog ?exit_code fs -let warning fs = warning ~prog fs -let info fs = info ~prog fs - let quote = Filename.quote (* Return true if the filesystem is a read-only LV (RHBZ#1185561). *) diff --git a/sysprep/main.ml b/sysprep/main.ml index 4763507..65dc29e 100644 --- a/sysprep/main.ml +++ b/sysprep/main.ml @@ -146,9 +146,9 @@ let main () "--quiet", Arg.Set quiet, " " ^ s_"Don't print log messages"; "-v", Arg.Set verbose, " " ^ s_"Enable debugging messages"; "--verbose", Arg.Set verbose, " " ^ s_"Enable debugging messages"; - "-V", Arg.Unit (print_version_and_exit ~prog), + "-V", Arg.Unit print_version_and_exit, " " ^ s_"Display version and exit"; - "--version", Arg.Unit (print_version_and_exit ~prog), + "--version", Arg.Unit print_version_and_exit, " " ^ s_"Display version and exit"; "-x", Arg.Set trace, " " ^ s_"Enable tracing of libguestfs calls"; ] in @@ -289,4 +289,4 @@ read the man page virt-sysprep(1). if debug_gc then Gc.compact () -let () = run_main_and_handle_errors ~prog main +let () = run_main_and_handle_errors main diff --git a/sysprep/sysprep_operation.ml b/sysprep/sysprep_operation.ml index ec5e374..4c4269a 100644 --- a/sysprep/sysprep_operation.ml +++ b/sysprep/sysprep_operation.ml @@ -22,11 +22,6 @@ open Printf open Common_gettext.Gettext -let prog = Filename.basename Sys.executable_name -let error ?exit_code fs = error ~prog ?exit_code fs -let warning fs = warning ~prog fs -let info fs = info ~prog fs - class filesystem_side_effects object val mutable m_created_file = false diff --git a/sysprep/sysprep_operation.mli b/sysprep/sysprep_operation.mli index bed0266..aab70bc 100644 --- a/sysprep/sysprep_operation.mli +++ b/sysprep/sysprep_operation.mli @@ -18,11 +18,6 @@ (** Defines the interface between the main program and sysprep operations. *) -val prog : string -val error : ?exit_code:int -> ('a, unit, string, 'b) format4 -> 'a -val warning : ('a, unit, string, unit) format4 -> 'a -val info : ('a, unit, string, unit) format4 -> 'a - class filesystem_side_effects : object method created_file : unit -> unit method get_created_file : bool diff --git a/sysprep/sysprep_operation_fs_uuids.ml b/sysprep/sysprep_operation_fs_uuids.ml index b67c131..002bb4d 100644 --- a/sysprep/sysprep_operation_fs_uuids.ml +++ b/sysprep/sysprep_operation_fs_uuids.ml @@ -30,7 +30,7 @@ let rec fs_uuids_perform ~verbose ~quiet g root side_effects List.iter (function | _, "unknown" -> () | dev, typ -> - let new_uuid = Common_utils.uuidgen ~prog () in + let new_uuid = Common_utils.uuidgen () in try g#set_uuid dev new_uuid with diff --git a/v2v/OVF.ml b/v2v/OVF.ml index 7e5e57e..7129cff 100644 --- a/v2v/OVF.ml +++ b/v2v/OVF.ml @@ -411,7 +411,7 @@ and add_disks targets guestcaps output_alloc sd_uuid image_uuids vol_uuids ovf "ovf:size", Int64.to_string size_gb; "ovf:fileRef", fileref; "ovf:parentRef", ""; - "ovf:vm_snapshot_id", uuidgen ~prog (); + "ovf:vm_snapshot_id", uuidgen (); "ovf:volume-format", format_for_rhev; "ovf:volume-type", output_alloc_for_rhev; "ovf:format", "http://en.wikipedia.org/wiki/Byte"; (* wtf? *) diff --git a/v2v/cmdline.ml b/v2v/cmdline.ml index 6300b03..4f7ac8c 100644 --- a/v2v/cmdline.ml +++ b/v2v/cmdline.ml @@ -179,9 +179,9 @@ let parse_cmdline () Arg.Set_string vdsm_ovf_output, " " ^ s_"Output OVF file"; "-v", Arg.Set verbose, " " ^ s_"Enable debugging messages"; "--verbose", Arg.Set verbose, ditto; - "-V", Arg.Unit (print_version_and_exit ~prog), + "-V", Arg.Unit print_version_and_exit, " " ^ s_"Display version and exit"; - "--version", Arg.Unit (print_version_and_exit ~prog), ditto; + "--version", Arg.Unit print_version_and_exit, ditto; "--vmtype", Arg.Set_string vmtype, "server|desktop " ^ s_"Set vmtype (for RHEV)"; "-x", Arg.Set trace, " " ^ s_"Enable tracing of libguestfs calls"; ] in diff --git a/v2v/convert_windows.ml b/v2v/convert_windows.ml index f9517a8..fd37fad 100644 --- a/v2v/convert_windows.ml +++ b/v2v/convert_windows.ml @@ -114,7 +114,7 @@ let convert ~verbose ~keep_serial_console (g : G.guestfs) inspect source raise Not_found ); let data = g#hivex_value_value valueh in - let data = decode_utf16le ~prog data in + let data = decode_utf16le data in (* The uninstall program will be uninst.exe. This is a wrapper * around _uninst.exe which prompts the user. As we don't want diff --git a/v2v/input_libvirt_vcenter_https.ml b/v2v/input_libvirt_vcenter_https.ml index d45d602..ac93329 100644 --- a/v2v/input_libvirt_vcenter_https.ml +++ b/v2v/input_libvirt_vcenter_https.ml @@ -166,7 +166,7 @@ and run_curl_get_lines curl_args close_out chan; let cmd = sprintf "curl -q --config %s" (quote config_file) in - let lines = external_command ~prog cmd in + let lines = external_command cmd in Unix.unlink config_file; lines diff --git a/v2v/input_ova.ml b/v2v/input_ova.ml index 3c13cd2..5f06652 100644 --- a/v2v/input_ova.ml +++ b/v2v/input_ova.ml @@ -146,7 +146,7 @@ object let disk = Str.matched_group 1 line in let expected = Str.matched_group 2 line in let cmd = sprintf "sha1sum %s" (quote (exploded // disk)) in - let out = external_command ~prog cmd in + let out = external_command cmd in match out with | [] -> error (f_"no output from sha1sum command, see previous errors") diff --git a/v2v/kvmuid.ml b/v2v/kvmuid.ml index a5b4195..645af1c 100644 --- a/v2v/kvmuid.ml +++ b/v2v/kvmuid.ml @@ -21,6 +21,7 @@ open Unix open Printf +open Common_utils open Common_gettext.Gettext open Utils diff --git a/v2v/output_rhev.ml b/v2v/output_rhev.ml index 150a7bd..911705e 100644 --- a/v2v/output_rhev.ml +++ b/v2v/output_rhev.ml @@ -188,15 +188,15 @@ object ) in (* Create unique UUIDs for everything *) - vm_uuid <- uuidgen ~prog (); + vm_uuid <- uuidgen (); (* Generate random image and volume UUIDs for each target. *) image_uuids <- List.map ( - fun _ -> uuidgen ~prog () + fun _ -> uuidgen () ) targets; vol_uuids <- List.map ( - fun _ -> uuidgen ~prog () + fun _ -> uuidgen () ) targets; (* We need to create the target image director(ies) so there's a place diff --git a/v2v/utils.ml b/v2v/utils.ml index ad92392..43052bd 100644 --- a/v2v/utils.ml +++ b/v2v/utils.ml @@ -25,11 +25,6 @@ open Common_utils open Types -let prog = Filename.basename Sys.executable_name -let error ?exit_code fs = error ~prog ?exit_code fs -let warning fs = warning ~prog fs -let info fs = info ~prog fs - let quote = Filename.quote (* Quote XML <element attr='...'> content. Note you must use single diff --git a/v2v/v2v.ml b/v2v/v2v.ml index bee626c..2d39ec6 100644 --- a/v2v/v2v.ml +++ b/v2v/v2v.ml @@ -815,10 +815,10 @@ and actual_target_size target *) and du filename let cmd = sprintf "du --block-size=1 %s | awk '{print $1}'" (quote filename) in - let lines = external_command ~prog cmd in + let lines = external_command cmd in (* Ignore errors because we want to avoid failures after copying. *) match lines with | line::_ -> (try Some (Int64.of_string line) with _ -> None) | [] -> None -let () = run_main_and_handle_errors ~prog main +let () = run_main_and_handle_errors main diff --git a/v2v/v2v_unit_tests.ml b/v2v/v2v_unit_tests.ml index 5c3b63a..5cfb99a 100644 --- a/v2v/v2v_unit_tests.ml +++ b/v2v/v2v_unit_tests.ml @@ -21,8 +21,6 @@ open OUnit2 open Types -let prog = "v2v_unit_tests" - external identity : 'a -> 'a = "%identity" let test_get_ostype ctx -- 2.3.1
Richard W.M. Jones
2015-May-15 10:40 UTC
[Libguestfs] [PATCH v2 3/4] ocaml tools: Use global variables to store trace (-x) and verbose (-v) flags.
Don't pass these flags to dozens of functions. --- builder/builder.ml | 47 +++++++++-------- builder/cache.ml | 4 +- builder/cache.mli | 2 +- builder/cmdline.ml | 13 ++--- builder/downloader.ml | 14 +++-- builder/downloader.mli | 2 +- builder/get_kernel.ml | 6 +-- builder/get_kernel.mli | 2 +- builder/index_parser.ml | 4 +- builder/index_parser.mli | 2 +- builder/sigchecker.ml | 32 ++++++------ builder/sigchecker.mli | 2 +- builder/sources.ml | 18 +++---- builder/sources.mli | 2 +- customize/customize_main.ml | 16 +++--- customize/customize_run.ml | 10 ++-- customize/customize_run.mli | 2 +- customize/perl_edit.ml | 5 +- customize/perl_edit.mli | 2 +- mllib/common_utils.ml | 12 +++++ mllib/common_utils.mli | 6 +++ resize/resize.ml | 52 +++++++++---------- sparsify/cmdline.ml | 12 ++--- sparsify/copying.ml | 16 +++--- sparsify/in_place.ml | 6 +-- sparsify/sparsify.ml | 7 ++- sysprep/main.ml | 22 ++++---- sysprep/sysprep_operation.ml | 10 ++-- sysprep/sysprep_operation.mli | 8 +-- sysprep/sysprep_operation_abrt_data.ml | 2 +- sysprep/sysprep_operation_bash_history.ml | 2 +- sysprep/sysprep_operation_blkid_tab.ml | 2 +- sysprep/sysprep_operation_ca_certificates.ml | 2 +- sysprep/sysprep_operation_crash_data.ml | 2 +- sysprep/sysprep_operation_cron_spool.ml | 2 +- sysprep/sysprep_operation_customize.ml | 4 +- sysprep/sysprep_operation_dhcp_client_state.ml | 2 +- sysprep/sysprep_operation_dhcp_server_state.ml | 2 +- sysprep/sysprep_operation_dovecot_data.ml | 2 +- sysprep/sysprep_operation_firewall_rules.ml | 2 +- sysprep/sysprep_operation_flag_reconfiguration.ml | 2 +- sysprep/sysprep_operation_fs_uuids.ml | 2 +- sysprep/sysprep_operation_kerberos_data.ml | 2 +- sysprep/sysprep_operation_logfiles.ml | 2 +- sysprep/sysprep_operation_lvm_uuids.ml | 2 +- sysprep/sysprep_operation_machine_id.ml | 2 +- sysprep/sysprep_operation_mail_spool.ml | 2 +- sysprep/sysprep_operation_net_hostname.ml | 2 +- sysprep/sysprep_operation_net_hwaddr.ml | 2 +- sysprep/sysprep_operation_pacct_log.ml | 2 +- sysprep/sysprep_operation_package_manager_cache.ml | 2 +- sysprep/sysprep_operation_pam_data.ml | 2 +- sysprep/sysprep_operation_puppet_data_log.ml | 2 +- .../sysprep_operation_rh_subscription_manager.ml | 2 +- sysprep/sysprep_operation_rhn_systemid.ml | 2 +- sysprep/sysprep_operation_rpm_db.ml | 2 +- sysprep/sysprep_operation_samba_db_log.ml | 2 +- sysprep/sysprep_operation_script.ml | 2 +- sysprep/sysprep_operation_smolt_uuid.ml | 2 +- sysprep/sysprep_operation_ssh_hostkeys.ml | 2 +- sysprep/sysprep_operation_ssh_userdir.ml | 2 +- sysprep/sysprep_operation_sssd_db_log.ml | 2 +- sysprep/sysprep_operation_tmp_files.ml | 2 +- sysprep/sysprep_operation_udev_persistent_net.ml | 2 +- sysprep/sysprep_operation_user_account.ml | 4 +- sysprep/sysprep_operation_utmp.ml | 2 +- sysprep/sysprep_operation_yum_uuid.ml | 2 +- v2v/OVF.ml | 6 +-- v2v/OVF.mli | 4 +- v2v/cmdline.ml | 34 ++++++------ v2v/convert_linux.ml | 32 ++++++------ v2v/convert_windows.ml | 5 +- v2v/input_disk.ml | 4 +- v2v/input_disk.mli | 4 +- v2v/input_libvirt.ml | 12 ++--- v2v/input_libvirt.mli | 2 +- v2v/input_libvirt_other.ml | 13 ++--- v2v/input_libvirt_other.mli | 4 +- v2v/input_libvirt_vcenter_https.ml | 24 ++++----- v2v/input_libvirt_vcenter_https.mli | 2 +- v2v/input_libvirt_xen_ssh.ml | 10 ++-- v2v/input_libvirt_xen_ssh.mli | 2 +- v2v/input_libvirtxml.ml | 10 ++-- v2v/input_libvirtxml.mli | 6 +-- v2v/input_ova.ml | 14 ++--- v2v/input_ova.mli | 2 +- v2v/linux.ml | 26 +++++----- v2v/linux.mli | 14 ++--- v2v/modules_list.ml | 2 +- v2v/modules_list.mli | 2 +- v2v/output_glance.ml | 8 +-- v2v/output_glance.mli | 4 +- v2v/output_libvirt.ml | 8 +-- v2v/output_libvirt.mli | 4 +- v2v/output_local.ml | 4 +- v2v/output_local.mli | 4 +- v2v/output_null.ml | 6 +-- v2v/output_null.mli | 4 +- v2v/output_qemu.ml | 4 +- v2v/output_qemu.mli | 4 +- v2v/output_rhev.ml | 28 +++++----- v2v/output_rhev.mli | 6 +-- v2v/output_vdsm.ml | 14 ++--- v2v/output_vdsm.mli | 4 +- v2v/types.ml | 4 +- v2v/types.mli | 4 +- v2v/v2v.ml | 60 +++++++++++----------- 107 files changed, 405 insertions(+), 415 deletions(-) diff --git a/builder/builder.ml b/builder/builder.ml index 7e18065..260281c 100644 --- a/builder/builder.ml +++ b/builder/builder.ml @@ -73,15 +73,14 @@ let main () let mode, arg, arch, attach, cache, check_signature, curl, delete_on_failure, format, gpg, list_format, memsize, - network, ops, output, quiet, size, smp, sources, sync, - trace, verbose + network, ops, output, quiet, size, smp, sources, sync parse_cmdline () in (* Timestamped messages in ordinary, non-debug non-quiet mode. *) let msg fs = make_message_function ~quiet fs in (* If debugging, echo the command line arguments and the sources. *) - if verbose then ( + if verbose () then ( printf "command line:"; List.iter (printf " %s") (Array.to_list Sys.argv); print_newline (); @@ -95,7 +94,7 @@ let main () let mode match mode with | `Get_kernel -> (* --get-kernel is really a different program ... *) - Get_kernel.get_kernel ~trace ~verbose ?format ?output arg; + Get_kernel.get_kernel ?format ?output arg; exit 0 | `Delete_cache -> (* --delete-cache *) @@ -119,7 +118,7 @@ let main () if Sys.command cmd <> 0 then ( if check_signature then error (f_"gpg is not installed (or does not work)\nYou should install gpg, or use --gpg option, or use --no-check-signature.") - else if verbose then + else if verbose () then warning (f_"gpg program is not available") ); @@ -138,7 +137,7 @@ let main () match cache with | None -> None | Some dir -> - try Some (Cache.create ~verbose ~directory:dir) + try Some (Cache.create ~directory:dir) with exn -> warning (f_"cache %s: %s") dir (Printexc.to_string exn); warning (f_"disabling the cache"); @@ -146,8 +145,8 @@ let main () in (* Download the sources. *) - let downloader = Downloader.create ~verbose ~curl ~cache in - let repos = Sources.read_sources ~verbose in + let downloader = Downloader.create ~curl ~cache in + let repos = Sources.read_sources () in let sources = List.map ( fun (source, fingerprint) -> { @@ -162,9 +161,9 @@ let main () List.map ( fun source -> let sigchecker - Sigchecker.create ~verbose ~gpg ~check_signature + Sigchecker.create ~gpg ~check_signature ~gpgkey:source.Sources.gpgkey in - Index_parser.get_index ~verbose ~downloader ~sigchecker source + Index_parser.get_index ~downloader ~sigchecker source ) sources ) in let index = remove_duplicates index in @@ -467,7 +466,7 @@ let main () in (* Print out the plan. *) - if verbose then ( + if verbose () then ( let print_tags tags (try let v = List.assoc `Filename tags in printf " +filename=%s" v @@ -523,14 +522,14 @@ let main () let ofile = List.assoc `Filename otags in msg (f_"Copying"); let cmd = sprintf "cp %s %s" (quote ifile) (quote ofile) in - if verbose then printf "%s\n%!" cmd; + if verbose () then printf "%s\n%!" cmd; if Sys.command cmd <> 0 then exit 1 | itags, `Rename, otags -> let ifile = List.assoc `Filename itags in let ofile = List.assoc `Filename otags in let cmd = sprintf "mv %s %s" (quote ifile) (quote ofile) in - if verbose then printf "%s\n%!" cmd; + if verbose () then printf "%s\n%!" cmd; if Sys.command cmd <> 0 then exit 1 | itags, `Pxzcat, otags -> @@ -553,12 +552,12 @@ let main () let preallocation = if oformat = "qcow2" then Some "metadata" else None in let () let g = new G.guestfs () in - if trace then g#set_trace true; - if verbose then g#set_verbose true; + if trace () then g#set_trace true; + if verbose () then g#set_verbose true; g#disk_create ?preallocation ofile oformat osize in let cmd sprintf "virt-resize%s%s%s --output-format %s%s%s %s %s" - (if verbose then " --verbose" else " --quiet") + (if verbose () then " --verbose" else " --quiet") (if is_block_device ofile then " --no-sparse" else "") (match iformat with | None -> "" @@ -571,7 +570,7 @@ let main () | None -> "" | Some lvexpand -> sprintf " --lv-expand %s" (quote lvexpand)) (quote ifile) (quote ofile) in - if verbose then printf "%s\n%!" cmd; + if verbose () then printf "%s\n%!" cmd; if Sys.command cmd <> 0 then exit 1 | itags, `Disk_resize, otags -> @@ -581,8 +580,8 @@ let main () msg (f_"Resizing container (but not filesystems) to expand the disk to %s") (human_size osize); let cmd = sprintf "qemu-img resize %s %Ld%s" - (quote ofile) osize (if verbose then "" else " >/dev/null") in - if verbose then printf "%s\n%!" cmd; + (quote ofile) osize (if verbose () then "" else " >/dev/null") in + if verbose () then printf "%s\n%!" cmd; if Sys.command cmd <> 0 then exit 1 | itags, `Convert, otags -> @@ -598,8 +597,8 @@ let main () | None -> "" | Some iformat -> sprintf " -f %s" (quote iformat)) (quote ifile) (quote oformat) (quote ofile) - (if verbose then "" else " >/dev/null 2>&1") in - if verbose then printf "%s\n%!" cmd; + (if verbose () then "" else " >/dev/null 2>&1") in + if verbose () then printf "%s\n%!" cmd; if Sys.command cmd <> 0 then exit 1 ) plan; @@ -607,8 +606,8 @@ let main () msg (f_"Opening the new disk"); let g let g = new G.guestfs () in - if trace then g#set_trace true; - if verbose then g#set_verbose true; + if trace () then g#set_trace true; + if verbose () then g#set_verbose true; (match memsize with None -> () | Some memsize -> g#set_memsize memsize); (match smp with None -> () | Some smp -> g#set_smp smp); @@ -651,7 +650,7 @@ let main () error (f_"no guest operating systems or multiboot OS found in this disk image\nThis is a failure of the source repository. Use -v for more information.") in - Customize_run.run ~verbose ~quiet g root ops; + Customize_run.run ~quiet g root ops; (* Collect some stats about the final output file. * Notes: diff --git a/builder/cache.ml b/builder/cache.ml index 86ac41b..e73bcfd 100644 --- a/builder/cache.ml +++ b/builder/cache.ml @@ -29,15 +29,13 @@ let clean_cachedir dir ignore (Sys.command cmd); type t = { - verbose : bool; directory : string; } -let create ~verbose ~directory +let create ~directory if not (is_directory directory) then mkdir_p directory 0o755; { - verbose = verbose; directory = directory; } diff --git a/builder/cache.mli b/builder/cache.mli index 1ff02a9..7edc670 100644 --- a/builder/cache.mli +++ b/builder/cache.mli @@ -24,7 +24,7 @@ val clean_cachedir : string -> unit type t (** The abstract data type. *) -val create : verbose:bool -> directory:string -> t +val create : directory:string -> t (** Create the abstract type. *) val cache_of_name : t -> string -> string -> int -> string diff --git a/builder/cmdline.ml b/builder/cmdline.ml index 61a5cb8..ed68e91 100644 --- a/builder/cmdline.ml +++ b/builder/cmdline.ml @@ -94,8 +94,6 @@ let parse_cmdline () let add_source arg = sources := arg :: !sources in let sync = ref true in - let trace = ref false in - let verbose = ref false in let argspec = [ "--arch", Arg.Set_string arch, "arch" ^ " " ^ s_"Set the output architecture"; @@ -147,13 +145,13 @@ let parse_cmdline () "--smp", Arg.Int set_smp, "vcpus" ^ " " ^ s_"Set number of vCPUs"; "--source", Arg.String add_source, "URL" ^ " " ^ s_"Set source URL"; "--no-sync", Arg.Clear sync, " " ^ s_"Do not fsync output file on exit"; - "-v", Arg.Set verbose, " " ^ s_"Enable debugging messages"; - "--verbose", Arg.Set verbose, " " ^ s_"Enable debugging messages"; + "-v", Arg.Unit set_verbose, " " ^ s_"Enable debugging messages"; + "--verbose", Arg.Unit set_verbose, " " ^ s_"Enable debugging messages"; "-V", Arg.Unit print_version_and_exit, " " ^ s_"Display version and exit"; "--version", Arg.Unit print_version_and_exit, " " ^ s_"Display version and exit"; - "-x", Arg.Set trace, " " ^ s_"Enable tracing of libguestfs calls"; + "-x", Arg.Unit set_trace, " " ^ s_"Enable tracing of libguestfs calls"; ] in let customize_argspec, get_customize_ops = Customize_cmdline.argspec () in let customize_argspec @@ -211,8 +209,6 @@ read the man page virt-builder(1). let smp = !smp in let sources = List.rev !sources in let sync = !sync in - let trace = !trace in - let verbose = !verbose in (* No arguments and machine-readable mode? Print some facts. *) if args = [] && machine_readable then ( @@ -336,5 +332,4 @@ read the man page virt-builder(1). mode, arg, arch, attach, cache, check_signature, curl, delete_on_failure, format, gpg, list_format, memsize, - network, ops, output, quiet, size, smp, sources, sync, - trace, verbose + network, ops, output, quiet, size, smp, sources, sync diff --git a/builder/downloader.ml b/builder/downloader.ml index 0c91cbb..30ca212 100644 --- a/builder/downloader.ml +++ b/builder/downloader.ml @@ -28,7 +28,6 @@ type uri = string type filename = string type t = { - verbose : bool; curl : string; cache : Cache.t option; (* cache for templates *) } @@ -38,8 +37,7 @@ type proxy_mode | SystemProxy | ForcedProxy of string -let create ~verbose ~curl ~cache = { - verbose = verbose; +let create ~curl ~cache = { curl = curl; cache = cache; } @@ -88,7 +86,7 @@ and download_to t ?(progress_bar = false) ~proxy uri filename | "file" -> let path = parseduri.URI.path in let cmd = sprintf "cp%s %s %s" - (if t.verbose then " -v" else "") + (if verbose () then " -v" else "") (quote path) (quote filename_new) in let r = Sys.command cmd in if r <> 0 then @@ -99,9 +97,9 @@ and download_to t ?(progress_bar = false) ~proxy uri filename let cmd = sprintf "%s%s%s -g -o /dev/null -I -w '%%{http_code}' %s" outenv t.curl - (if t.verbose then "" else " -s -S") + (if verbose () then "" else " -s -S") (quote uri) in - if t.verbose then printf "%s\n%!" cmd; + if verbose () then printf "%s\n%!" cmd; let lines = external_command cmd in if List.length lines < 1 then error (f_"unexpected output from curl command, enable debug and look at previous messages"); @@ -119,9 +117,9 @@ and download_to t ?(progress_bar = false) ~proxy uri filename let cmd = sprintf "%s%s%s -g -o %s %s" outenv t.curl - (if t.verbose then "" else if progress_bar then " -#" else " -s -S") + (if verbose () then "" else if progress_bar then " -#" else " -s -S") (quote filename_new) (quote uri) in - if t.verbose then printf "%s\n%!" cmd; + if verbose () then printf "%s\n%!" cmd; let r = Sys.command cmd in if r <> 0 then error (f_"curl (download) command failed downloading '%s'") uri; diff --git a/builder/downloader.mli b/builder/downloader.mli index 837c879..5e3cdaa 100644 --- a/builder/downloader.mli +++ b/builder/downloader.mli @@ -32,7 +32,7 @@ type proxy_mode *) | ForcedProxy of string (* The proxy is forced to the specified URL. *) -val create : verbose:bool -> curl:string -> cache:Cache.t option -> t +val create : curl:string -> cache:Cache.t option -> t (** Create the abstract type. *) val download : t -> ?template:(string*string*int) -> ?progress_bar:bool -> ?proxy:proxy_mode -> uri -> (filename * bool) diff --git a/builder/get_kernel.ml b/builder/get_kernel.ml index 9ac37b9..5cea647 100644 --- a/builder/get_kernel.ml +++ b/builder/get_kernel.ml @@ -28,10 +28,10 @@ open Printf (* Originally: * http://rwmj.wordpress.com/2013/09/13/get-kernel-and-initramfs-from-a-disk-image/ *) -let rec get_kernel ~trace ~verbose ?format ?output disk +let rec get_kernel ?format ?output disk let g = new G.guestfs () in - if trace then g#set_trace true; - if verbose then g#set_verbose true; + if trace () then g#set_trace true; + if verbose () then g#set_verbose true; g#add_drive_opts ?format ~readonly:true disk; g#launch (); diff --git a/builder/get_kernel.mli b/builder/get_kernel.mli index 20f9ddd..5f47ca1 100644 --- a/builder/get_kernel.mli +++ b/builder/get_kernel.mli @@ -16,4 +16,4 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. *) -val get_kernel : trace:bool -> verbose:bool -> ?format:string -> ?output:string -> string -> unit +val get_kernel : ?format:string -> ?output:string -> string -> unit diff --git a/builder/index_parser.ml b/builder/index_parser.ml index d39bb3a..aff0b00 100644 --- a/builder/index_parser.ml +++ b/builder/index_parser.ml @@ -111,7 +111,7 @@ let print_entry chan (name, { printable_name = printable_name; ); if hidden then fp "hidden=true\n" -let get_index ~verbose ~downloader ~sigchecker +let get_index ~downloader ~sigchecker { Sources.uri = uri; proxy = proxy } let corrupt_file () error (f_"The index file downloaded from '%s' is corrupt.\nYou need to ask the supplier of this file to fix it and upload a fixed version.") uri @@ -278,7 +278,7 @@ let get_index ~verbose ~downloader ~sigchecker n, entry ) sections in - if verbose then ( + if verbose () then ( printf "index file (%s) after parsing (C parser):\n" uri; List.iter (print_entry Pervasives.stdout) entries ); diff --git a/builder/index_parser.mli b/builder/index_parser.mli index 4687346..2e6ba77 100644 --- a/builder/index_parser.mli +++ b/builder/index_parser.mli @@ -38,4 +38,4 @@ and entry = { proxy : Downloader.proxy_mode; } -val get_index : verbose:bool -> downloader:Downloader.t -> sigchecker:Sigchecker.t -> Sources.source -> index +val get_index : downloader:Downloader.t -> sigchecker:Sigchecker.t -> Sources.source -> index diff --git a/builder/sigchecker.ml b/builder/sigchecker.ml index 29f271b..a8cc704 100644 --- a/builder/sigchecker.ml +++ b/builder/sigchecker.ml @@ -25,7 +25,6 @@ open Printf open Unix type t = { - verbose : bool; gpg : string; fingerprint : string; check_signature : bool; @@ -33,13 +32,13 @@ type t = { } (* Import the specified key file. *) -let import_keyfile ~gpg ~gpghome ~verbose ?(trust = true) keyfile +let import_keyfile ~gpg ~gpghome ?(trust = true) keyfile let status_file = Filename.temp_file "vbstat" ".txt" in unlink_on_exit status_file; let cmd = sprintf "%s --homedir %s --status-file %s --import %s%s" gpg gpghome (quote status_file) (quote keyfile) - (if verbose then "" else " >/dev/null 2>&1") in - if verbose then printf "%s\n%!" cmd; + (if verbose () then "" else " >/dev/null 2>&1") in + if verbose () then printf "%s\n%!" cmd; let r = Sys.command cmd in if r <> 0 then error (f_"could not import public key\nUse the '-v' option and look for earlier error messages."); @@ -58,15 +57,15 @@ let import_keyfile ~gpg ~gpghome ~verbose ?(trust = true) keyfile if trust then ( let cmd = sprintf "%s --homedir %s --trusted-key %s --list-keys%s" gpg gpghome (quote !key_id) - (if verbose then "" else " >/dev/null 2>&1") in - if verbose then printf "%s\n%!" cmd; + (if verbose () then "" else " >/dev/null 2>&1") in + if verbose () then printf "%s\n%!" cmd; let r = Sys.command cmd in if r <> 0 then error (f_"GPG failure: could not trust the imported key\nUse the '-v' option and look for earlier error messages."); ); !fingerprint -let rec create ~verbose ~gpg ~gpgkey ~check_signature +let rec create ~gpg ~gpgkey ~check_signature (* Create a temporary directory for gnupg. *) let tmpdir = Mkdtemp.temp_dir "vb.gpghome." "" in rmdir_on_exit tmpdir; @@ -81,8 +80,8 @@ let rec create ~verbose ~gpg ~gpgkey ~check_signature * cannot. *) let cmd = sprintf "%s --homedir %s --list-keys%s" - gpg tmpdir (if verbose then "" else " >/dev/null 2>&1") in - if verbose then printf "%s\n%!" cmd; + gpg tmpdir (if verbose () then "" else " >/dev/null 2>&1") in + if verbose () then printf "%s\n%!" cmd; let r = Sys.command cmd in if r <> 0 then error (f_"GPG failure: could not run GPG the first time\nUse the '-v' option and look for earlier error messages."); @@ -90,23 +89,22 @@ let rec create ~verbose ~gpg ~gpgkey ~check_signature | No_Key -> assert false | KeyFile kf -> - import_keyfile gpg tmpdir verbose kf + import_keyfile gpg tmpdir kf | Fingerprint fp -> let filename = Filename.temp_file "vbpubkey" ".asc" in unlink_on_exit filename; let cmd = sprintf "%s --yes --armor --output %s --export %s%s" gpg (quote filename) (quote fp) - (if verbose then "" else " >/dev/null 2>&1") in - if verbose then printf "%s\n%!" cmd; + (if verbose () then "" else " >/dev/null 2>&1") in + if verbose () then printf "%s\n%!" cmd; let r = Sys.command cmd in if r <> 0 then error (f_"could not export public key\nUse the '-v' option and look for earlier error messages."); - ignore (import_keyfile gpg tmpdir verbose filename); + ignore (import_keyfile gpg tmpdir filename); fp ) else "" in { - verbose = verbose; gpg = gpg; fingerprint = fingerprint; check_signature = check_signature; @@ -159,9 +157,9 @@ and do_verify t args let cmd sprintf "%s --homedir %s --verify%s --status-file %s %s" t.gpg t.gpghome - (if t.verbose then "" else " --batch -q --logger-file /dev/null") + (if verbose () then "" else " --batch -q --logger-file /dev/null") (quote status_file) args in - if t.verbose then printf "%s\n%!" cmd; + if verbose () then printf "%s\n%!" cmd; let r = Sys.command cmd in if r <> 0 then error (f_"GPG failure: could not verify digital signature of file\nTry:\n - Use the '-v' option and look for earlier error messages.\n - Delete the cache: virt-builder --delete-cache\n - Check no one has tampered with the website or your network!"); @@ -190,7 +188,7 @@ let verify_checksum t (SHA512 csum) filename unlink_on_exit csum_file; let cmd = sprintf "sha512sum %s | awk '{print $1}' > %s" (quote filename) (quote csum_file) in - if t.verbose then printf "%s\n%!" cmd; + if verbose () then printf "%s\n%!" cmd; let r = Sys.command cmd in if r <> 0 then error (f_"could not run sha512sum command to verify checksum"); diff --git a/builder/sigchecker.mli b/builder/sigchecker.mli index 4eb7a88..b670957 100644 --- a/builder/sigchecker.mli +++ b/builder/sigchecker.mli @@ -18,7 +18,7 @@ type t -val create : verbose:bool -> gpg:string -> gpgkey:Utils.gpgkey_type -> check_signature:bool -> t +val create : gpg:string -> gpgkey:Utils.gpgkey_type -> check_signature:bool -> t val verify : t -> string -> unit (** Verify the file is signed (if check_signature is true). *) diff --git a/builder/sources.ml b/builder/sources.ml index cec4a04..b774762 100644 --- a/builder/sources.ml +++ b/builder/sources.ml @@ -31,8 +31,8 @@ type source = { module StringSet = Set.Make (String) -let parse_conf ~verbose file - if verbose then ( +let parse_conf file + if verbose () then ( printf (f_"%s: trying to read %s\n") prog file; ); let sections = Ini_reader.read_ini ~error_suffix:"[ignored]" file in @@ -51,7 +51,7 @@ let parse_conf ~verbose file try Some (URI.parse_uri (List.assoc ("gpgkey", None) fields)) with | Not_found -> None | Invalid_argument "URI.parse_uri" as ex -> - if verbose then ( + if verbose () then ( printf (f_"%s: '%s' has invalid gpgkey URI\n") prog n; ); raise ex in @@ -61,7 +61,7 @@ let parse_conf ~verbose file (match uri.URI.protocol with | "file" -> Utils.KeyFile uri.URI.path | _ -> - if verbose then ( + if verbose () then ( printf (f_"%s: '%s' has non-local gpgkey URI\n") prog n; ); Utils.No_Key @@ -83,7 +83,7 @@ let parse_conf ~verbose file with Not_found | Invalid_argument _ -> acc ) sections [] in - if verbose then ( + if verbose () then ( printf (f_"%s: ... read %d sources\n") prog (List.length sources); ); @@ -101,7 +101,7 @@ let merge_sources current_sources new_sources let filter_filenames filename Filename.check_suffix filename ".conf" -let read_sources ~verbose +let read_sources () let dirs = Paths.xdg_config_dirs () in let dirs match Paths.xdg_config_home () with @@ -118,7 +118,7 @@ let read_sources ~verbose List.fold_left ( fun acc file -> try ( - let s = merge_sources acc (parse_conf ~verbose (dir // file)) in + let s = merge_sources acc (parse_conf (dir // file)) in (* Add the current file name to the set only if its parsing * was successful. *) @@ -126,12 +126,12 @@ let read_sources ~verbose s ) with | Unix_error (code, fname, _) -> - if verbose then ( + if verbose () then ( printf (f_"%s: file error: %s: %s\n") prog fname (error_message code) ); acc | Invalid_argument msg -> - if verbose then ( + if verbose () then ( printf (f_"%s: internal error: invalid argument: %s\n") prog msg ); acc diff --git a/builder/sources.mli b/builder/sources.mli index 52c5908..2a94c54 100644 --- a/builder/sources.mli +++ b/builder/sources.mli @@ -23,4 +23,4 @@ type source = { proxy : Downloader.proxy_mode; } -val read_sources : verbose:bool -> source list +val read_sources : unit -> source list diff --git a/customize/customize_main.ml b/customize/customize_main.ml index fe3e7b8..9d44ce4 100644 --- a/customize/customize_main.ml +++ b/customize/customize_main.ml @@ -56,8 +56,6 @@ let main () let quiet = ref false in let smp = ref None in let set_smp arg = smp := Some arg in - let trace = ref false in - let verbose = ref false in let add_file arg let uri @@ -98,13 +96,13 @@ let main () "-q", Arg.Set quiet, " " ^ s_"Don't print log messages"; "--quiet", Arg.Set quiet, " " ^ s_"Don't print log messages"; "--smp", Arg.Int set_smp, "vcpus" ^ " " ^ s_"Set number of vCPUs"; - "-v", Arg.Set verbose, " " ^ s_"Enable debugging messages"; - "--verbose", Arg.Set verbose, " " ^ s_"Enable debugging messages"; + "-v", Arg.Unit set_verbose, " " ^ s_"Enable debugging messages"; + "--verbose", Arg.Unit set_verbose, " " ^ s_"Enable debugging messages"; "-V", Arg.Unit print_version_and_exit, " " ^ s_"Display version and exit"; "--version", Arg.Unit print_version_and_exit, " " ^ s_"Display version and exit"; - "-x", Arg.Set trace, " " ^ s_"Enable tracing of libguestfs calls"; + "-x", Arg.Unit set_trace, " " ^ s_"Enable tracing of libguestfs calls"; ] in let customize_argspec, get_customize_ops Customize_cmdline.argspec () in @@ -183,8 +181,6 @@ read the man page virt-customize(1). let network = !network in let quiet = !quiet in let smp = !smp in - let trace = !trace in - let verbose = !verbose in let ops = get_customize_ops () in @@ -195,8 +191,8 @@ read the man page virt-customize(1). (* Connect to libguestfs. *) let g let g = new G.guestfs () in - if trace then g#set_trace true; - if verbose then g#set_verbose true; + if trace () then g#set_trace true; + if verbose () then g#set_verbose true; (match memsize with None -> () | Some memsize -> g#set_memsize memsize); (match smp with None -> () | Some smp -> g#set_smp smp); @@ -239,7 +235,7 @@ read the man page virt-customize(1). ) mps; (* Do the customization. *) - Customize_run.run ~verbose ~quiet g root ops; + Customize_run.run ~quiet g root ops; g#umount_all (); ) roots; diff --git a/customize/customize_run.ml b/customize/customize_run.ml index e52b978..625f43b 100644 --- a/customize/customize_run.ml +++ b/customize/customize_run.ml @@ -26,7 +26,7 @@ open Customize_utils open Customize_cmdline open Password -let run ~verbose ~quiet (g : Guestfs.guestfs) root (ops : ops) +let run ~quiet (g : Guestfs.guestfs) root (ops : ops) (* Timestamped messages in ordinary, non-debug non-quiet mode. *) let msg fs = make_message_function ~quiet fs in @@ -87,7 +87,7 @@ exec >>%s 2>&1 %s " (quote logfile) env_vars cmd in - if verbose then printf "running command:\n%s\n%!" cmd; + if verbose () then printf "running command:\n%s\n%!" cmd; try ignore (g#sh cmd) with Guestfs.Error msg -> @@ -203,7 +203,7 @@ exec >>%s 2>&1 if not (g#is_file path) then error (f_"%s is not a regular file in the guest") path; - Perl_edit.edit_file ~verbose g#ocaml_handle path expr + Perl_edit.edit_file g#ocaml_handle path expr | `FirstbootCommand cmd -> msg (f_"Installing firstboot command: %s") cmd; @@ -355,7 +355,7 @@ exec >>%s 2>&1 * If debugging, dump out the log file. * Then if asked, scrub the log file. *) - if verbose then debug_logfile (); + if verbose () then debug_logfile (); if ops.flags.scrub_logfile && g#exists logfile then ( msg (f_"Scrubbing the log file"); @@ -372,7 +372,7 @@ exec >>%s 2>&1 *) (try ignore (g#debug "sh" [| "fuser"; "-k"; "/sysroot" |]) with exn -> - if verbose then + if verbose () then printf (f_"%s: %s (ignored)\n") prog (Printexc.to_string exn) ); g#ping_daemon () (* tiny delay after kill *) diff --git a/customize/customize_run.mli b/customize/customize_run.mli index 6289813..c330f9f 100644 --- a/customize/customize_run.mli +++ b/customize/customize_run.mli @@ -23,4 +23,4 @@ * filesystems must be mounted up. *) -val run : verbose:bool -> quiet:bool -> Guestfs.guestfs -> string -> Customize_cmdline.ops -> unit +val run : quiet:bool -> Guestfs.guestfs -> string -> Customize_cmdline.ops -> unit diff --git a/customize/perl_edit.ml b/customize/perl_edit.ml index 96c4062..f1f06cc 100644 --- a/customize/perl_edit.ml +++ b/customize/perl_edit.ml @@ -16,5 +16,8 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. *) -external edit_file : verbose:bool -> Guestfs.t -> string -> string -> unit +open Common_utils + +external c_edit_file : verbose:bool -> Guestfs.t -> string -> string -> unit = "virt_customize_edit_file_perl" +let edit_file g file expr = c_edit_file (verbose ()) g file expr diff --git a/customize/perl_edit.mli b/customize/perl_edit.mli index dbb76c9..0a2d2c9 100644 --- a/customize/perl_edit.mli +++ b/customize/perl_edit.mli @@ -16,4 +16,4 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. *) -val edit_file : verbose:bool -> Guestfs.t -> string -> string -> unit +val edit_file : Guestfs.t -> string -> string -> unit diff --git a/mllib/common_utils.ml b/mllib/common_utils.ml index ed647e5..cdbe674 100644 --- a/mllib/common_utils.ml +++ b/mllib/common_utils.ml @@ -278,8 +278,20 @@ let make_message_function ~quiet fs in ksprintf p fs + +(* Program name. *) let prog = Filename.basename Sys.executable_name +(* Stores the trace (-x) and verbose (-v) flags in a global variable. *) +let trace = ref false +let set_trace () = trace := true +let trace () = !trace + +let verbose = ref false +let set_verbose () = verbose := true +let verbose () = !verbose + +(* Error messages etc. *) let error ?(exit_code = 1) fs let display str let chan = stderr in diff --git a/mllib/common_utils.mli b/mllib/common_utils.mli index 957ae81..dcc9d42 100644 --- a/mllib/common_utils.mli +++ b/mllib/common_utils.mli @@ -69,6 +69,12 @@ val make_message_function : quiet:bool -> ('a, unit, string, unit) format4 -> 'a val prog : string (** The program name (derived from {!Sys.executable_name}). *) +val set_trace : unit -> unit +val trace : unit -> bool +val set_verbose : unit -> unit +val verbose : unit -> bool +(** Stores the trace ([-x]) and verbose ([-v]) flags in a global variable. *) + val error : ?exit_code:int -> ('a, unit, string, 'b) format4 -> 'a (** Standard error function. *) diff --git a/resize/resize.ml b/resize/resize.ml index ef0f601..b3185a3 100644 --- a/resize/resize.ml +++ b/resize/resize.ml @@ -154,7 +154,7 @@ let main () debug_gc, deletes, dryrun, expand, expand_content, extra_partition, format, ignores, lv_expands, machine_readable, ntfsresize_force, output_format, - quiet, resizes, resizes_force, shrink, sparse, trace, verbose + quiet, resizes, resizes_force, shrink, sparse let add xs s = xs := s :: !xs in @@ -188,16 +188,14 @@ let main () else shrink := s in let sparse = ref true in - let trace = ref false in - let verbose = ref false in let ditto = " -\"-" in let argspec = Arg.align [ "--align-first", Arg.Set_string align_first, s_"never|always|auto" ^ " " ^ s_"Align first partition (default: auto)"; "--alignment", Arg.Set_int alignment, s_"sectors" ^ " " ^ s_"Set partition alignment (default: 128 sectors)"; "--no-copy-boot-loader", Arg.Clear copy_boot_loader, " " ^ s_"Don't copy boot loader"; - "-d", Arg.Set verbose, " " ^ s_"Enable debugging messages"; - "--debug", Arg.Set verbose, ditto; + "-d", Arg.Unit set_verbose, " " ^ s_"Enable debugging messages"; + "--debug", Arg.Unit set_verbose, ditto; "--debug-gc",Arg.Set debug_gc, " " ^ s_"Debug GC and memory allocations"; "--delete", Arg.String (add deletes), s_"part" ^ " " ^ s_"Delete partition"; "--expand", Arg.String set_expand, s_"part" ^ " " ^ s_"Expand partition"; @@ -223,12 +221,12 @@ let main () "--resize-force", Arg.String (add resizes_force), s_"part=size" ^ " " ^ s_"Forcefully resize partition"; "--shrink", Arg.String set_shrink, s_"part" ^ " " ^ s_"Shrink partition"; "--no-sparse", Arg.Clear sparse, " " ^ s_"Turn off sparse copying"; - "-v", Arg.Set verbose, " " ^ s_"Enable debugging messages"; - "--verbose", Arg.Set verbose, ditto; + "-v", Arg.Unit set_verbose, " " ^ s_"Enable debugging messages"; + "--verbose", Arg.Unit set_verbose, ditto; "-V", Arg.Unit print_version_and_exit, " " ^ s_"Display version and exit"; "--version", Arg.Unit print_version_and_exit, ditto; - "-x", Arg.Set trace, " " ^ s_"Enable tracing of libguestfs calls"; + "-x", Arg.Unit set_trace, " " ^ s_"Enable tracing of libguestfs calls"; ] in long_options := argspec; let disks = ref [] in @@ -243,8 +241,7 @@ read the man page virt-resize(1). prog in Arg.parse argspec anon_fun usage_msg; - let verbose = !verbose in - if verbose then ( + if verbose () then ( printf "command line:"; List.iter (printf " %s") (Array.to_list Sys.argv); print_newline () @@ -270,7 +267,6 @@ read the man page virt-resize(1). let resizes_force = List.rev !resizes_force in let shrink = match !shrink with "" -> None | str -> Some str in let sparse = !sparse in - let trace = !trace in if alignment < 1 then error (f_"alignment cannot be < 1"); @@ -333,7 +329,7 @@ read the man page virt-resize(1). debug_gc, deletes, dryrun, expand, expand_content, extra_partition, format, ignores, lv_expands, machine_readable, ntfsresize_force, output_format, - quiet, resizes, resizes_force, shrink, sparse, trace, verbose in + quiet, resizes, resizes_force, shrink, sparse in (* Timestamped messages. *) let msg fs = make_message_function ~quiet fs in @@ -346,8 +342,8 @@ read the man page virt-resize(1). (* Add in and out disks to the handle and launch. *) let connect_both_disks () let g = new G.guestfs () in - if trace then g#set_trace true; - if verbose then g#set_verbose true; + if trace () then g#set_trace true; + if verbose () then g#set_verbose true; let _, { URI.path = path; protocol = protocol; server = server; username = username; password = password } = infile in @@ -386,7 +382,7 @@ read the man page virt-resize(1). let sectsize = Int64.of_int (g#blockdev_getss "/dev/sdb") in let insize = g#blockdev_getsize64 "/dev/sda" in let outsize = g#blockdev_getsize64 "/dev/sdb" in - if verbose then ( + if verbose () then ( printf "%s size %Ld bytes\n" (fst infile) insize; printf "%s size %Ld bytes\n" outfile outsize ); @@ -416,7 +412,7 @@ read the man page virt-resize(1). (* Get the source partition type. *) let parttype, parttype_string let pt = g#part_get_parttype "/dev/sda" in - if verbose then printf "partition table type: %s\n%!" pt; + if verbose () then printf "partition table type: %s\n%!" pt; match pt with | "msdos" -> MBR, "msdos" @@ -543,7 +539,7 @@ read the man page virt-resize(1). let partitions = find_partitions () in - if verbose then ( + if verbose () then ( printf "%d partitions found\n" (List.length partitions); List.iter (debug_partition ~sectsize) partitions ); @@ -564,7 +560,7 @@ read the man page virt-resize(1). { lv_name = name; lv_type = typ; lv_operation = LVOpNone } ) lvs in - if verbose then ( + if verbose () then ( printf "%d logical volumes found\n" (List.length lvs); List.iter debug_logvol lvs ); @@ -584,7 +580,7 @@ read the man page virt-resize(1). | ContentFS (("btrfs"), _) when !btrfs_available -> true | ContentFS (("xfs"), _) when !xfs_available -> true | ContentFS (fs, _) -> - if verbose then + if verbose () then warning (f_"unknown/unavailable method for expanding filesystem %s") fs; false @@ -776,7 +772,7 @@ read the man page virt-resize(1). let surplus = outsize -^ (required +^ overhead) in - if verbose then + if verbose () then printf "calculate surplus: outsize=%Ld required=%Ld overhead=%Ld surplus=%Ld\n%!" outsize required overhead surplus; @@ -790,7 +786,7 @@ read the man page virt-resize(1). if expand <> None || shrink <> None then ( let surplus = calculate_surplus () in - if verbose then + if verbose () then printf "surplus before --expand or --shrink: %Ld\n" surplus; (match expand with @@ -1031,7 +1027,7 @@ read the man page virt-resize(1). | `Always, _ | `Auto, true -> true in - if verbose then + if verbose () then printf "align_first_partition_and_fix_bootloader = %b\n%!" align_first_partition_and_fix_bootloader; @@ -1055,7 +1051,7 @@ read the man page virt-resize(1). let end_ = start +^ size in let next = roundup64 end_ alignment in - if verbose then + if verbose () then printf "target partition %d: ignore or copy: start=%Ld end=%Ld\n%!" partnum start (end_ -^ 1L); @@ -1070,7 +1066,7 @@ read the man page virt-resize(1). let next = start +^ size in let next = roundup64 next alignment in - if verbose then + if verbose () then printf "target partition %d: resize: newsize=%Ld start=%Ld end=%Ld\n%!" partnum newsize start (next -^ 1L); @@ -1119,7 +1115,7 @@ read the man page virt-resize(1). calculate_target_partitions 1 start ~create_surplus:true partitions in - if verbose then ( + if verbose () then ( printf "After calculate target partitions:\n"; List.iter (debug_partition ~sectsize) partitions ); @@ -1232,7 +1228,7 @@ read the man page virt-resize(1). else ( msg (f_"Fixing first NTFS partition boot record"); - if verbose then ( + if verbose () then ( let old_hidden = int_of_le32 (g#pread_device target 4 0x1c_L) in printf "old hidden sectors value: 0x%Lx\n%!" old_hidden ); @@ -1274,8 +1270,8 @@ read the man page virt-resize(1). g#close (); let g = new G.guestfs () in - if trace then g#set_trace true; - if verbose then g#set_verbose true; + if trace () then g#set_trace true; + if verbose () then g#set_verbose true; (* The output disk is being created, so use cache=unsafe here. *) g#add_drive ?format:output_format ~readonly:false ~cachemode:"unsafe" outfile; diff --git a/sparsify/cmdline.ml b/sparsify/cmdline.ml index 290359c..8e62748 100644 --- a/sparsify/cmdline.ml +++ b/sparsify/cmdline.ml @@ -54,8 +54,6 @@ let parse_cmdline () let option = ref "" in let quiet = ref false in let tmp = ref "" in - let verbose = ref false in - let trace = ref false in let zeroes = ref [] in let ditto = " -\"-" in @@ -75,12 +73,12 @@ let parse_cmdline () "-q", Arg.Set quiet, " " ^ s_"Quiet output"; "--quiet", Arg.Set quiet, ditto; "--tmp", Arg.Set_string tmp, s_"block|dir|prebuilt:file" ^ " " ^ s_"Set temporary block device, directory or prebuilt file"; - "-v", Arg.Set verbose, " " ^ s_"Enable debugging messages"; - "--verbose", Arg.Set verbose, ditto; + "-v", Arg.Unit set_verbose, " " ^ s_"Enable debugging messages"; + "--verbose", Arg.Unit set_verbose, ditto; "-V", Arg.Unit print_version_and_exit, " " ^ s_"Display version and exit"; "--version", Arg.Unit print_version_and_exit, ditto; - "-x", Arg.Set trace, " " ^ s_"Enable tracing of libguestfs calls"; + "-x", Arg.Unit set_trace, " " ^ s_"Enable tracing of libguestfs calls"; "--zero", Arg.String (add zeroes), s_"fs" ^ " " ^ s_"Zero filesystem"; ] in long_options := argspec; @@ -112,8 +110,6 @@ read the man page virt-sparsify(1). let option = match !option with "" -> None | str -> Some str in let quiet = !quiet in let tmp = match !tmp with "" -> None | str -> Some str in - let verbose = !verbose in - let trace = !trace in let zeroes = List.rev !zeroes in (* No arguments and machine-readable mode? Print out some facts @@ -195,4 +191,4 @@ read the man page virt-sparsify(1). Mode_in_place in indisk, debug_gc, format, ignores, machine_readable, - quiet, verbose, trace, zeroes, mode + quiet, zeroes, mode diff --git a/sparsify/copying.ml b/sparsify/copying.ml index 9f788b9..9f20fa3 100644 --- a/sparsify/copying.ml +++ b/sparsify/copying.ml @@ -39,7 +39,7 @@ type tmp_place let run indisk outdisk check_tmpdir compress convert format ignores machine_readable option tmp_param - quiet verbose trace zeroes + quiet zeroes (* Once we have got past argument parsing and start to create * temporary files (including the potentially massive overlay file), we @@ -81,8 +81,8 @@ let run indisk outdisk check_tmpdir compress convert if not (Sys.file_exists file) then error (f_"--tmp prebuilt:file: %s: file does not exist") file; let g = new G.guestfs () in - if trace then g#set_trace true; - if verbose then g#set_verbose true; + if trace () then g#set_trace true; + if verbose () then g#set_verbose true; if g#disk_format file <> "qcow2" then error (f_"--tmp prebuilt:file: %s: file format is not qcow2") file; if not (g#disk_has_backing_file file) then @@ -158,8 +158,8 @@ You can ignore this warning or change it to a hard failure using the (* Create 'tmp' with the indisk as the backing file. *) let create tmp let g = new G.guestfs () in - if trace then g#set_trace true; - if verbose then g#set_verbose true; + if trace () then g#set_trace true; + if verbose () then g#set_verbose true; g#disk_create ~backingfile:indisk ?backingformat:format ~compat:"1.1" tmp "qcow2" Int64.minus_one @@ -186,8 +186,8 @@ You can ignore this warning or change it to a hard failure using the (* Connect to libguestfs. *) let g let g = new G.guestfs () in - if trace then g#set_trace true; - if verbose then g#set_verbose true; + if trace () then g#set_trace true; + if verbose () then g#set_verbose true; (* Note that the temporary overlay disk is always qcow2 format. *) g#add_drive ~format:"qcow2" ~readonly:false ~cachemode:"unsafe" overlaydisk; @@ -346,7 +346,7 @@ You can ignore this warning or change it to a hard failure using the | None -> "" | Some option -> " -o " ^ quote option) (quote overlaydisk) (quote (qemu_input_filename outdisk)) in - if verbose then + if verbose () then printf "%s\n%!" cmd; if Sys.command cmd <> 0 then error (f_"external command failed: %s") cmd; diff --git a/sparsify/in_place.ml b/sparsify/in_place.ml index 268784c..9cd2982 100644 --- a/sparsify/in_place.ml +++ b/sparsify/in_place.ml @@ -29,11 +29,11 @@ open Cmdline module G = Guestfs -let rec run disk format ignores machine_readable quiet verbose trace zeroes +let rec run disk format ignores machine_readable quiet zeroes (* Connect to libguestfs. *) let g = new G.guestfs () in - if trace then g#set_trace true; - if verbose then g#set_verbose true; + if trace () then g#set_trace true; + if verbose () then g#set_verbose true; try perform g disk format ignores machine_readable quiet zeroes diff --git a/sparsify/sparsify.ml b/sparsify/sparsify.ml index a16af84..9362f36 100644 --- a/sparsify/sparsify.ml +++ b/sparsify/sparsify.ml @@ -31,16 +31,15 @@ let () = Random.self_init () let rec main () let indisk, debug_gc, format, ignores, machine_readable, - quiet, verbose, trace, zeroes, mode + quiet, zeroes, mode parse_cmdline () in (match mode with | Mode_copying (outdisk, check_tmpdir, compress, convert, option, tmp) -> Copying.run indisk outdisk check_tmpdir compress convert - format ignores machine_readable option tmp quiet verbose trace zeroes + format ignores machine_readable option tmp quiet zeroes | Mode_in_place -> - In_place.run indisk format ignores machine_readable - quiet verbose trace zeroes + In_place.run indisk format ignores machine_readable quiet zeroes ); if debug_gc then diff --git a/sysprep/main.ml b/sysprep/main.ml index 65dc29e..5a6af14 100644 --- a/sysprep/main.ml +++ b/sysprep/main.ml @@ -34,7 +34,7 @@ let () = Sysprep_operation.bake () let () = Random.self_init () let main () - let debug_gc, operations, g, quiet, mount_opts, verbose + let debug_gc, operations, g, quiet, mount_opts let debug_gc = ref false in let domain = ref None in let dryrun = ref false in @@ -43,8 +43,6 @@ let main () let libvirturi = ref "" in let mount_opts = ref "" in let operations = ref None in - let trace = ref false in - let verbose = ref false in let format = ref "auto" in let format_consumed = ref true in @@ -144,13 +142,13 @@ let main () "--operations", Arg.String set_operations, " " ^ s_"Enable/disable specific operations"; "-q", Arg.Set quiet, " " ^ s_"Don't print log messages"; "--quiet", Arg.Set quiet, " " ^ s_"Don't print log messages"; - "-v", Arg.Set verbose, " " ^ s_"Enable debugging messages"; - "--verbose", Arg.Set verbose, " " ^ s_"Enable debugging messages"; + "-v", Arg.Unit set_verbose, " " ^ s_"Enable debugging messages"; + "--verbose", Arg.Unit set_verbose, " " ^ s_"Enable debugging messages"; "-V", Arg.Unit print_version_and_exit, " " ^ s_"Display version and exit"; "--version", Arg.Unit print_version_and_exit, " " ^ s_"Display version and exit"; - "-x", Arg.Set trace, " " ^ s_"Enable tracing of libguestfs calls"; + "-x", Arg.Unit set_trace, " " ^ s_"Enable tracing of libguestfs calls"; ] in let args = basic_args @ Sysprep_operation.extra_args () in let args @@ -214,8 +212,6 @@ read the man page virt-sysprep(1). let dryrun = !dryrun in let operations = !operations in let quiet = !quiet in - let trace = !trace in - let verbose = !verbose in (* At this point we know which operations are enabled. So call the * not_enabled_check_args method of all *disabled* operations, so @@ -236,12 +232,12 @@ read the man page virt-sysprep(1). (* Connect to libguestfs. *) let g = new G.guestfs () in - if trace then g#set_trace true; - if verbose then g#set_verbose true; + if trace () then g#set_trace true; + if verbose () then g#set_verbose true; add g dryrun; g#launch (); - debug_gc, operations, g, quiet, mount_opts, verbose in + debug_gc, operations, g, quiet, mount_opts in (* Inspection. *) (match Array.to_list (g#inspect_os ()) with @@ -269,7 +265,7 @@ read the man page virt-sysprep(1). (* Perform the filesystem operations. *) Sysprep_operation.perform_operations_on_filesystems - ?operations ~verbose ~quiet g root side_effects; + ?operations ~quiet g root side_effects; (* Unmount everything in this guest. *) g#umount_all (); @@ -278,7 +274,7 @@ read the man page virt-sysprep(1). (* Perform the block device operations. *) Sysprep_operation.perform_operations_on_devices - ?operations ~verbose ~quiet g root side_effects; + ?operations ~quiet g root side_effects; ) roots ); diff --git a/sysprep/sysprep_operation.ml b/sysprep/sysprep_operation.ml index 4c4269a..88eaee5 100644 --- a/sysprep/sysprep_operation.ml +++ b/sysprep/sysprep_operation.ml @@ -34,7 +34,7 @@ end class device_side_effects = object end -type 'a callback = verbose:bool -> quiet:bool -> Guestfs.guestfs -> string -> 'a -> unit +type 'a callback = quiet:bool -> Guestfs.guestfs -> string -> 'a -> unit type operation = { order : int; @@ -269,7 +269,7 @@ let compare_operations { order = o1; name = n1 } { order = o2; name = n2 } let i = compare o1 o2 in if i <> 0 then i else compare n1 n2 -let perform_operations_on_filesystems ?operations ~verbose ~quiet g root +let perform_operations_on_filesystems ?operations ~quiet g root side_effects assert !baked; @@ -288,11 +288,11 @@ let perform_operations_on_filesystems ?operations ~verbose ~quiet g root function | { name = name; perform_on_filesystems = Some fn } -> msg "Performing %S ..." name; - fn ~verbose ~quiet g root side_effects + fn ~quiet g root side_effects | { perform_on_filesystems = None } -> () ) ops -let perform_operations_on_devices ?operations ~verbose ~quiet g root +let perform_operations_on_devices ?operations ~quiet g root side_effects assert !baked; @@ -311,6 +311,6 @@ let perform_operations_on_devices ?operations ~verbose ~quiet g root function | { name = name; perform_on_devices = Some fn } -> msg "Performing %S ..." name; - fn ~verbose ~quiet g root side_effects + fn ~quiet g root side_effects | { perform_on_devices = None } -> () ) ops diff --git a/sysprep/sysprep_operation.mli b/sysprep/sysprep_operation.mli index aab70bc..4bdfcb9 100644 --- a/sysprep/sysprep_operation.mli +++ b/sysprep/sysprep_operation.mli @@ -30,8 +30,8 @@ end class device_side_effects : object end (** There are currently no device side-effects. For future use. *) -type 'side_effects callback = verbose:bool -> quiet:bool -> Guestfs.guestfs -> string -> 'side_effects -> unit -(** [callback ~verbose ~quiet g root side_effects] is called to do work. +type 'side_effects callback = quiet:bool -> Guestfs.guestfs -> string -> 'side_effects -> unit +(** [callback ~quiet g root side_effects] is called to do work. If the operation has side effects such as creating files, it should indicate that by calling the [side_effects] object. *) @@ -178,8 +178,8 @@ val not_enabled_check_args : ?operations:set -> unit -> unit (** Call [not_enabled_check_args] on all operations in the set which are {i not} enabled. *) -val perform_operations_on_filesystems : ?operations:set -> verbose:bool -> quiet:bool -> Guestfs.guestfs -> string -> filesystem_side_effects -> unit +val perform_operations_on_filesystems : ?operations:set -> quiet:bool -> Guestfs.guestfs -> string -> filesystem_side_effects -> unit (** Perform all operations, or the subset listed in the [operations] set. *) -val perform_operations_on_devices : ?operations:set -> verbose:bool -> quiet:bool -> Guestfs.guestfs -> string -> device_side_effects -> unit +val perform_operations_on_devices : ?operations:set -> quiet:bool -> Guestfs.guestfs -> string -> device_side_effects -> unit (** Perform all operations, or the subset listed in the [operations] set. *) diff --git a/sysprep/sysprep_operation_abrt_data.ml b/sysprep/sysprep_operation_abrt_data.ml index fb16ea2..df80a79 100644 --- a/sysprep/sysprep_operation_abrt_data.ml +++ b/sysprep/sysprep_operation_abrt_data.ml @@ -21,7 +21,7 @@ open Common_gettext.Gettext module G = Guestfs -let abrt_data_perform ~verbose ~quiet g root side_effects +let abrt_data_perform ~quiet g root side_effects let typ = g#inspect_get_type root in if typ <> "windows" then ( let paths = g#glob_expand "/var/spool/abrt/*" in diff --git a/sysprep/sysprep_operation_bash_history.ml b/sysprep/sysprep_operation_bash_history.ml index 01f9962..e88dc5c 100644 --- a/sysprep/sysprep_operation_bash_history.ml +++ b/sysprep/sysprep_operation_bash_history.ml @@ -21,7 +21,7 @@ open Common_gettext.Gettext module G = Guestfs -let bash_history_perform ~verbose ~quiet g root side_effects +let bash_history_perform ~quiet g root side_effects let typ = g#inspect_get_type root in if typ <> "windows" then ( let files = g#glob_expand "/home/*/.bash_history" in diff --git a/sysprep/sysprep_operation_blkid_tab.ml b/sysprep/sysprep_operation_blkid_tab.ml index 54d066f..7599612 100644 --- a/sysprep/sysprep_operation_blkid_tab.ml +++ b/sysprep/sysprep_operation_blkid_tab.ml @@ -21,7 +21,7 @@ open Common_gettext.Gettext module G = Guestfs -let blkid_tab_perform ~verbose ~quiet g root side_effects +let blkid_tab_perform ~quiet g root side_effects let typ = g#inspect_get_type root in if typ <> "windows" then ( let files = [ "/var/run/blkid.tab"; diff --git a/sysprep/sysprep_operation_ca_certificates.ml b/sysprep/sysprep_operation_ca_certificates.ml index aa2e115..7077e43 100644 --- a/sysprep/sysprep_operation_ca_certificates.ml +++ b/sysprep/sysprep_operation_ca_certificates.ml @@ -22,7 +22,7 @@ open Common_gettext.Gettext module StringSet = Set.Make (String) module G = Guestfs -let ca_certificates_perform ~verbose ~quiet g root side_effects +let ca_certificates_perform ~quiet g root side_effects let typ = g#inspect_get_type root in if typ <> "windows" then ( let paths = [ "/etc/pki/CA/certs/*.crt"; diff --git a/sysprep/sysprep_operation_crash_data.ml b/sysprep/sysprep_operation_crash_data.ml index 370f695..8c41eb6 100644 --- a/sysprep/sysprep_operation_crash_data.ml +++ b/sysprep/sysprep_operation_crash_data.ml @@ -26,7 +26,7 @@ let globs = [ "/var/log/dump/*"; ] -let crash_data_perform ~verbose ~quiet g root side_effects +let crash_data_perform ~quiet g root side_effects let typ = g#inspect_get_type root in if typ = "linux" then ( List.iter (fun glob -> Array.iter g#rm_rf (g#glob_expand glob)) globs diff --git a/sysprep/sysprep_operation_cron_spool.ml b/sysprep/sysprep_operation_cron_spool.ml index 9a78e85..c6cf60e 100644 --- a/sysprep/sysprep_operation_cron_spool.ml +++ b/sysprep/sysprep_operation_cron_spool.ml @@ -21,7 +21,7 @@ open Common_gettext.Gettext module G = Guestfs -let cron_spool_perform ~verbose ~quiet (g : Guestfs.guestfs) root side_effects +let cron_spool_perform ~quiet (g : Guestfs.guestfs) root side_effects Array.iter g#rm_rf (g#glob_expand "/var/spool/cron/*"); Array.iter g#rm (g#glob_expand "/var/spool/atjobs/*"); Array.iter g#rm (g#glob_expand "/var/spool/atjobs/.SEQ"); diff --git a/sysprep/sysprep_operation_customize.ml b/sysprep/sysprep_operation_customize.ml index c602640..be90e4a 100644 --- a/sysprep/sysprep_operation_customize.ml +++ b/sysprep/sysprep_operation_customize.ml @@ -30,9 +30,9 @@ let customize_args, get_ops ) args in args, get_ops -let customize_perform ~verbose ~quiet g root side_effects +let customize_perform ~quiet g root side_effects let ops = get_ops () in - Customize_run.run ~verbose ~quiet g root ops; + Customize_run.run ~quiet g root ops; side_effects#created_file () (* XXX Did we? *) let op = { diff --git a/sysprep/sysprep_operation_dhcp_client_state.ml b/sysprep/sysprep_operation_dhcp_client_state.ml index 9bc320c..846a317 100644 --- a/sysprep/sysprep_operation_dhcp_client_state.ml +++ b/sysprep/sysprep_operation_dhcp_client_state.ml @@ -21,7 +21,7 @@ open Common_gettext.Gettext module G = Guestfs -let dhcp_client_state_perform ~verbose ~quiet g root side_effects +let dhcp_client_state_perform ~quiet g root side_effects let typ = g#inspect_get_type root in if typ = "linux" then ( List.iter ( diff --git a/sysprep/sysprep_operation_dhcp_server_state.ml b/sysprep/sysprep_operation_dhcp_server_state.ml index ea42b38..72775bd 100644 --- a/sysprep/sysprep_operation_dhcp_server_state.ml +++ b/sysprep/sysprep_operation_dhcp_server_state.ml @@ -21,7 +21,7 @@ open Common_gettext.Gettext module G = Guestfs -let dhcp_server_state_perform ~verbose ~quiet g root side_effects +let dhcp_server_state_perform ~quiet g root side_effects Array.iter g#rm_rf (g#glob_expand "/var/lib/dhcpd/*") let op = { diff --git a/sysprep/sysprep_operation_dovecot_data.ml b/sysprep/sysprep_operation_dovecot_data.ml index e000ab0..9820a7c 100644 --- a/sysprep/sysprep_operation_dovecot_data.ml +++ b/sysprep/sysprep_operation_dovecot_data.ml @@ -21,7 +21,7 @@ open Common_gettext.Gettext module G = Guestfs -let dovecot_data_perform ~verbose ~quiet g root side_effects +let dovecot_data_perform ~quiet g root side_effects let typ = g#inspect_get_type root in if typ <> "windows" then ( let files = g#glob_expand "/var/lib/dovecot/*" in diff --git a/sysprep/sysprep_operation_firewall_rules.ml b/sysprep/sysprep_operation_firewall_rules.ml index 22dd5e8..5c97648 100644 --- a/sysprep/sysprep_operation_firewall_rules.ml +++ b/sysprep/sysprep_operation_firewall_rules.ml @@ -21,7 +21,7 @@ open Common_gettext.Gettext module G = Guestfs -let firewall_rules_perform ~verbose ~quiet g root side_effects +let firewall_rules_perform ~quiet g root side_effects let typ = g#inspect_get_type root in if typ <> "windows" then ( let paths = [ "/etc/sysconfig/iptables"; diff --git a/sysprep/sysprep_operation_flag_reconfiguration.ml b/sysprep/sysprep_operation_flag_reconfiguration.ml index f56017e..20d5923 100644 --- a/sysprep/sysprep_operation_flag_reconfiguration.ml +++ b/sysprep/sysprep_operation_flag_reconfiguration.ml @@ -21,7 +21,7 @@ open Common_gettext.Gettext module G = Guestfs -let flag_reconfiguration ~verbose ~quiet g root side_effects +let flag_reconfiguration ~quiet g root side_effects let typ = g#inspect_get_type root in if typ <> "windows" then ( g#touch "/.unconfigured"; diff --git a/sysprep/sysprep_operation_fs_uuids.ml b/sysprep/sysprep_operation_fs_uuids.ml index 002bb4d..c5cbcfc 100644 --- a/sysprep/sysprep_operation_fs_uuids.ml +++ b/sysprep/sysprep_operation_fs_uuids.ml @@ -25,7 +25,7 @@ open Sysprep_operation module G = Guestfs -let rec fs_uuids_perform ~verbose ~quiet g root side_effects +let rec fs_uuids_perform ~quiet g root side_effects let fses = g#list_filesystems () in List.iter (function | _, "unknown" -> () diff --git a/sysprep/sysprep_operation_kerberos_data.ml b/sysprep/sysprep_operation_kerberos_data.ml index 063f967..c410331 100644 --- a/sysprep/sysprep_operation_kerberos_data.ml +++ b/sysprep/sysprep_operation_kerberos_data.ml @@ -22,7 +22,7 @@ open Common_gettext.Gettext module StringSet = Set.Make (String) module G = Guestfs -let kerberos_data_perform ~verbose ~quiet g root side_effects +let kerberos_data_perform ~quiet g root side_effects let typ = g#inspect_get_type root in if typ <> "windows" then ( let excepts = [ "/var/kerberos/krb5kdc/kadm5.acl"; diff --git a/sysprep/sysprep_operation_logfiles.ml b/sysprep/sysprep_operation_logfiles.ml index 7659a18..ba09cc5 100644 --- a/sysprep/sysprep_operation_logfiles.ml +++ b/sysprep/sysprep_operation_logfiles.ml @@ -132,7 +132,7 @@ let globs = List.sort compare [ ] let globs_as_pod = String.concat "\n" (List.map ((^) " ") globs) -let logfiles_perform ~verbose ~quiet g root side_effects +let logfiles_perform ~quiet g root side_effects let typ = g#inspect_get_type root in if typ = "linux" then ( List.iter (fun glob -> Array.iter g#rm_rf (g#glob_expand glob)) globs diff --git a/sysprep/sysprep_operation_lvm_uuids.ml b/sysprep/sysprep_operation_lvm_uuids.ml index 6771a22..32497b7 100644 --- a/sysprep/sysprep_operation_lvm_uuids.ml +++ b/sysprep/sysprep_operation_lvm_uuids.ml @@ -23,7 +23,7 @@ open Common_gettext.Gettext module G = Guestfs -let rec lvm_uuids_perform ~verbose ~quiet g root side_effects +let rec lvm_uuids_perform ~quiet g root side_effects let typ = g#inspect_get_type root in if typ = "linux" then ( let has_lvm2_feature diff --git a/sysprep/sysprep_operation_machine_id.ml b/sysprep/sysprep_operation_machine_id.ml index acf8757..0345da0 100644 --- a/sysprep/sysprep_operation_machine_id.ml +++ b/sysprep/sysprep_operation_machine_id.ml @@ -21,7 +21,7 @@ open Common_gettext.Gettext module G = Guestfs -let machine_id_perform ~verbose ~quiet g root side_effects +let machine_id_perform ~quiet g root side_effects let typ = g#inspect_get_type root in if typ <> "windows" then ( let path = "/etc/machine-id" in diff --git a/sysprep/sysprep_operation_mail_spool.ml b/sysprep/sysprep_operation_mail_spool.ml index 3b56184..691a0dc 100644 --- a/sysprep/sysprep_operation_mail_spool.ml +++ b/sysprep/sysprep_operation_mail_spool.ml @@ -21,7 +21,7 @@ open Common_gettext.Gettext module G = Guestfs -let mail_spool_perform ~verbose ~quiet g root side_effects +let mail_spool_perform ~quiet g root side_effects List.iter ( fun glob -> Array.iter g#rm_rf (g#glob_expand glob) ) [ diff --git a/sysprep/sysprep_operation_net_hostname.ml b/sysprep/sysprep_operation_net_hostname.ml index 5bf4b07..558b228 100644 --- a/sysprep/sysprep_operation_net_hostname.ml +++ b/sysprep/sysprep_operation_net_hostname.ml @@ -22,7 +22,7 @@ open Common_gettext.Gettext module G = Guestfs -let net_hostname_perform ~verbose ~quiet g root side_effects +let net_hostname_perform ~quiet g root side_effects let typ = g#inspect_get_type root in let distro = g#inspect_get_distro root in match typ, distro with diff --git a/sysprep/sysprep_operation_net_hwaddr.ml b/sysprep/sysprep_operation_net_hwaddr.ml index ea24997..fe30345 100644 --- a/sysprep/sysprep_operation_net_hwaddr.ml +++ b/sysprep/sysprep_operation_net_hwaddr.ml @@ -22,7 +22,7 @@ open Common_gettext.Gettext module G = Guestfs -let net_hwaddr_perform ~verbose ~quiet g root side_effects +let net_hwaddr_perform ~quiet g root side_effects let typ = g#inspect_get_type root in let distro = g#inspect_get_distro root in match typ, distro with diff --git a/sysprep/sysprep_operation_pacct_log.ml b/sysprep/sysprep_operation_pacct_log.ml index 0abd349..87bc8d0 100644 --- a/sysprep/sysprep_operation_pacct_log.ml +++ b/sysprep/sysprep_operation_pacct_log.ml @@ -21,7 +21,7 @@ open Common_gettext.Gettext module G = Guestfs -let pacct_log_perform ~verbose ~quiet g root side_effects +let pacct_log_perform ~quiet g root side_effects let typ = g#inspect_get_type root in let distro = g#inspect_get_distro root in match typ, distro with diff --git a/sysprep/sysprep_operation_package_manager_cache.ml b/sysprep/sysprep_operation_package_manager_cache.ml index bd6b2e5..ff549ed 100644 --- a/sysprep/sysprep_operation_package_manager_cache.ml +++ b/sysprep/sysprep_operation_package_manager_cache.ml @@ -22,7 +22,7 @@ open Common_utils module G = Guestfs -let package_manager_cache_perform ~verbose ~quiet g root side_effects +let package_manager_cache_perform ~quiet g root side_effects let packager = g#inspect_get_package_management root in let cache_dirs match packager with diff --git a/sysprep/sysprep_operation_pam_data.ml b/sysprep/sysprep_operation_pam_data.ml index 16b073a..93292b7 100644 --- a/sysprep/sysprep_operation_pam_data.ml +++ b/sysprep/sysprep_operation_pam_data.ml @@ -21,7 +21,7 @@ open Common_gettext.Gettext module G = Guestfs -let pam_data_perform ~verbose ~quiet g root side_effects +let pam_data_perform ~quiet g root side_effects let typ = g#inspect_get_type root in if typ <> "windows" then ( let paths = [ "/var/run/console/*"; diff --git a/sysprep/sysprep_operation_puppet_data_log.ml b/sysprep/sysprep_operation_puppet_data_log.ml index 6bc14f5..22bcf47 100644 --- a/sysprep/sysprep_operation_puppet_data_log.ml +++ b/sysprep/sysprep_operation_puppet_data_log.ml @@ -21,7 +21,7 @@ open Common_gettext.Gettext module G = Guestfs -let puppet_data_log_perform ~verbose ~quiet g root side_effects +let puppet_data_log_perform ~quiet g root side_effects let typ = g#inspect_get_type root in if typ <> "windows" then ( let paths = [ "/var/log/puppet/*"; diff --git a/sysprep/sysprep_operation_rh_subscription_manager.ml b/sysprep/sysprep_operation_rh_subscription_manager.ml index 3c1ca09..b1bb972 100644 --- a/sysprep/sysprep_operation_rh_subscription_manager.ml +++ b/sysprep/sysprep_operation_rh_subscription_manager.ml @@ -21,7 +21,7 @@ open Common_gettext.Gettext module G = Guestfs -let rh_subscription_manager_perform ~verbose ~quiet g root side_effects +let rh_subscription_manager_perform ~quiet g root side_effects let typ = g#inspect_get_type root in let distro = g#inspect_get_distro root in diff --git a/sysprep/sysprep_operation_rhn_systemid.ml b/sysprep/sysprep_operation_rhn_systemid.ml index 5f32537..e144998 100644 --- a/sysprep/sysprep_operation_rhn_systemid.ml +++ b/sysprep/sysprep_operation_rhn_systemid.ml @@ -21,7 +21,7 @@ open Common_gettext.Gettext module G = Guestfs -let rhn_systemid_perform ~verbose ~quiet g root side_effects +let rhn_systemid_perform ~quiet g root side_effects let typ = g#inspect_get_type root in let distro = g#inspect_get_distro root in diff --git a/sysprep/sysprep_operation_rpm_db.ml b/sysprep/sysprep_operation_rpm_db.ml index e15bf97..94bdc2d 100644 --- a/sysprep/sysprep_operation_rpm_db.ml +++ b/sysprep/sysprep_operation_rpm_db.ml @@ -22,7 +22,7 @@ open Common_gettext.Gettext module StringSet = Set.Make (String) module G = Guestfs -let rpm_db_perform ~verbose ~quiet g root side_effects +let rpm_db_perform ~quiet g root side_effects let pf = g#inspect_get_package_format root in if pf = "rpm" then ( let paths = g#glob_expand "/var/lib/rpm/__db.*" in diff --git a/sysprep/sysprep_operation_samba_db_log.ml b/sysprep/sysprep_operation_samba_db_log.ml index 6ad9068..c02b81e 100644 --- a/sysprep/sysprep_operation_samba_db_log.ml +++ b/sysprep/sysprep_operation_samba_db_log.ml @@ -21,7 +21,7 @@ open Common_gettext.Gettext module G = Guestfs -let samba_db_log_perform ~verbose ~quiet g root side_effects +let samba_db_log_perform ~quiet g root side_effects let typ = g#inspect_get_type root in if typ <> "windows" then ( let paths = [ "/var/log/samba/old/*"; diff --git a/sysprep/sysprep_operation_script.ml b/sysprep/sysprep_operation_script.ml index a8bbac5..459eace 100644 --- a/sysprep/sysprep_operation_script.ml +++ b/sysprep/sysprep_operation_script.ml @@ -35,7 +35,7 @@ let set_scriptdir dir let scripts = ref [] let add_script script = scripts := script :: !scripts -let rec script_perform ~verbose ~quiet (g : Guestfs.guestfs) root side_effects +let rec script_perform ~quiet (g : Guestfs.guestfs) root side_effects let scripts = List.rev !scripts in if scripts <> [] then ( (* Create a temporary directory? *) diff --git a/sysprep/sysprep_operation_smolt_uuid.ml b/sysprep/sysprep_operation_smolt_uuid.ml index 8096c4f..00d6ac3 100644 --- a/sysprep/sysprep_operation_smolt_uuid.ml +++ b/sysprep/sysprep_operation_smolt_uuid.ml @@ -21,7 +21,7 @@ open Common_gettext.Gettext module G = Guestfs -let smolt_uuid_perform ~verbose ~quiet g root side_effects +let smolt_uuid_perform ~quiet g root side_effects let typ = g#inspect_get_type root in if typ = "linux" then ( let files = [ "/etc/sysconfig/hw-uuid"; diff --git a/sysprep/sysprep_operation_ssh_hostkeys.ml b/sysprep/sysprep_operation_ssh_hostkeys.ml index 15a4fd6..7668236 100644 --- a/sysprep/sysprep_operation_ssh_hostkeys.ml +++ b/sysprep/sysprep_operation_ssh_hostkeys.ml @@ -21,7 +21,7 @@ open Common_gettext.Gettext module G = Guestfs -let ssh_hostkeys_perform ~verbose ~quiet g root side_effects +let ssh_hostkeys_perform ~quiet g root side_effects let typ = g#inspect_get_type root in if typ <> "windows" then ( let files = g#glob_expand "/etc/ssh/*_host_*" in diff --git a/sysprep/sysprep_operation_ssh_userdir.ml b/sysprep/sysprep_operation_ssh_userdir.ml index 60cf778..bec1d56 100644 --- a/sysprep/sysprep_operation_ssh_userdir.ml +++ b/sysprep/sysprep_operation_ssh_userdir.ml @@ -21,7 +21,7 @@ open Common_gettext.Gettext module G = Guestfs -let ssh_userdir_perform ~verbose ~quiet g root side_effects +let ssh_userdir_perform ~quiet g root side_effects let typ = g#inspect_get_type root in if typ <> "windows" then ( let dirs = g#glob_expand "/home/*/.ssh" in diff --git a/sysprep/sysprep_operation_sssd_db_log.ml b/sysprep/sysprep_operation_sssd_db_log.ml index 654e733..91a7765 100644 --- a/sysprep/sysprep_operation_sssd_db_log.ml +++ b/sysprep/sysprep_operation_sssd_db_log.ml @@ -21,7 +21,7 @@ open Common_gettext.Gettext module G = Guestfs -let sssd_db_log_perform ~verbose ~quiet g root side_effects +let sssd_db_log_perform ~quiet g root side_effects let typ = g#inspect_get_type root in if typ <> "windows" then ( let paths = [ "/var/log/sssd/*"; diff --git a/sysprep/sysprep_operation_tmp_files.ml b/sysprep/sysprep_operation_tmp_files.ml index 593acbf..3b9e58f 100644 --- a/sysprep/sysprep_operation_tmp_files.ml +++ b/sysprep/sysprep_operation_tmp_files.ml @@ -21,7 +21,7 @@ open Common_gettext.Gettext module G = Guestfs -let tmp_files_perform ~verbose ~quiet g root side_effects +let tmp_files_perform ~quiet g root side_effects let typ = g#inspect_get_type root in if typ <> "windows" then ( let paths = [ "/tmp"; diff --git a/sysprep/sysprep_operation_udev_persistent_net.ml b/sysprep/sysprep_operation_udev_persistent_net.ml index 9cf74c8..2ceeef5 100644 --- a/sysprep/sysprep_operation_udev_persistent_net.ml +++ b/sysprep/sysprep_operation_udev_persistent_net.ml @@ -21,7 +21,7 @@ open Common_gettext.Gettext module G = Guestfs -let udev_persistent_net_perform ~verbose ~quiet g root side_effects +let udev_persistent_net_perform ~quiet g root side_effects let typ = g#inspect_get_type root in if typ = "linux" then ( try g#rm "/etc/udev/rules.d/70-persistent-net.rules" diff --git a/sysprep/sysprep_operation_user_account.ml b/sysprep/sysprep_operation_user_account.ml index e53e5cc..0f676ec 100644 --- a/sysprep/sysprep_operation_user_account.ml +++ b/sysprep/sysprep_operation_user_account.ml @@ -53,7 +53,7 @@ let check_remove_user user else false -let user_account_perform ~verbose ~quiet g root side_effects +let user_account_perform ~quiet g root side_effects let typ = g#inspect_get_type root in let changed = ref false in if typ <> "windows" then ( @@ -78,7 +78,7 @@ let user_account_perform ~verbose ~quiet g root side_effects let home_dir try Some (g#aug_get (userpath ^ "/home")) with _ -> - if verbose then + if verbose () then warning (f_"Cannot get the home directory for %s") username; None in diff --git a/sysprep/sysprep_operation_utmp.ml b/sysprep/sysprep_operation_utmp.ml index b306b99..6c1ac41 100644 --- a/sysprep/sysprep_operation_utmp.ml +++ b/sysprep/sysprep_operation_utmp.ml @@ -21,7 +21,7 @@ open Common_gettext.Gettext module G = Guestfs -let utmp_perform ~verbose ~quiet g root side_effects +let utmp_perform ~quiet g root side_effects let typ = g#inspect_get_type root in if typ <> "windows" then ( try g#rm "/var/run/utmp" diff --git a/sysprep/sysprep_operation_yum_uuid.ml b/sysprep/sysprep_operation_yum_uuid.ml index 77f30fb..ed52929 100644 --- a/sysprep/sysprep_operation_yum_uuid.ml +++ b/sysprep/sysprep_operation_yum_uuid.ml @@ -21,7 +21,7 @@ open Common_gettext.Gettext module G = Guestfs -let yum_uuid_perform ~verbose ~quiet g root side_effects +let yum_uuid_perform ~quiet g root side_effects let packager = g#inspect_get_package_management root in if packager = "yum" then ( try g#rm "/var/lib/yum/uuid" with G.Error _ -> () diff --git a/v2v/OVF.ml b/v2v/OVF.ml index 7129cff..b342ccb 100644 --- a/v2v/OVF.ml +++ b/v2v/OVF.ml @@ -187,7 +187,7 @@ and get_ostype = function "Unassigned" (* Generate the .meta file associated with each volume. *) -let create_meta_files verbose output_alloc sd_uuid image_uuids targets +let create_meta_files output_alloc sd_uuid image_uuids targets (* Note: Upper case in the .meta, mixed case in the OVF. *) let output_alloc_for_rhev match output_alloc with @@ -230,7 +230,7 @@ let create_meta_files verbose output_alloc sd_uuid image_uuids targets ) (List.combine targets image_uuids) (* Create the OVF file. *) -let rec create_ovf verbose source targets guestcaps inspect +let rec create_ovf source targets guestcaps inspect output_alloc vmtype sd_uuid image_uuids vol_uuids vm_uuid assert (List.length targets = List.length vol_uuids); @@ -332,7 +332,7 @@ let rec create_ovf verbose source targets guestcaps inspect warning (f_"This guest required a password for connection to its display, but this is not supported by RHEV. Therefore the converted guest's display will not require a separate password to connect."); | _ -> ()); - if verbose then ( + if verbose () then ( eprintf "OVF:\n"; doc_to_chan Pervasives.stderr ovf ); diff --git a/v2v/OVF.mli b/v2v/OVF.mli index 0a354e7..c806276 100644 --- a/v2v/OVF.mli +++ b/v2v/OVF.mli @@ -18,7 +18,7 @@ (** Functions for dealing with OVF files. *) -val create_meta_files : bool -> Types.output_allocation -> string -> string list -> Types.target list -> string list +val create_meta_files : Types.output_allocation -> string -> string list -> Types.target list -> string list (** Create the .meta file associated with each target. Note this does not write them, since output_rhev has to do a @@ -26,7 +26,7 @@ val create_meta_files : bool -> Types.output_allocation -> string -> string list file is returned (one per target), and they must be written to [target_file ^ ".meta"]. *) -val create_ovf : bool -> Types.source -> Types.target list -> Types.guestcaps -> Types.inspect -> Types.output_allocation -> Types.vmtype option -> string -> string list -> string list -> string -> DOM.doc +val create_ovf : Types.source -> Types.target list -> Types.guestcaps -> Types.inspect -> Types.output_allocation -> Types.vmtype option -> string -> string list -> string list -> string -> DOM.doc (** Create the OVF file. *) (**/**) diff --git a/v2v/cmdline.ml b/v2v/cmdline.ml index 4f7ac8c..c0f6617 100644 --- a/v2v/cmdline.ml +++ b/v2v/cmdline.ml @@ -43,8 +43,6 @@ let parse_cmdline () let quiet = ref false in let vdsm_vm_uuid = ref "" in let vdsm_ovf_output = ref "." in - let verbose = ref false in - let trace = ref false in let vmtype = ref "" in let input_mode = ref `Not_set in @@ -177,13 +175,13 @@ let parse_cmdline () Arg.Set_string vdsm_vm_uuid, "uuid " ^ s_"Output VM UUID"; "--vdsm-ovf-output", Arg.Set_string vdsm_ovf_output, " " ^ s_"Output OVF file"; - "-v", Arg.Set verbose, " " ^ s_"Enable debugging messages"; - "--verbose", Arg.Set verbose, ditto; + "-v", Arg.Unit set_verbose, " " ^ s_"Enable debugging messages"; + "--verbose", Arg.Unit set_verbose, ditto; "-V", Arg.Unit print_version_and_exit, " " ^ s_"Display version and exit"; "--version", Arg.Unit print_version_and_exit, ditto; "--vmtype", Arg.Set_string vmtype, "server|desktop " ^ s_"Set vmtype (for RHEV)"; - "-x", Arg.Set trace, " " ^ s_"Enable tracing of libguestfs calls"; + "-x", Arg.Unit set_trace, " " ^ s_"Enable tracing of libguestfs calls"; ] in long_options := argspec; let args = ref [] in @@ -238,8 +236,6 @@ read the man page virt-v2v(1). let vdsm_vol_uuids = List.rev !vdsm_vol_uuids in let vdsm_vm_uuid = !vdsm_vm_uuid in let vdsm_ovf_output = !vdsm_ovf_output in - let verbose = !verbose in - let trace = !trace in let vmtype match !vmtype with | "server" -> Some Server @@ -278,7 +274,7 @@ read the man page virt-v2v(1). | [disk] -> disk | _ -> error (f_"expecting a disk image (filename) on the command line") in - Input_disk.input_disk verbose input_format disk + Input_disk.input_disk input_format disk | `Not_set | `Libvirt -> @@ -290,7 +286,7 @@ read the man page virt-v2v(1). | [guest] -> guest | _ -> error (f_"expecting a libvirt guest name on the command line") in - Input_libvirt.input_libvirt verbose password input_conn guest + Input_libvirt.input_libvirt password input_conn guest | `LibvirtXML -> (* -i libvirtxml: Expecting a filename (XML file). *) @@ -299,7 +295,7 @@ read the man page virt-v2v(1). | [filename] -> filename | _ -> error (f_"expecting a libvirt XML file name on the command line") in - Input_libvirtxml.input_libvirtxml verbose filename + Input_libvirtxml.input_libvirtxml filename | `OVA -> (* -i ova: Expecting an ova filename (tar file). *) @@ -308,7 +304,7 @@ read the man page virt-v2v(1). | [filename] -> filename | _ -> error (f_"expecting an OVA file name on the command line") in - Input_ova.input_ova verbose filename in + Input_ova.input_ova filename in (* Parse the output mode. *) let output @@ -324,7 +320,7 @@ read the man page virt-v2v(1). error (f_"--vmtype option cannot be used with '-o glance'"); if not do_copy then error (f_"--no-copy and '-o glance' cannot be used at the same time"); - Output_glance.output_glance verbose + Output_glance.output_glance () | `Not_set | `Libvirt -> @@ -336,7 +332,7 @@ read the man page virt-v2v(1). error (f_"--vmtype option cannot be used with '-o libvirt'"); if not do_copy then error (f_"--no-copy and '-o libvirt' cannot be used at the same time"); - Output_libvirt.output_libvirt verbose output_conn output_storage + Output_libvirt.output_libvirt output_conn output_storage | `Local -> if output_storage = "" then @@ -348,7 +344,7 @@ read the man page virt-v2v(1). error (f_"-o local: --qemu-boot option cannot be used in this output mode"); if vmtype <> None then error (f_"--vmtype option cannot be used with '-o local'"); - Output_local.output_local verbose output_storage + Output_local.output_local output_storage | `Null -> if output_conn <> None then @@ -359,20 +355,20 @@ read the man page virt-v2v(1). error (f_"-o null: --qemu-boot option cannot be used in this output mode"); if vmtype <> None then error (f_"--vmtype option cannot be used with '-o null'"); - Output_null.output_null verbose + Output_null.output_null () | `QEmu -> if not (is_directory output_storage) then error (f_"-os %s: output directory does not exist or is not a directory") output_storage; - Output_qemu.output_qemu verbose output_storage qemu_boot + Output_qemu.output_qemu output_storage qemu_boot | `RHEV -> if output_storage = "" then error (f_"-o rhev: output storage was not specified, use '-os'"); if qemu_boot then error (f_"-o rhev: --qemu-boot option cannot be used in this output mode"); - Output_rhev.output_rhev verbose output_storage vmtype output_alloc + Output_rhev.output_rhev output_storage vmtype output_alloc | `VDSM -> if output_storage = "" then @@ -387,10 +383,10 @@ read the man page virt-v2v(1). vm_uuid = vdsm_vm_uuid; ovf_output = vdsm_ovf_output; } in - Output_vdsm.output_vdsm verbose output_storage vdsm_params + Output_vdsm.output_vdsm output_storage vdsm_params vmtype output_alloc in input, output, debug_gc, debug_overlays, do_copy, network_map, no_trim, output_alloc, output_format, output_name, - print_source, quiet, root_choice, trace, verbose + print_source, quiet, root_choice diff --git a/v2v/convert_linux.ml b/v2v/convert_linux.ml index a24a7fa..7967c0f 100644 --- a/v2v/convert_linux.ml +++ b/v2v/convert_linux.ml @@ -59,7 +59,7 @@ let string_of_kernel_info ki ki.ki_supports_virtio ki.ki_is_xen_kernel ki.ki_is_debug (* The conversion function. *) -let rec convert ~verbose ~keep_serial_console (g : G.guestfs) inspect source +let rec convert ~keep_serial_console (g : G.guestfs) inspect source (*----------------------------------------------------------------------*) (* Inspect the guest first. We already did some basic inspection in * the common v2v.ml code, but that has to deal with generic guests @@ -82,7 +82,7 @@ let rec convert ~verbose ~keep_serial_console (g : G.guestfs) inspect source assert (inspect.i_package_format = "rpm"); (* We use Augeas for inspection and conversion, so initialize it early. *) - Linux.augeas_init verbose g; + Linux.augeas_init g; (* Clean RPM database. This must be done early to avoid RHBZ#1143866. *) let dbfiles = g#glob_expand "/var/lib/rpm/__db.00?" in @@ -132,7 +132,7 @@ let rec convert ~verbose ~keep_serial_console (g : G.guestfs) inspect source when name = "kernel" || string_prefix name "kernel-" -> (try (* For each kernel, list the files directly owned by the kernel. *) - let files = Linux.file_list_of_package verbose g inspect app in + let files = Linux.file_list_of_package g inspect app in if files = [] then ( warning (f_"package '%s' contains no files") name; @@ -254,7 +254,7 @@ let rec convert ~verbose ~keep_serial_console (g : G.guestfs) inspect source | _ -> None ) inspect.i_apps in - if verbose then ( + if verbose () then ( printf "installed kernel packages in this guest:\n"; List.iter ( fun kernel -> printf "\t%s\n" (string_of_kernel_info kernel) @@ -365,7 +365,7 @@ let rec convert ~verbose ~keep_serial_console (g : G.guestfs) inspect source with Not_found -> None ) vmlinuzes in - if verbose then ( + if verbose () then ( printf "grub kernels in this guest (first in list is default):\n"; List.iter ( fun kernel -> printf "\t%s\n" (string_of_kernel_info kernel) @@ -392,7 +392,7 @@ let rec convert ~verbose ~keep_serial_console (g : G.guestfs) inspect source List.exists (fun incl -> g#aug_get incl = grub_config) incls in if not incls_contains_conf then ( g#aug_set "/augeas/load/Grub/incl[last()+1]" grub_config; - Linux.augeas_reload verbose g; + Linux.augeas_reload g; ) | `Grub2 -> () (* Not necessary for grub2. *) @@ -414,7 +414,7 @@ let rec convert ~verbose ~keep_serial_console (g : G.guestfs) inspect source else None ) inspect.i_apps in - Linux.remove verbose g inspect xenmods; + Linux.remove g inspect xenmods; (* Undo related nastiness if kmod-xenpv was installed. *) if xenmods <> [] then ( @@ -429,7 +429,7 @@ let rec convert ~verbose ~keep_serial_console (g : G.guestfs) inspect source (* Check it's not owned by an installed application. *) let dirs = List.filter ( - fun d -> not (Linux.is_file_owned verbose g inspect d) + fun d -> not (Linux.is_file_owned g inspect d) ) dirs in (* Remove any unowned xenpv directories. *) @@ -487,7 +487,7 @@ let rec convert ~verbose ~keep_serial_console (g : G.guestfs) inspect source fun { G.app2_name = name } -> name = package_name ) inspect.i_apps in if has_guest_additions then - Linux.remove verbose g inspect [package_name]; + Linux.remove g inspect [package_name]; (* Guest Additions might have been installed from a tarball. The * above code won't detect this case. Look for the uninstall tool @@ -519,7 +519,7 @@ let rec convert ~verbose ~keep_serial_console (g : G.guestfs) inspect source ignore (g#command [| vboxuninstall |]); (* Reload Augeas to detect changes made by vbox tools uninst. *) - Linux.augeas_reload verbose g + Linux.augeas_reload g with G.Error msg -> warning (f_"VirtualBox Guest Additions were detected, but uninstallation failed. The error message was: %s (ignored)") @@ -598,7 +598,7 @@ let rec convert ~verbose ~keep_serial_console (g : G.guestfs) inspect source ); let remove = !remove in - Linux.remove verbose g inspect remove; + Linux.remove g inspect remove; (* VMware Tools may have been installed from a tarball, so the * above code won't remove it. Look for the uninstall tool and run @@ -610,7 +610,7 @@ let rec convert ~verbose ~keep_serial_console (g : G.guestfs) inspect source ignore (g#command [| uninstaller |]); (* Reload Augeas to detect changes made by vbox tools uninst. *) - Linux.augeas_reload verbose g + Linux.augeas_reload g with G.Error msg -> warning (f_"VMware tools was detected, but uninstallation failed. The error message was: %s (ignored)") @@ -625,7 +625,7 @@ let rec convert ~verbose ~keep_serial_console (g : G.guestfs) inspect source let pkgs = List.map (fun { G.app2_name = name } -> name) pkgs in if pkgs <> [] then ( - Linux.remove verbose g inspect pkgs; + Linux.remove g inspect pkgs; (* Installing these guest utilities automatically unconfigures * ttys in /etc/inittab if the system uses it. We need to put @@ -807,7 +807,7 @@ let rec convert ~verbose ~keep_serial_console (g : G.guestfs) inspect source (* Dracut. *) let args [ "/sbin/dracut" ] - @ (if verbose then [ "--verbose" ] else []) + @ (if verbose () then [ "--verbose" ] else []) @ [ "--add-drivers"; String.concat " " modules; initrd; mkinitrd_kv ] in ignore (g#command (Array.of_list args)) @@ -1244,7 +1244,7 @@ let rec convert ~verbose ~keep_serial_console (g : G.guestfs) inspect source "xvd" ^ drive_name i, block_prefix_after_conversion ^ drive_name i ) source.s_disks in - if verbose then ( + if verbose () then ( printf "block device map:\n"; List.iter ( fun (source_dev, target_dev) -> @@ -1349,7 +1349,7 @@ let rec convert ~verbose ~keep_serial_console (g : G.guestfs) inspect source if grub = `Grub2 then ignore (g#command [| "grub2-mkconfig"; "-o"; grub_config |]); - Linux.augeas_reload verbose g + Linux.augeas_reload g ); (* Delete blkid caches if they exist, since they will refer to the old diff --git a/v2v/convert_windows.ml b/v2v/convert_windows.ml index fd37fad..d373dba 100644 --- a/v2v/convert_windows.ml +++ b/v2v/convert_windows.ml @@ -41,7 +41,7 @@ module G = Guestfs type ('a, 'b) maybe = Either of 'a | Or of 'b -let convert ~verbose ~keep_serial_console (g : G.guestfs) inspect source +let convert ~keep_serial_console (g : G.guestfs) inspect source (* Get the data directory. *) let virt_tools_data_dir try Sys.getenv "VIRT_TOOLS_DATA_DIR" @@ -74,6 +74,7 @@ let convert ~verbose ~keep_serial_console (g : G.guestfs) inspect source let rec with_hive name ~write f let filename = sprintf "%s/system32/config/%s" systemroot name in let filename = g#case_sensitive_path filename in + let verbose = verbose () in g#hivex_open ~write ~verbose (* ~debug:verbose *) filename; let r try @@ -191,7 +192,7 @@ echo uninstalling Xen PV driver let value = int_of_le32 (g#hivex_value_value valueh) in sprintf "ControlSet%03Ld" value in - if verbose then printf "current ControlSet is %s\n%!" current_cs; + if verbose () then printf "current ControlSet is %s\n%!" current_cs; disable_services root current_cs; disable_autoreboot root current_cs; diff --git a/v2v/input_disk.ml b/v2v/input_disk.ml index 84a2f85..970f552 100644 --- a/v2v/input_disk.ml +++ b/v2v/input_disk.ml @@ -24,8 +24,8 @@ open Common_utils open Types open Utils -class input_disk verbose input_format disk = object - inherit input verbose +class input_disk input_format disk = object + inherit input method as_options sprintf "-i disk%s %s" diff --git a/v2v/input_disk.mli b/v2v/input_disk.mli index 44f99b1..4f8d5cd 100644 --- a/v2v/input_disk.mli +++ b/v2v/input_disk.mli @@ -18,7 +18,7 @@ (** [-i disk] source. *) -val input_disk : bool -> string option -> string -> Types.input -(** [input_disk verbose input_format disk] creates and returns a new +val input_disk : string option -> string -> Types.input +(** [input_disk input_format disk] creates and returns a new {!Types.input} object specialized for reading input from local disk images. *) diff --git a/v2v/input_libvirt.ml b/v2v/input_libvirt.ml index aa97f7d..5cc0114 100644 --- a/v2v/input_libvirt.ml +++ b/v2v/input_libvirt.ml @@ -27,10 +27,10 @@ open Types open Utils (* Choose the right subclass based on the URI. *) -let input_libvirt verbose password libvirt_uri guest +let input_libvirt password libvirt_uri guest match libvirt_uri with | None -> - Input_libvirt_other.input_libvirt_other verbose password libvirt_uri guest + Input_libvirt_other.input_libvirt_other password libvirt_uri guest | Some orig_uri -> let { Xml.uri_server = server; uri_scheme = scheme } as parsed_uri @@ -45,15 +45,15 @@ let input_libvirt verbose password libvirt_uri guest | Some _, None (* No scheme? *) | Some _, Some "" -> - Input_libvirt_other.input_libvirt_other verbose password libvirt_uri guest + Input_libvirt_other.input_libvirt_other password libvirt_uri guest | Some server, Some ("esx"|"gsx"|"vpx" as scheme) -> (* vCenter over https *) Input_libvirt_vcenter_https.input_libvirt_vcenter_https - verbose password libvirt_uri parsed_uri scheme server guest + password libvirt_uri parsed_uri scheme server guest | Some server, Some ("xen+ssh" as scheme) -> (* Xen over SSH *) Input_libvirt_xen_ssh.input_libvirt_xen_ssh - verbose password libvirt_uri parsed_uri scheme server guest + password libvirt_uri parsed_uri scheme server guest (* Old virt-v2v also supported qemu+ssh://. However I am * deliberately not supporting this in new virt-v2v. Don't @@ -63,6 +63,6 @@ let input_libvirt verbose password libvirt_uri guest | Some _, Some _ -> (* Unknown remote scheme. *) warning (f_"no support for remote libvirt connections to '-ic %s'. The conversion may fail when it tries to read the source disks.") orig_uri; - Input_libvirt_other.input_libvirt_other verbose password libvirt_uri guest + Input_libvirt_other.input_libvirt_other password libvirt_uri guest let () = Modules_list.register_input_module "libvirt" diff --git a/v2v/input_libvirt.mli b/v2v/input_libvirt.mli index 6b2897b..94d2785 100644 --- a/v2v/input_libvirt.mli +++ b/v2v/input_libvirt.mli @@ -18,7 +18,7 @@ (** [-i libvirt] source. *) -val input_libvirt : bool -> string option -> string option -> string -> Types.input +val input_libvirt : string option -> string option -> string -> Types.input (** [input_libvirt verbose password libvirt_uri guest] creates and returns a new {!Types.input} object specialized for reading input from libvirt sources. *) diff --git a/v2v/input_libvirt_other.ml b/v2v/input_libvirt_other.ml index 48c6092..df819a3 100644 --- a/v2v/input_libvirt_other.ml +++ b/v2v/input_libvirt_other.ml @@ -43,9 +43,9 @@ let error_if_no_ssh_agent () error (f_"ssh-agent authentication has not been set up ($SSH_AUTH_SOCK is not set). Please read \"INPUT FROM RHEL 5 XEN\" in the virt-v2v(1) man page.") (* Superclass. *) -class virtual input_libvirt verbose password libvirt_uri guest +class virtual input_libvirt password libvirt_uri guest object - inherit input verbose + inherit input method as_options sprintf "-i libvirt%s %s" @@ -58,19 +58,20 @@ end (* Subclass specialized for handling anything that's *not* VMware vCenter * or Xen. *) -class input_libvirt_other verbose password libvirt_uri guest +class input_libvirt_other password libvirt_uri guest object - inherit input_libvirt verbose password libvirt_uri guest + inherit input_libvirt password libvirt_uri guest method source () - if verbose then printf "input_libvirt_other: source()\n%!"; + if verbose () then printf "input_libvirt_other: source()\n%!"; (* Get the libvirt XML. This also checks (as a side-effect) * that the domain is not running. (RHBZ#1138586) *) let xml = Domainxml.dumpxml ?password ?conn:libvirt_uri guest in - let source, disks = Input_libvirtxml.parse_libvirt_xml ?conn:libvirt_uri ~verbose xml in + let source, disks + Input_libvirtxml.parse_libvirt_xml ?conn:libvirt_uri xml in let disks List.map (fun { Input_libvirtxml.p_source_disk = disk } -> disk) disks in { source with s_disks = disks } diff --git a/v2v/input_libvirt_other.mli b/v2v/input_libvirt_other.mli index 87652d7..df5a37f 100644 --- a/v2v/input_libvirt_other.mli +++ b/v2v/input_libvirt_other.mli @@ -21,10 +21,10 @@ val error_if_libvirt_backend : unit -> unit val error_if_no_ssh_agent : unit -> unit -class virtual input_libvirt : bool -> string option -> string option -> string -> object +class virtual input_libvirt : string option -> string option -> string -> object method as_options : string method virtual source : unit -> Types.source method adjust_overlay_parameters : Types.overlay -> unit end -val input_libvirt_other : bool -> string option -> string option -> string -> Types.input +val input_libvirt_other : string option -> string option -> string -> Types.input diff --git a/v2v/input_libvirt_vcenter_https.ml b/v2v/input_libvirt_vcenter_https.ml index ac93329..01a6c89 100644 --- a/v2v/input_libvirt_vcenter_https.ml +++ b/v2v/input_libvirt_vcenter_https.ml @@ -38,7 +38,7 @@ let readahead_for_copying = Some (64 * 1024 * 1024) *) let rec get_session_cookie let session_cookie = ref "" in - fun verbose password scheme uri sslverify url -> + fun password scheme uri sslverify url -> if !session_cookie <> "" then Some !session_cookie else ( @@ -83,7 +83,7 @@ let rec get_session_cookie flush chan in - if verbose then dump_response stdout; + if verbose () then dump_response stdout; (* Look for the last HTTP/x.y NNN status code in the output. *) let status = ref "" in @@ -210,7 +210,7 @@ let get_datacenter uri scheme *) let source_re = Str.regexp "^\\[\\(.*\\)\\] \\(.*\\)\\.vmdk$" -let map_source_to_uri ?readahead verbose password uri scheme server path +let map_source_to_uri ?readahead password uri scheme server path if not (Str.string_match source_re path 0) then path else ( @@ -244,7 +244,7 @@ let map_source_to_uri ?readahead verbose password uri scheme server path (* Now we have to query the server to get the session cookie. *) let session_cookie - get_session_cookie verbose password scheme uri sslverify url in + get_session_cookie password scheme uri sslverify url in (* Construct the JSON parameters. *) let json_params = [ @@ -268,7 +268,7 @@ let map_source_to_uri ?readahead verbose password uri scheme server path | None -> json_params | Some cookie -> ("file.cookie", JSON.String cookie) :: json_params in - if verbose then + if verbose () then printf "vcenter: json parameters: %s\n" (JSON.string_of_doc json_params); (* Turn the JSON parameters into a 'json:' protocol string. @@ -281,14 +281,14 @@ let map_source_to_uri ?readahead verbose password uri scheme server path (* Subclass specialized for handling VMware vCenter over https. *) class input_libvirt_vcenter_https - verbose password libvirt_uri parsed_uri scheme server guest + password libvirt_uri parsed_uri scheme server guest object - inherit input_libvirt verbose password libvirt_uri guest + inherit input_libvirt password libvirt_uri guest val saved_source_paths = Hashtbl.create 13 method source () - if verbose then + if verbose () then printf "input_libvirt_vcenter_https: source: scheme %s server %s\n%!" scheme server; @@ -298,7 +298,7 @@ object * that the domain is not running. (RHBZ#1138586) *) let xml = Domainxml.dumpxml ?password ?conn:libvirt_uri guest in - let source, disks = parse_libvirt_xml ?conn:libvirt_uri ~verbose xml in + let source, disks = parse_libvirt_xml ?conn:libvirt_uri xml in (* Save the original source paths, so that we can remap them again * in [#adjust_overlay_parameters]. @@ -321,7 +321,7 @@ object | { p_source_disk = disk; p_source = P_dont_rewrite } -> disk | { p_source_disk = disk; p_source = P_source_file path } -> let qemu_uri = map_source_to_uri ?readahead - verbose password parsed_uri scheme server path in + password parsed_uri scheme server path in (* The libvirt ESX driver doesn't normally specify a format, but * the format of the -flat file is *always* raw, so force it here. @@ -342,13 +342,13 @@ object let readahead = readahead_for_copying in let backing_qemu_uri map_source_to_uri ?readahead - verbose password parsed_uri scheme server orig_path in + password parsed_uri scheme server orig_path in (* Rebase the qcow2 overlay to adjust the readahead parameter. *) let cmd sprintf "qemu-img rebase -u -b %s %s" (quote backing_qemu_uri) (quote overlay.ov_overlay_file) in - if verbose then printf "%s\n%!" cmd; + if verbose () then printf "%s\n%!" cmd; if Sys.command cmd <> 0 then warning (f_"qemu-img rebase failed (ignored)") end diff --git a/v2v/input_libvirt_vcenter_https.mli b/v2v/input_libvirt_vcenter_https.mli index 0d17323..302d0ae 100644 --- a/v2v/input_libvirt_vcenter_https.mli +++ b/v2v/input_libvirt_vcenter_https.mli @@ -18,4 +18,4 @@ (** [-i libvirt] when the source is VMware vCenter *) -val input_libvirt_vcenter_https : bool -> string option -> string option -> Xml.uri -> string -> string -> string -> Types.input +val input_libvirt_vcenter_https : string option -> string option -> Xml.uri -> string -> string -> string -> Types.input diff --git a/v2v/input_libvirt_xen_ssh.ml b/v2v/input_libvirt_xen_ssh.ml index f8b0c7a..a9c97df 100644 --- a/v2v/input_libvirt_xen_ssh.ml +++ b/v2v/input_libvirt_xen_ssh.ml @@ -30,12 +30,12 @@ open Input_libvirt_other open Printf (* Subclass specialized for handling Xen over SSH. *) -class input_libvirt_xen_ssh verbose password libvirt_uri parsed_uri scheme server guest +class input_libvirt_xen_ssh password libvirt_uri parsed_uri scheme server guest object - inherit input_libvirt verbose password libvirt_uri guest + inherit input_libvirt password libvirt_uri guest method source () - if verbose then + if verbose () then printf "input_libvirt_xen_ssh: source: scheme %s server %s\n%!" scheme server; @@ -46,7 +46,7 @@ object * that the domain is not running. (RHBZ#1138586) *) let xml = Domainxml.dumpxml ?password ?conn:libvirt_uri guest in - let source, disks = parse_libvirt_xml ?conn:libvirt_uri ~verbose xml in + let source, disks = parse_libvirt_xml ?conn:libvirt_uri xml in (* Map the <source/> filename (which is relative to the remote * Xen server) to an ssh URI. This is a JSON URI looking something @@ -87,7 +87,7 @@ object | None -> json_params | Some user -> ("file.user", JSON.String user) :: json_params in - if verbose then + if verbose () then printf "ssh: json parameters: %s\n" (JSON.string_of_doc json_params); (* Turn the JSON parameters into a 'json:' protocol string. *) diff --git a/v2v/input_libvirt_xen_ssh.mli b/v2v/input_libvirt_xen_ssh.mli index ad33cc4..84fd1c7 100644 --- a/v2v/input_libvirt_xen_ssh.mli +++ b/v2v/input_libvirt_xen_ssh.mli @@ -18,4 +18,4 @@ (** [-i libvirt] when the source is Xen *) -val input_libvirt_xen_ssh : bool -> string option -> string option -> Xml.uri -> string -> string -> string -> Types.input +val input_libvirt_xen_ssh : string option -> string option -> Xml.uri -> string -> string -> string -> Types.input diff --git a/v2v/input_libvirtxml.ml b/v2v/input_libvirtxml.ml index 4e019d4..ba00d94 100644 --- a/v2v/input_libvirtxml.ml +++ b/v2v/input_libvirtxml.ml @@ -33,8 +33,8 @@ and parsed_source | P_source_file of string | P_dont_rewrite -let parse_libvirt_xml ?conn ~verbose xml - if verbose then +let parse_libvirt_xml ?conn xml + if verbose () then printf "libvirt xml is:\n%s\n" xml; let doc = Xml.parse_memory xml in @@ -355,16 +355,16 @@ let parse_libvirt_xml ?conn ~verbose xml }, disks) -class input_libvirtxml verbose file +class input_libvirtxml file object - inherit input verbose + inherit input method as_options = "-i libvirtxml " ^ file method source () let xml = read_whole_file file in - let source, disks = parse_libvirt_xml ~verbose xml in + let source, disks = parse_libvirt_xml xml in (* When reading libvirt XML from a file (-i libvirtxml) we allow * paths to disk images in the libvirt XML to be relative (to the XML diff --git a/v2v/input_libvirtxml.mli b/v2v/input_libvirtxml.mli index abe0c43..08cff6b 100644 --- a/v2v/input_libvirtxml.mli +++ b/v2v/input_libvirtxml.mli @@ -27,7 +27,7 @@ and parsed_source | P_source_file of string (** <source file> *) | P_dont_rewrite (** s_qemu_uri is already set. *) -val parse_libvirt_xml : ?conn:string -> verbose:bool -> string -> Types.source * parsed_disk list +val parse_libvirt_xml : ?conn:string -> string -> Types.source * parsed_disk list (** Take libvirt XML and parse it into a {!Types.source} structure and a list of source disks. @@ -37,7 +37,7 @@ val parse_libvirt_xml : ?conn:string -> verbose:bool -> string -> Types.source * This function is also used by {!Input_libvirt}, hence it is exported. *) -val input_libvirtxml : bool -> string -> Types.input -(** [input_libvirtxml verbose xml_file] creates and returns a new +val input_libvirtxml : string -> Types.input +(** [input_libvirtxml xml_file] creates and returns a new {!Types.input} object specialized for reading input from local libvirt XML files. *) diff --git a/v2v/input_ova.ml b/v2v/input_ova.ml index 5f06652..066af73 100644 --- a/v2v/input_ova.ml +++ b/v2v/input_ova.ml @@ -24,14 +24,14 @@ open Common_utils open Types open Utils -class input_ova verbose ova +class input_ova ova let tmpdir let base_dir = (new Guestfs.guestfs ())#get_cachedir () in let t = Mkdtemp.temp_dir ~base_dir "ova." "" in rmdir_on_exit t; t in object - inherit input verbose + inherit input method as_options = "-i ova " ^ ova @@ -61,7 +61,7 @@ object let untar ?(format = "") file outdir let cmd = sprintf "tar -x%sf %s -C %s" format (quote file) (quote outdir) in - if verbose then printf "%s\n%!" cmd; + if verbose () then printf "%s\n%!" cmd; if Sys.command cmd <> 0 then error (f_"error unpacking %s, see earlier error messages") ova in @@ -75,9 +75,9 @@ object * zip files as ova too. *) let cmd = sprintf "unzip%s -j -d %s %s" - (if verbose then "" else " -q") + (if verbose () then "" else " -q") (quote tmpdir) (quote ova) in - if verbose then printf "%s\n%!" cmd; + if verbose () then printf "%s\n%!" cmd; if Sys.command cmd <> 0 then error (f_"error unpacking %s, see earlier error messages") ova; tmpdir @@ -155,7 +155,7 @@ object if actual <> expected then error (f_"checksum of disk %s does not match manifest %s (actual sha1(%s) = %s, expected sha1 (%s) = %s)") disk mf disk actual disk expected; - if verbose then + if verbose () then printf "sha1 of %s matches expected checksum %s\n%!" disk expected | _::_ -> error (f_"cannot parse output of sha1sum command") @@ -285,7 +285,7 @@ object let new_filename = tmpdir // string_random8 () ^ ".vmdk" in let cmd sprintf "zcat %s > %s" (quote filename) (quote new_filename) in - if verbose then printf "%s\n%!" cmd; + if verbose () then printf "%s\n%!" cmd; if Sys.command cmd <> 0 then error (f_"error uncompressing %s, see earlier error messages") filename; diff --git a/v2v/input_ova.mli b/v2v/input_ova.mli index 733f61d..32fa346 100644 --- a/v2v/input_ova.mli +++ b/v2v/input_ova.mli @@ -18,5 +18,5 @@ (** [-i ova] source. *) -val input_ova : bool -> string -> Types.input +val input_ova : string -> Types.input (** [input_ova filename] sets up an input from vmware ova file. *) diff --git a/v2v/linux.ml b/v2v/linux.ml index 86cb3bb..c8d5b9b 100644 --- a/v2v/linux.ml +++ b/v2v/linux.ml @@ -29,13 +29,13 @@ module G = Guestfs (* Wrappers around aug_init & aug_load which can dump out full Augeas * parsing problems when debugging is enabled. *) -let rec augeas_init verbose g +let rec augeas_init g g#aug_init "/" 1; - if verbose then augeas_debug_errors g + if verbose () then augeas_debug_errors g -and augeas_reload verbose g +and augeas_reload g g#aug_load (); - if verbose then augeas_debug_errors g + if verbose () then augeas_debug_errors g and augeas_debug_errors g try @@ -97,10 +97,10 @@ and augeas_debug_errors g with Guestfs.Error msg -> eprintf "%s: augeas: %s (ignored)\n" prog msg -let install verbose g inspect packages +let install g inspect packages assert false -let remove verbose g inspect packages +let remove g inspect packages if packages <> [] then ( let package_format = inspect.i_package_format in match package_format with @@ -110,14 +110,14 @@ let remove verbose g inspect packages ignore (g#command cmd); (* Reload Augeas in case anything changed. *) - augeas_reload verbose g + augeas_reload g | format -> error (f_"don't know how to remove packages using %s: packages: %s") format (String.concat " " packages) ) -let file_list_of_package verbose (g : Guestfs.guestfs) inspect app +let file_list_of_package (g : Guestfs.guestfs) inspect app let package_format = inspect.i_package_format in match package_format with @@ -147,7 +147,7 @@ let file_list_of_package verbose (g : Guestfs.guestfs) inspect app ) else pkg_name in let cmd = [| "rpm"; "-ql"; pkg_name |] in - if verbose then eprintf "%s\n%!" (String.concat " " (Array.to_list cmd)); + if verbose () then eprintf "%s\n%!" (String.concat " " (Array.to_list cmd)); let files = g#command_lines cmd in let files = Array.to_list files in List.sort compare files @@ -155,7 +155,7 @@ let file_list_of_package verbose (g : Guestfs.guestfs) inspect app error (f_"don't know how to get list of files from package using %s") format -let rec file_owner verbose g inspect path +let rec file_owner g inspect path let package_format = inspect.i_package_format in match package_format with | "rpm" -> @@ -163,7 +163,7 @@ let rec file_owner verbose g inspect path * a file, this deliberately only returns one package. *) let cmd = [| "rpm"; "-qf"; "--qf"; "%{NAME}"; path |] in - if verbose then eprintf "%s\n%!" (String.concat " " (Array.to_list cmd)); + if verbose () then eprintf "%s\n%!" (String.concat " " (Array.to_list cmd)); (try g#command cmd with Guestfs.Error msg as exn -> if string_find msg "is not owned" >= 0 then @@ -175,6 +175,6 @@ let rec file_owner verbose g inspect path | format -> error (f_"don't know how to find file owner using %s") format -and is_file_owned verbose g inspect path - try file_owner verbose g inspect path; true +and is_file_owned g inspect path + try file_owner g inspect path; true with Not_found -> false diff --git a/v2v/linux.mli b/v2v/linux.mli index 15784ba..35f2f17 100644 --- a/v2v/linux.mli +++ b/v2v/linux.mli @@ -18,24 +18,24 @@ (** Common Linux functions. *) -val augeas_init : bool -> Guestfs.guestfs -> unit -val augeas_reload : bool -> Guestfs.guestfs -> unit +val augeas_init : Guestfs.guestfs -> unit +val augeas_reload : Guestfs.guestfs -> unit (** Wrappers around [g#aug_init] and [g#aug_load], which (if verbose) provide additional debugging information about parsing problems that augeas found. *) -val install : bool -> Guestfs.guestfs -> Types.inspect -> string list -> unit +val install : Guestfs.guestfs -> Types.inspect -> string list -> unit (** Install package(s) from the list in the guest (or ensure they are installed). *) -val remove : bool -> Guestfs.guestfs -> Types.inspect -> string list -> unit +val remove : Guestfs.guestfs -> Types.inspect -> string list -> unit (** Uninstall package(s). *) -val file_list_of_package : bool -> Guestfs.guestfs -> Types.inspect -> Guestfs.application2 -> string list +val file_list_of_package : Guestfs.guestfs -> Types.inspect -> Guestfs.application2 -> string list (** Return list of files owned by package. *) -val file_owner : bool -> Guestfs.guestfs -> Types.inspect -> string -> string +val file_owner : Guestfs.guestfs -> Types.inspect -> string -> string (** Return the name of the package that owns a file. *) -val is_file_owned : bool -> Guestfs.guestfs -> Types.inspect -> string -> bool +val is_file_owned : Guestfs.guestfs -> Types.inspect -> string -> bool (** Returns true if the file is owned by an installed package. *) diff --git a/v2v/modules_list.ml b/v2v/modules_list.ml index ac6908d..7869c9c 100644 --- a/v2v/modules_list.ml +++ b/v2v/modules_list.ml @@ -28,7 +28,7 @@ let input_modules () = List.sort compare !input_modules and output_modules () = List.sort compare !output_modules type conversion_fn - verbose:bool -> keep_serial_console:bool -> + keep_serial_console:bool -> Guestfs.guestfs -> Types.inspect -> Types.source -> Types.guestcaps let convert_modules = ref [] diff --git a/v2v/modules_list.mli b/v2v/modules_list.mli index 4c9fdf3..7ae5dd2 100644 --- a/v2v/modules_list.mli +++ b/v2v/modules_list.mli @@ -31,7 +31,7 @@ val output_modules : unit -> string list (** Return the list of output modules. *) type conversion_fn - verbose:bool -> keep_serial_console:bool -> + keep_serial_console:bool -> Guestfs.guestfs -> Types.inspect -> Types.source -> Types.guestcaps val register_convert_module : (Types.inspect -> bool) -> string -> conversion_fn -> unit diff --git a/v2v/output_glance.ml b/v2v/output_glance.ml index 4880151..ad9ec18 100644 --- a/v2v/output_glance.ml +++ b/v2v/output_glance.ml @@ -24,7 +24,7 @@ open Common_utils open Types open Utils -class output_glance verbose +class output_glance () (* Although glance can slurp in a stream from stdin, unfortunately * 'qemu-img convert' cannot write to a stream (although I guess * it could be implemented at least for raw). Therefore we have @@ -36,7 +36,7 @@ class output_glance verbose rmdir_on_exit t; t in object - inherit output verbose + inherit output method as_options = "-o glance" @@ -72,7 +72,7 @@ object let cmd sprintf "glance image-create --name %s --disk-format=%s --container-format=bare --file %s" (quote source.s_name) (quote target_format) target_file in - if verbose then printf "%s\n%!" cmd; + if verbose () then printf "%s\n%!" cmd; if Sys.command cmd <> 0 then error (f_"glance: image upload to glance failed, see earlier errors"); @@ -117,7 +117,7 @@ object ) properties )) (quote source.s_name) in - if verbose then printf "%s\n%!" cmd; + if verbose () then printf "%s\n%!" cmd; if Sys.command cmd <> 0 then ( warning (f_"glance: failed to set image properties (ignored)"); (* Dump out the image properties so the user can set them. *) diff --git a/v2v/output_glance.mli b/v2v/output_glance.mli index 1ff7376..60920c3 100644 --- a/v2v/output_glance.mli +++ b/v2v/output_glance.mli @@ -18,7 +18,7 @@ (** [-o glance] target. *) -val output_glance : bool -> Types.output -(** [output_glance verbose] creates and returns a new +val output_glance : unit -> Types.output +(** [output_glance ()] creates and returns a new {!Types.output} object specialized for writing output to OpenStack glance. *) diff --git a/v2v/output_libvirt.ml b/v2v/output_libvirt.ml index 6e76c92..b540b47 100644 --- a/v2v/output_libvirt.ml +++ b/v2v/output_libvirt.ml @@ -305,8 +305,8 @@ let create_libvirt_xml ?pool source targets guestcaps doc -class output_libvirt verbose oc output_pool = object - inherit output verbose +class output_libvirt oc output_pool = object + inherit output val mutable capabilities_doc = None @@ -320,7 +320,7 @@ class output_libvirt verbose oc output_pool = object method prepare_targets source targets (* Get the capabilities from libvirt. *) let xml = Domainxml.capabilities ?conn:oc () in - if verbose then printf "libvirt capabilities XML:\n%s\n%!" xml; + if verbose () then printf "libvirt capabilities XML:\n%s\n%!" xml; (* This just checks that the capabilities XML is well-formed, * early so that we catch parsing errors before conversion. @@ -385,7 +385,7 @@ class output_libvirt verbose oc output_pool = object | Some uri -> sprintf "virsh -c %s pool-refresh %s" (quote uri) (quote output_pool) in - if verbose then printf "%s\n%!" cmd; + if verbose () then printf "%s\n%!" cmd; if Sys.command cmd <> 0 then warning (f_"could not refresh libvirt pool %s") output_pool; diff --git a/v2v/output_libvirt.mli b/v2v/output_libvirt.mli index 6370912..9f2c20b 100644 --- a/v2v/output_libvirt.mli +++ b/v2v/output_libvirt.mli @@ -18,8 +18,8 @@ (** [-o libvirt] target. *) -val output_libvirt : bool -> string option -> string -> Types.output -(** [output_libvirt verbose oc output_pool] creates and returns a new +val output_libvirt : string option -> string -> Types.output +(** [output_libvirt oc output_pool] creates and returns a new {!Types.output} object specialized for writing output to libvirt. *) diff --git a/v2v/output_local.ml b/v2v/output_local.ml index 3b10791..0e82a3a 100644 --- a/v2v/output_local.ml +++ b/v2v/output_local.ml @@ -24,8 +24,8 @@ open Common_utils open Types open Utils -class output_local verbose dir = object - inherit output verbose +class output_local dir = object + inherit output method as_options = sprintf "-o local -os %s" dir diff --git a/v2v/output_local.mli b/v2v/output_local.mli index 6a505b3..5fa30e2 100644 --- a/v2v/output_local.mli +++ b/v2v/output_local.mli @@ -18,7 +18,7 @@ (** [-o local] target. *) -val output_local : bool -> string -> Types.output -(** [output_local verbose filename] creates and returns a new +val output_local : string -> Types.output +(** [output_local filename] creates and returns a new {!Types.output} object specialized for writing output to local files. *) diff --git a/v2v/output_null.ml b/v2v/output_null.ml index de44615..5cc89a2 100644 --- a/v2v/output_null.ml +++ b/v2v/output_null.ml @@ -24,7 +24,7 @@ open Common_utils open Types open Utils -class output_null verbose +class output_null (* It would be nice to be able to write to /dev/null. * Unfortunately qemu-img convert cannot do that. Instead create a * temporary directory which is always deleted at exit. @@ -35,7 +35,7 @@ class output_null verbose rmdir_on_exit t; t in object - inherit output verbose + inherit output method as_options = "-o null" @@ -51,5 +51,5 @@ object method create_metadata _ _ _ _ _ = () end -let output_null = new output_null +let output_null () = new output_null let () = Modules_list.register_output_module "null" diff --git a/v2v/output_null.mli b/v2v/output_null.mli index 7db8656..72ab884 100644 --- a/v2v/output_null.mli +++ b/v2v/output_null.mli @@ -18,6 +18,6 @@ (** [-o null] target. *) -val output_null : bool -> Types.output -(** [output_null filename] creates and returns a new {!Types.output} +val output_null : unit -> Types.output +(** [output_null ()] creates and returns a new {!Types.output} object specialized discarding output. *) diff --git a/v2v/output_qemu.ml b/v2v/output_qemu.ml index 1d8dbdb..81d819e 100644 --- a/v2v/output_qemu.ml +++ b/v2v/output_qemu.ml @@ -24,9 +24,9 @@ open Common_utils open Types open Utils -class output_qemu verbose dir qemu_boot +class output_qemu dir qemu_boot object - inherit output verbose + inherit output method as_options sprintf "-o qemu -os %s%s" dir (if qemu_boot then " --qemu-boot" else "") diff --git a/v2v/output_qemu.mli b/v2v/output_qemu.mli index 867425b..f6b9d90 100644 --- a/v2v/output_qemu.mli +++ b/v2v/output_qemu.mli @@ -18,7 +18,7 @@ (** [-o qemu] target. *) -val output_qemu : bool -> string -> bool -> Types.output -(** [output_qemu verbose filename qemu_boot] creates and returns a new +val output_qemu : string -> bool -> Types.output +(** [output_qemu filename qemu_boot] creates and returns a new {!Types.output} object specialized for writing output to local files with a qemu script to start the guest locally. *) diff --git a/v2v/output_rhev.ml b/v2v/output_rhev.ml index 911705e..365c35e 100644 --- a/v2v/output_rhev.ml +++ b/v2v/output_rhev.ml @@ -26,13 +26,13 @@ open Types open Utils open DOM -let rec mount_and_check_storage_domain verbose domain_class os +let rec mount_and_check_storage_domain domain_class os (* The user can either specify -os nfs:/export, or a local directory * which is assumed to be the already-mounted NFS export. *) match string_split ":/" os with | mp, "" -> (* Already mounted directory. *) - check_storage_domain verbose domain_class os mp + check_storage_domain domain_class os mp | server, export -> let export = "/" ^ export in @@ -45,21 +45,21 @@ let rec mount_and_check_storage_domain verbose domain_class os (* Try mounting it. *) let cmd sprintf "mount %s:%s %s" (quote server) (quote export) (quote mp) in - if verbose then printf "%s\n%!" cmd; + if verbose () then printf "%s\n%!" cmd; if Sys.command cmd <> 0 then error (f_"mount command failed, see earlier errors.\n\nThis probably means you didn't specify the right %s path [-os %s], or else you need to rerun virt-v2v as root.") domain_class os; (* Make sure it is unmounted at exit. *) at_exit (fun () -> let cmd = sprintf "umount %s" (quote mp) in - if verbose then printf "%s\n%!" cmd; + if verbose () then printf "%s\n%!" cmd; ignore (Sys.command cmd); try rmdir mp with _ -> () ); - check_storage_domain verbose domain_class os mp + check_storage_domain domain_class os mp -and check_storage_domain verbose domain_class os mp +and check_storage_domain domain_class os mp (* Typical SD mountpoint looks like this: * $ ls /tmp/mnt * 39b6af0e-1d64-40c2-97e4-4f094f1919c7 __DIRECT_IO_TEST__ lost+found @@ -102,7 +102,7 @@ and check_storage_domain verbose domain_class os mp (* UID:GID required for files and directories when writing to ESD. *) let uid = 36 and gid = 36 -class output_rhev verbose os vmtype output_alloc +class output_rhev os vmtype output_alloc (* Create a UID-switching handle. If we're not root, create a dummy * one because we cannot switch UIDs. *) @@ -113,7 +113,7 @@ class output_rhev verbose os vmtype output_alloc else Kvmuid.create () in object - inherit output verbose + inherit output method as_options sprintf "-o rhev -os %s%s" os @@ -163,10 +163,10 @@ object *) method prepare_targets _ targets let mp, uuid - mount_and_check_storage_domain verbose (s_"Export Storage Domain") os in + mount_and_check_storage_domain (s_"Export Storage Domain") os in esd_mp <- mp; esd_uuid <- uuid; - if verbose then + if verbose () then eprintf "RHEV: ESD mountpoint: %s\nRHEV: ESD UUID: %s\n%!" esd_mp esd_uuid; @@ -177,7 +177,7 @@ object let stat = stat testfile in Kvmuid.unlink kvmuid_t testfile; let actual_uid = stat.st_uid and actual_gid = stat.st_gid in - if verbose then + if verbose () then eprintf "RHEV: actual UID:GID of new files is %d:%d\n" actual_uid actual_gid; if uid <> actual_uid || gid <> actual_gid then ( @@ -239,7 +239,7 @@ object let ov_sd = ov.ov_sd in let target_file = images_dir // image_uuid // vol_uuid in - if verbose then + if verbose () then eprintf "RHEV: will export %s to %s\n%!" ov_sd target_file; { t with target_file = target_file } @@ -247,7 +247,7 @@ object (* Generate the .meta file associated with each volume. *) let metas - OVF.create_meta_files verbose output_alloc esd_uuid image_uuids + OVF.create_meta_files output_alloc esd_uuid image_uuids targets in List.iter ( fun ({ target_file = target_file }, meta) -> @@ -283,7 +283,7 @@ object assert (target_firmware = TargetBIOS); (* Create the metadata. *) - let ovf = OVF.create_ovf verbose source targets guestcaps inspect + let ovf = OVF.create_ovf source targets guestcaps inspect output_alloc vmtype esd_uuid image_uuids vol_uuids vm_uuid in (* Write it to the metadata file. *) diff --git a/v2v/output_rhev.mli b/v2v/output_rhev.mli index cb4b80e..68702f9 100644 --- a/v2v/output_rhev.mli +++ b/v2v/output_rhev.mli @@ -18,10 +18,10 @@ (** [-o rhev] target. *) -val mount_and_check_storage_domain : bool -> string -> string -> (string * string) +val mount_and_check_storage_domain : string -> string -> (string * string) (** This helper function is also used by the VDSM target. *) -val output_rhev : bool -> string -> Types.vmtype option -> Types.output_allocation -> Types.output -(** [output_rhev verbose os vmtype output_alloc] creates and +val output_rhev : string -> Types.vmtype option -> Types.output_allocation -> Types.output +(** [output_rhev os vmtype output_alloc] creates and returns a new {!Types.output} object specialized for writing output to RHEV-M or oVirt Export Storage Domain. *) diff --git a/v2v/output_vdsm.ml b/v2v/output_vdsm.ml index aa56e23..44f0041 100644 --- a/v2v/output_vdsm.ml +++ b/v2v/output_vdsm.ml @@ -33,9 +33,9 @@ type vdsm_params = { ovf_output : string; } -class output_vdsm verbose os vdsm_params vmtype output_alloc +class output_vdsm os vdsm_params vmtype output_alloc object - inherit output verbose + inherit output method as_options sprintf "-o vdsm -os %s%s%s --vdsm-vm-uuid %s --vdsm-ovf-output %s%s" os @@ -94,7 +94,7 @@ object dd_mp <- mp; dd_uuid <- uuid; - if verbose then + if verbose () then eprintf "VDSM: DD mountpoint: %s\nVDSM: DD UUID: %s\n%!" dd_mp dd_uuid; @@ -113,7 +113,7 @@ object error (f_"OVF (metadata) directory (%s) does not exist or is not a directory") vdsm_params.ovf_output; - if verbose then + if verbose () then eprintf "VDSM: OVF (metadata) directory: %s\n%!" vdsm_params.ovf_output; (* The final directory structure should look like this: @@ -133,7 +133,7 @@ object let ov_sd = ov.ov_sd in let target_file = images_dir // image_uuid // vol_uuid in - if verbose then + if verbose () then eprintf "VDSM: will export %s to %s\n%!" ov_sd target_file; { t with target_file = target_file } @@ -141,7 +141,7 @@ object (* Generate the .meta files associated with each volume. *) let metas - OVF.create_meta_files verbose output_alloc dd_uuid + OVF.create_meta_files output_alloc dd_uuid vdsm_params.image_uuids targets in List.iter ( fun ({ target_file = target_file }, meta) -> @@ -170,7 +170,7 @@ object assert (target_firmware = TargetBIOS); (* Create the metadata. *) - let ovf = OVF.create_ovf verbose source targets guestcaps inspect + let ovf = OVF.create_ovf source targets guestcaps inspect output_alloc vmtype dd_uuid vdsm_params.image_uuids vdsm_params.vol_uuids diff --git a/v2v/output_vdsm.mli b/v2v/output_vdsm.mli index 161a108..2bc0255 100644 --- a/v2v/output_vdsm.mli +++ b/v2v/output_vdsm.mli @@ -26,7 +26,7 @@ type vdsm_params = { } (** Miscellaneous extra command line parameters used by VDSM. *) -val output_vdsm : bool -> string -> vdsm_params -> Types.vmtype option -> Types.output_allocation -> Types.output -(** [output_vdsm verbose os rhev_params output_alloc] creates and +val output_vdsm : string -> vdsm_params -> Types.vmtype option -> Types.output_allocation -> Types.output +(** [output_vdsm os rhev_params output_alloc] creates and returns a new {!Types.output} object specialized for writing output to Data Domains directly under VDSM control. *) diff --git a/v2v/types.ml b/v2v/types.ml index e241d02..c583554 100644 --- a/v2v/types.ml +++ b/v2v/types.ml @@ -347,13 +347,13 @@ gcaps_acpi = %b gcaps.gcaps_arch gcaps.gcaps_acpi -class virtual input verbose = object +class virtual input = object method virtual as_options : string method virtual source : unit -> source method adjust_overlay_parameters (_ : overlay) = () end -class virtual output verbose = object +class virtual output = object method virtual as_options : string method virtual prepare_targets : source -> target list -> target list method virtual supported_firmware : target_firmware list diff --git a/v2v/types.mli b/v2v/types.mli index e587850..b76ef52 100644 --- a/v2v/types.mli +++ b/v2v/types.mli @@ -195,7 +195,7 @@ and guestcaps_video_type = QXL | Cirrus val string_of_guestcaps : guestcaps -> string -class virtual input : bool -> object +class virtual input : object method virtual as_options : string (** Converts the input object back to the equivalent command line options. This is just used for pretty-printing log messages. *) @@ -207,7 +207,7 @@ class virtual input : bool -> object end (** Encapsulates all [-i], etc input arguments as an object. *) -class virtual output : bool -> object +class virtual output : object method virtual as_options : string (** Converts the output object back to the equivalent command line options. This is just used for pretty-printing log messages. *) diff --git a/v2v/v2v.ml b/v2v/v2v.ml index 2d39ec6..d93366a 100644 --- a/v2v/v2v.ml +++ b/v2v/v2v.ml @@ -48,13 +48,13 @@ let rec main () let input, output, debug_gc, debug_overlays, do_copy, network_map, no_trim, output_alloc, output_format, output_name, - print_source, quiet, root_choice, trace, verbose + print_source, quiet, root_choice Cmdline.parse_cmdline () in let msg fs = make_message_function ~quiet fs in (* Print the version, easier than asking users to tell us. *) - if verbose then + if verbose () then printf "%s: %s %s (%s)\n%!" prog Config.package_name Config.package_version Config.host_cpu; @@ -71,7 +71,7 @@ let rec main () exit 0 ); - if verbose then printf "%s%!" (string_of_source source); + if verbose () then printf "%s%!" (string_of_source source); (match source.s_hypervisor with | OtherHV hv -> @@ -143,7 +143,7 @@ let rec main () let cmd sprintf "qemu-img create -q -f qcow2 -b %s -o %s %s" (quote qemu_uri) (quote options) overlay_file in - if verbose then printf "%s\n%!" cmd; + if verbose () then printf "%s\n%!" cmd; if Sys.command cmd <> 0 then error (f_"qemu-img command failed, see earlier errors"); @@ -157,8 +157,8 @@ let rec main () (* Open the guestfs handle. *) msg (f_"Opening the overlay"); let g = new G.guestfs () in - if trace then g#set_trace true; - if verbose then g#set_verbose true; + if trace () then g#set_trace true; + if verbose () then g#set_verbose true; g#set_network true; List.iter ( fun (overlay_file, _) -> @@ -222,7 +222,7 @@ let rec main () (* Inspection - this also mounts up the filesystems. *) msg (f_"Inspecting the overlay"); - let inspect = inspect_source ~verbose g root_choice in + let inspect = inspect_source g root_choice in (* Does the guest require UEFI on the target? *) let target_firmware @@ -252,7 +252,7 @@ let rec main () { mp_dev = dev; mp_path = path; mp_statvfs = statvfs; mp_vfs = vfs } ) (g#mountpoints ()) in - if verbose then ( + if verbose () then ( (* This is useful for debugging speed / fstrim issues. *) printf "mpstats:\n"; List.iter (print_mpstat Pervasives.stdout) mpstats @@ -264,7 +264,7 @@ let rec main () (* Estimate space required on target for each disk. Note this is a max. *) msg (f_"Estimating space required on target for each disk"); - let targets = estimate_target_size ~verbose mpstats targets in + let targets = estimate_target_size mpstats targets in output#check_target_free_space source targets; @@ -285,9 +285,9 @@ let rec main () with Not_found -> error (f_"virt-v2v is unable to convert this guest type (%s/%s)") inspect.i_type inspect.i_distro in - if verbose then printf "picked conversion module %s\n%!" conversion_name; - let guestcaps = convert ~verbose ~keep_serial_console g inspect source in - if verbose then printf "%s%!" (string_of_guestcaps guestcaps); + if verbose () then printf "picked conversion module %s\n%!" conversion_name; + let guestcaps = convert ~keep_serial_console g inspect source in + if verbose () then printf "%s%!" (string_of_guestcaps guestcaps); guestcaps in (* Did we manage to install virtio drivers? *) @@ -306,7 +306,7 @@ let rec main () * not have to be copied. *) msg (f_"Mapping filesystem data to avoid copying unused and blank areas"); - do_fstrim ~verbose g no_trim inspect; + do_fstrim g no_trim inspect; ); msg (f_"Closing the overlay"); @@ -332,7 +332,7 @@ let rec main () fun i t -> msg (f_"Copying disk %d/%d to %s (%s)") (i+1) nr_disks t.target_file t.target_format; - if verbose then printf "%s%!" (string_of_target t); + if verbose () then printf "%s%!" (string_of_target t); (* We noticed that qemu sometimes corrupts the qcow2 file on * exit. This only seemed to happen with lazy_refcounts was @@ -380,7 +380,7 @@ let rec main () (if not quiet then " -p" else "") (quote t.target_format) (quote overlay_file) (quote t.target_file) in - if verbose then printf "%s\n%!" cmd; + if verbose () then printf "%s\n%!" cmd; let start_time = gettimeofday () in if Sys.command cmd <> 0 then error (f_"qemu-img command failed, see earlier errors"); @@ -393,7 +393,7 @@ let rec main () (* If verbose, print the virtual and real copying rates. *) let elapsed_time = end_time -. start_time in - if verbose && elapsed_time > 0. then ( + if verbose () && elapsed_time > 0. then ( let mbps size time Int64.to_float size /. 1024. /. 1024. *. 10. /. time in @@ -412,7 +412,7 @@ let rec main () * for developer information only - so we can increase the * accuracy of the estimate. *) - if verbose then ( + if verbose () then ( match t.target_estimated_size, t.target_actual_size with | None, None | None, Some _ | Some _, None | Some _, Some 0L -> () | Some estimate, Some actual -> @@ -453,7 +453,7 @@ let rec main () if debug_gc then Gc.compact () -and inspect_source ~verbose g root_choice +and inspect_source g root_choice let roots = g#inspect_os () in let roots = Array.to_list roots in @@ -581,7 +581,7 @@ and inspect_source ~verbose g root_choice i_apps_map = apps_map; i_uefi = uefi } in - if verbose then printf "%s%!" (string_of_inspect inspect); + if verbose () then printf "%s%!" (string_of_inspect inspect); inspect (* Conversion can fail if there is no space on the guest filesystems @@ -622,7 +622,7 @@ and check_free_space mpstats (* Perform the fstrim. The trimming bit is easy. Dealing with the * [--no-trim] parameter .. not so much. *) -and do_fstrim ~verbose g no_trim inspect +and do_fstrim g no_trim inspect (* Get all filesystems. *) let fses = g#list_filesystems () in @@ -633,7 +633,7 @@ and do_fstrim ~verbose g no_trim inspect let fses if no_trim = [] then fses else ( - if verbose then ( + if verbose () then ( printf "no_trim: %s\n" (String.concat " " no_trim); printf "filesystems before considering no_trim: %s\n" (String.concat " " fses) @@ -655,7 +655,7 @@ and do_fstrim ~verbose g no_trim inspect with Not_found -> true ) fses in - if verbose then + if verbose () then printf "filesystems after considering no_trim: %s\n%!" (String.concat " " fses); @@ -673,7 +673,7 @@ and do_fstrim ~verbose g no_trim inspect (* Only emit this warning when debugging, because otherwise * it causes distress (RHBZ#1168144). *) - if verbose then + if verbose () then warning (f_"%s (ignored)") msg ) ) fses @@ -732,7 +732,7 @@ and do_fstrim ~verbose g no_trim inspect * sdb has 3/4 of total virtual size, so it gets a saving of 3 * 1.35 / 4 * sdb final estimate size = 3 - (3*1.35/4) = 1.9875 GB *) -and estimate_target_size ~verbose mpstats targets +and estimate_target_size mpstats targets let sum = List.fold_left (+^) 0L in (* (1) *) @@ -740,14 +740,14 @@ and estimate_target_size ~verbose mpstats targets sum ( List.map (fun { mp_statvfs = s } -> s.G.blocks *^ s.G.bsize) mpstats ) in - if verbose then + if verbose () then printf "estimate_target_size: fs_total_size = %Ld [%s]\n%!" fs_total_size (human_size fs_total_size); (* (2) *) let source_total_size sum (List.map (fun t -> t.target_overlay.ov_virtual_size) targets) in - if verbose then + if verbose () then printf "estimate_target_size: source_total_size = %Ld [%s]\n%!" source_total_size (human_size source_total_size); @@ -757,7 +757,7 @@ and estimate_target_size ~verbose mpstats targets (* (3) Store the ratio as a float to avoid overflows later. *) let ratio Int64.to_float fs_total_size /. Int64.to_float source_total_size in - if verbose then + if verbose () then printf "estimate_target_size: ratio = %.3f\n%!" ratio; (* (4) *) @@ -781,11 +781,11 @@ and estimate_target_size ~verbose mpstats targets | _ -> 0L ) mpstats ) in - if verbose then + if verbose () then printf "estimate_target_size: fs_free = %Ld [%s]\n%!" fs_free (human_size fs_free); let scaled_saving = Int64.of_float (Int64.to_float fs_free *. ratio) in - if verbose then + if verbose () then printf "estimate_target_size: scaled_saving = %Ld [%s]\n%!" scaled_saving (human_size scaled_saving); @@ -797,7 +797,7 @@ and estimate_target_size ~verbose mpstats targets Int64.to_float size /. Int64.to_float source_total_size in let estimated_size size -^ Int64.of_float (proportion *. Int64.to_float scaled_saving) in - if verbose then + if verbose () then printf "estimate_target_size: %s: %Ld [%s]\n%!" ov.ov_sd estimated_size (human_size estimated_size); { t with target_estimated_size = Some estimated_size } -- 2.3.1
Richard W.M. Jones
2015-May-15 10:40 UTC
[Libguestfs] [PATCH v2 4/4] ocaml tools: Only tell people to use -v -x if they're not already set (RHBZ#1167623).
When you get an error in tools, it will print a message like: If reporting bugs, run virt-v2v with debugging enabled and include the complete output: virt-v2v -v -x [...] Only print this message if -v or -x were not already specified on the command line. --- mllib/common_utils.ml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/mllib/common_utils.ml b/mllib/common_utils.ml index cdbe674..085089a 100644 --- a/mllib/common_utils.ml +++ b/mllib/common_utils.ml @@ -297,11 +297,13 @@ let error ?(exit_code = 1) fs let chan = stderr in ansi_red ~chan (); wrap ~chan (sprintf (f_"%s: error: %s") prog str); - prerr_newline (); - prerr_newline (); - wrap ~chan - (sprintf (f_"If reporting bugs, run %s with debugging enabled and include the complete output:\n\n %s -v -x [...]") - prog prog); + if not (verbose () && trace ()) then ( + prerr_newline (); + prerr_newline (); + wrap ~chan + (sprintf (f_"If reporting bugs, run %s with debugging enabled and include the complete output:\n\n %s -v -x [...]") + prog prog); + ); ansi_restore ~chan (); prerr_newline (); exit exit_code -- 2.3.1
Pino Toscano
2015-May-15 13:42 UTC
Re: [Libguestfs] [PATCH v2 1/4] resize: Remove unnecessary 'prog' from error message.
On Friday 15 May 2015 11:40:56 Richard W.M. Jones wrote:> The common error function already prints the program name, so > we don't need to print it twice. > > Before: > > $ virt-resize --expand "" > virt-resize: error: virt-resize: empty --expand option > > After: > > $ virt-resize --expand "" > virt-resize: error: empty --expand option > --- > resize/resize.ml | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/resize/resize.ml b/resize/resize.ml > index 40a777c..33abaab 100644 > --- a/resize/resize.ml > +++ b/resize/resize.ml > @@ -170,7 +170,7 @@ let main () > let dryrun = ref false in > let expand = ref "" in > let set_expand s > - if s = "" then error (f_"%s: empty --expand option") prog > + if s = "" then error (f_"empty --expand option") > else if !expand <> "" then error (f_"--expand option given twice") > else expand := s > inLGTM. I see few cases like that in builder/cmdline.ml, would it be possible to add them to this patch as well? -- Pino Toscano
Pino Toscano
2015-May-15 14:14 UTC
Re: [Libguestfs] [PATCH v2 0/4] Only tell people to use -v -x when reporting bugs if they're not using those flags.
On Friday 15 May 2015 11:40:55 Richard W.M. Jones wrote:> https://bugzilla.redhat.com/show_bug.cgi?id=1167623Patches #2, #3, and #4 LGTM. -- Pino Toscano
Maybe Matching Threads
- [PATCH 0/4] Only tell people to use -v -x when reporting bugs if they're not using those flags.
- [PATCH 0/5] Miscellaneous refactoring of common/utils, create common/mltools
- [PATCH v2 0/8] v2v: Move Curl wrapper to mllib and use it for virt-builder (and more).
- [PATCH v3 0/8] v2v: Move Curl wrapper to mllib and more.
- [PATCH 0/4] sysprep: add FreeIPA offline unenrollment (RHBZ#1789592)