[Libguestfs] [PATCH V4] virt-sysprep:add logging feature
Richard W.M. Jones
rjones at redhat.com
Wed Apr 11 12:33:55 UTC 2012
On Wed, Apr 11, 2012 at 08:05:29PM +0800, Wanlong Gao wrote:
> I thinks users often want to know what is virt-sysprep doing on his
> guest, if silence, I don't know if the process is running or already
> hang up. So, I also think that showing simple logging for users should
> be made default.
>
> Above all, I think keep silently when running for a bit long time is
> not a good idea, do you think so?
Well maybe, maybe not. Certainly the logging by default should be
informative, and it should be possible to turn it off (like
'virt-resize --quiet').
How about we log just the high level operations as they are performed,
as in the attached patch?
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming blog: http://rwmj.wordpress.com
Fedora now supports 80 OCaml packages (the OPEN alternative to F#)
http://cocan.org/getting_started_with_ocaml_on_red_hat_and_fedora
-------------- next part --------------
>From 528b9108a91449b1689265aff55a9b2667a33066 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones at redhat.com>
Date: Wed, 11 Apr 2012 13:25:36 +0100
Subject: [PATCH] sysprep: Print some logging by default.
It can be disabled using the --quiet option.
The logging looks like:
Examining the guest ...
Performing "cron-spool" ...
Performing "dhcp-client-state" ...
Performing "dhcp-server-state" ...
Performing "hostname" ...
Performing "logfiles" ...
Performing "mail-spool" ...
Performing "net-hwaddr" ...
Performing "random-seed" ...
Performing "rhn-systemid" ...
Performing "script" ...
Performing "smolt-uuid" ...
Performing "ssh-hostkeys" ...
Performing "udev-persistent-net" ...
Performing "utmp" ...
Performing "yum-uuid" ...
---
sysprep/main.ml | 14 +++++++++++---
sysprep/sysprep_operation.ml | 5 +++--
sysprep/sysprep_operation.mli | 2 +-
sysprep/virt-sysprep.pod | 8 ++++++++
4 files changed, 23 insertions(+), 6 deletions(-)
diff --git a/sysprep/main.ml b/sysprep/main.ml
index d06b0d2..cd7aa57 100644
--- a/sysprep/main.ml
+++ b/sysprep/main.ml
@@ -29,12 +29,13 @@ let () = Sysprep_operation.bake ()
(* Command line argument parsing. *)
let prog = Filename.basename Sys.executable_name
-let debug_gc, operations, g, selinux_relabel =
+let debug_gc, operations, g, selinux_relabel, quiet =
let debug_gc = ref false in
let domain = ref None in
let dryrun = ref false in
let files = ref [] in
let format = ref "auto" in
+ let quiet = ref false in
let libvirturi = ref "" in
let operations = ref None in
let selinux_relabel = ref `Auto in
@@ -105,6 +106,8 @@ let debug_gc, operations, g, selinux_relabel =
"--enable", Arg.String set_enable, "operations Enable specific operations";
"--format", Arg.Set_string format, "format Set format (default: auto)";
"--list-operations", Arg.Unit list_operations, " List supported operations";
+ "-q", Arg.Set quiet, " Don't print log messages";
+ "--quiet", Arg.Set quiet, " Don't print log messages";
"--selinux-relabel", Arg.Unit force_selinux_relabel, " Force SELinux relabel";
"--no-selinux-relabel", Arg.Unit no_force_selinux_relabel, " Never do SELinux relabel";
"-v", Arg.Set verbose, " Enable debugging messages";
@@ -159,10 +162,14 @@ read the man page virt-sysprep(1).
let debug_gc = !debug_gc in
let dryrun = !dryrun in
let operations = !operations in
+ let quiet = !quiet in
let selinux_relabel = !selinux_relabel in
let trace = !trace in
let verbose = !verbose in
+ if not quiet then
+ printf "Examining the guest ...\n%!";
+
(* Connect to libguestfs. *)
let g = new G.guestfs () in
if trace then g#set_trace true;
@@ -170,7 +177,7 @@ read the man page virt-sysprep(1).
add g dryrun;
g#launch ();
- debug_gc, operations, g, selinux_relabel
+ debug_gc, operations, g, selinux_relabel, quiet
let () =
(* Inspection. *)
@@ -194,7 +201,8 @@ let () =
) mps;
(* Perform the operations. *)
- let flags = Sysprep_operation.perform_operations ?operations g root in
+ let flags =
+ Sysprep_operation.perform_operations ?operations ~quiet g root in
(* Parse flags. *)
let relabel = ref false in
diff --git a/sysprep/sysprep_operation.ml b/sysprep/sysprep_operation.ml
index 3fd8afc..fedf9a0 100644
--- a/sysprep/sysprep_operation.ml
+++ b/sysprep/sysprep_operation.ml
@@ -169,7 +169,7 @@ let list_operations () =
*)
List.iter (fun op -> print_endline op.name ) !ops
-let perform_operations ?operations g root =
+let perform_operations ?operations ?(quiet = false) g root =
assert !baked;
let ops =
@@ -181,7 +181,8 @@ let perform_operations ?operations g root =
let flags =
List.map (
fun op ->
- (* eprintf "calling %S.perform g %S\n" op.name root; *)
+ if not quiet then
+ printf "Performing %S ...\n%!" op.name;
op.perform g root
) ops in
diff --git a/sysprep/sysprep_operation.mli b/sysprep/sysprep_operation.mli
index 5fe035f..0f58510 100644
--- a/sysprep/sysprep_operation.mli
+++ b/sysprep/sysprep_operation.mli
@@ -95,5 +95,5 @@ val add_to_set : string -> set -> set
Note that this will raise [Not_found] if [name] is not
a valid operation name. *)
-val perform_operations : ?operations:set -> Guestfs.guestfs -> string -> flag list
+val perform_operations : ?operations:set -> ?quiet:bool -> Guestfs.guestfs -> string -> flag list
(** Perform all operations, or the subset listed in the [operations] set. *)
diff --git a/sysprep/virt-sysprep.pod b/sysprep/virt-sysprep.pod
index 8120c78..a8cffb6 100755
--- a/sysprep/virt-sysprep.pod
+++ b/sysprep/virt-sysprep.pod
@@ -124,6 +124,14 @@ security problem with malicious guests (CVE-2010-3851).
List the operations supported by the virt-sysprep program.
+=item B<-q>
+
+=item B<--quiet>
+
+Don't print log messages.
+
+To enable detailed logging of individual file operations, use I<-x>.
+
=item B<--selinux-relabel>
=item B<--no-selinux-relabel>
--
1.7.9.3
More information about the Libguestfs
mailing list