[Libguestfs] [PATCH 20/67] sysprep: Add "notes" field for notes on shortcomings, bugs, etc.

Richard W.M. Jones rjones at redhat.com
Sat Aug 24 11:04:20 UTC 2013


From: "Richard W.M. Jones" <rjones at redhat.com>

Instead of keeping this information as comments in the source, put it
into the virt-sysprep(1) man page.

(cherry picked from commit 93f8baeb9a07cbbf9bdaa5d10c98c1c9d6af96f7)
---
 sysprep/Makefile.am                       |  2 +-
 sysprep/sysprep_operation.ml              | 24 ++++++++++++++++++++++++
 sysprep/sysprep_operation.mli             |  4 ++++
 sysprep/sysprep_operation_bash_history.ml |  4 ++++
 sysprep/sysprep_operation_firstboot.ml    |  5 +++--
 sysprep/sysprep_operation_hostname.ml     |  6 ++++++
 sysprep/sysprep_operation_ssh_userdir.ml  |  4 ++++
 sysprep/sysprep_operation_user_account.ml |  4 ++++
 sysprep/virt-sysprep.pod                  |  2 +-
 9 files changed, 51 insertions(+), 4 deletions(-)

diff --git a/sysprep/Makefile.am b/sysprep/Makefile.am
index fce639f..6bc5873 100644
--- a/sysprep/Makefile.am
+++ b/sysprep/Makefile.am
@@ -1,5 +1,5 @@
 # libguestfs virt-sysprep tool
-# Copyright (C) 2012 Red Hat Inc.
+# Copyright (C) 2012-2013 Red Hat Inc.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/sysprep/sysprep_operation.ml b/sysprep/sysprep_operation.ml
index 64a6390..9a41956 100644
--- a/sysprep/sysprep_operation.ml
+++ b/sysprep/sysprep_operation.ml
@@ -31,6 +31,7 @@ type operation = {
   enabled_by_default : bool;
   heading : string;
   pod_description : string option;
+  pod_notes : string option;
   extra_args : ((Arg.key * Arg.spec * Arg.doc) * string) list;
   perform_on_filesystems : callback option;
   perform_on_devices : callback option;
@@ -40,6 +41,7 @@ let defaults = {
   enabled_by_default = false;
   heading = "";
   pod_description = None;
+  pod_notes = None;
   extra_args = [];
   perform_on_filesystems = None;
   perform_on_devices = None;
@@ -123,6 +125,20 @@ and check op =
         op.name;
       exit 1
     )
+  );
+  (match op.pod_notes with
+  | None -> ()
+  | Some notes ->
+    let n = String.length notes in
+    if n = 0 then (
+      eprintf (f_"virt-sysprep: operation %s has no POD notes\n") op.name;
+      exit 1
+    );
+    if notes.[n-1] = '\n' then (
+      eprintf (f_"virt-sysprep: POD notes for %s must not end with newline\n")
+        op.name;
+      exit 1
+    )
   )
 
 let extra_args () =
@@ -147,6 +163,14 @@ let dump_pod () =
       (match op.pod_description with
       | None -> ()
       | Some description -> printf "%s\n\n" description
+      );
+      (match op.pod_notes with
+      | None -> ()
+      | Some notes ->
+        printf "=head3 ";
+        printf (f_"Notes on %s") op.name;
+        printf "\n\n";
+        printf "%s\n\n" notes
       )
   ) !all_operations
 
diff --git a/sysprep/sysprep_operation.mli b/sysprep/sysprep_operation.mli
index 6b792cd..309ac89 100644
--- a/sysprep/sysprep_operation.mli
+++ b/sysprep/sysprep_operation.mli
@@ -38,6 +38,10 @@ type operation = {
   pod_description : string option;
   (** POD-format long description, used for the man page. *)
 
+  pod_notes : string option;
+  (** POD-format notes, used for the man page to describe any
+      problems, shortcomings or bugs with this operation. *)
+
   extra_args : ((Arg.key * Arg.spec * Arg.doc) * string) list;
   (** Extra command-line arguments, if any.  eg. The [hostname]
       operation has an extra [--hostname] parameter.
diff --git a/sysprep/sysprep_operation_bash_history.ml b/sysprep/sysprep_operation_bash_history.ml
index 56da23e..f9efa47 100644
--- a/sysprep/sysprep_operation_bash_history.ml
+++ b/sysprep/sysprep_operation_bash_history.ml
@@ -41,6 +41,10 @@ let op = {
     pod_description = Some (s_"\
 Remove the bash history of user \"root\" and any other users
 who have a C<.bash_history> file in their home directory.");
+    pod_notes = Some (s_"\
+Currently this only looks in C</root> and C</home/*> for
+home directories, so users with home directories in other
+locations won't have the bash history removed.");
     perform_on_filesystems = Some bash_history_perform;
 }
 
diff --git a/sysprep/sysprep_operation_firstboot.ml b/sysprep/sysprep_operation_firstboot.ml
index 7c1c497..d2fc72b 100644
--- a/sysprep/sysprep_operation_firstboot.ml
+++ b/sysprep/sysprep_operation_firstboot.ml
@@ -67,10 +67,11 @@ configuration that must run in the context of the guest
 operating system, for example C<yum update>.
 
 Output or errors from the scripts are written to
-C<~root/virt-sysprep-firstboot.log> (in the guest).
+C<~root/virt-sysprep-firstboot.log> (in the guest).");
 
+    pod_notes = Some (s_"\
 Currently this is only implemented for Linux guests using
-either System V init, or systemd.");
+either SysVinit-style scripts, Upstart or systemd.");
 
     extra_args = [
       ("--firstboot", Arg.String (fun s -> files := s :: !files),
diff --git a/sysprep/sysprep_operation_hostname.ml b/sysprep/sysprep_operation_hostname.ml
index ec199f5..f880f09 100644
--- a/sysprep/sysprep_operation_hostname.ml
+++ b/sysprep/sysprep_operation_hostname.ml
@@ -89,17 +89,23 @@ let op = {
     name = "hostname";
     enabled_by_default = true;
     heading = s_"Change the hostname of the guest";
+
     pod_description = Some (s_"\
 This operation changes the hostname of the guest to the value
 given in the I<--hostname> parameter.
 
 If the I<--hostname> parameter is not given, then the hostname is changed
 to C<localhost.localdomain>.");
+
+    pod_notes = Some (s_"\
+Currently this can only set the hostname on Linux guests.");
+
     extra_args = [
       ("--hostname", Arg.Set_string hostname, s_"hostname" ^ " " ^ s_"New hostname"),
       s_"\
 Change the hostname.  If not given, defaults to C<localhost.localdomain>."
     ];
+
     perform_on_filesystems = Some hostname_perform;
 }
 
diff --git a/sysprep/sysprep_operation_ssh_userdir.ml b/sysprep/sysprep_operation_ssh_userdir.ml
index 54216f3..59cce9d 100644
--- a/sysprep/sysprep_operation_ssh_userdir.ml
+++ b/sysprep/sysprep_operation_ssh_userdir.ml
@@ -41,6 +41,10 @@ let op = {
     pod_description = Some (s_"\
 Remove the C<.ssh> directory of user \"root\" and any other
 users who have a C<.ssh> directory in their home directory.");
+    pod_notes = Some (s_"\
+Currently this only looks in C</root> and C</home/*> for
+home directories, so users with home directories in other
+locations won't have the ssh files removed.");
     perform_on_filesystems = Some ssh_userdir_perform;
 }
 
diff --git a/sysprep/sysprep_operation_user_account.ml b/sysprep/sysprep_operation_user_account.ml
index 0be7772..fc39bc8 100644
--- a/sysprep/sysprep_operation_user_account.ml
+++ b/sysprep/sysprep_operation_user_account.ml
@@ -66,6 +66,10 @@ let op = {
     pod_description = Some (s_"\
 Remove all the user accounts and their home directories.
 The \"root\" account is not removed.");
+    pod_notes = Some (s_"\
+Currently this does not remove the user accounts from
+C</etc/shadow>.  This is because there is no lens for
+the shadow password file in Augeas.");
     perform_on_filesystems = Some user_account_perform;
 }
 
diff --git a/sysprep/virt-sysprep.pod b/sysprep/virt-sysprep.pod
index 73a3b29..5b4b058 100755
--- a/sysprep/virt-sysprep.pod
+++ b/sysprep/virt-sysprep.pod
@@ -512,6 +512,6 @@ Wanlong Gao, Fujitsu Ltd.
 
 =head1 COPYRIGHT
 
-Copyright (C) 2011-2012 Red Hat Inc.
+Copyright (C) 2011-2013 Red Hat Inc.
 
 Copyright (C) 2012 Fujitsu Ltd.
-- 
1.8.3.1




More information about the Libguestfs mailing list