[Libguestfs] [libguestfs] Add ability to set a command for firstboot and not only a script (#7)

Richard W.M. Jones rjones at redhat.com
Thu Nov 7 17:39:09 UTC 2013


> Subject: [PATCH] Add ability to set a command for firstboot and not only a
>  script

In principle yes, in practice this patch isn't right:
> ---
>  sysprep/sysprep_operation_firstboot.ml | 21 ++++++++++++---------
>  1 file changed, 12 insertions(+), 9 deletions(-)
> 
> diff --git a/sysprep/sysprep_operation_firstboot.ml b/sysprep/sysprep_operation_firstboot.ml
> index 3473c47..6f61d15 100644
> --- a/sysprep/sysprep_operation_firstboot.ml
> +++ b/sysprep/sysprep_operation_firstboot.ml
> @@ -24,20 +24,23 @@ open Common_gettext.Gettext
>  
>  module G = Guestfs
>  
> -let files = ref []
> +let params = ref []
>  
>  let firstboot_perform g root =
> -  (* Read the files and add them using the {!Firstboot} module. *)
> -  let files = List.rev !files in
> +  (* Read command or files and add them using the {!Firstboot} module. *)
> +  let params = List.rev !params in
>    let i = ref 0 in
>    List.iter (
> -    fun filename ->
> +    fun param->
>        incr i;
>        let i = !i in
> -      let content = read_whole_file filename in
> -      Firstboot.add_firstboot_script g root i content
> -  ) files;
> -  if files <> [] then [ `Created_files ] else []
> +      if Sys.file_exists param then

The trouble here is depending on the existence of a local file this
fragile.  You wouldn't find out that you'd made a mistake on the
command line until much later on (at first boot of the guest).

In virt-builder we're doing something better, I think.  Firstly there
are --firstboot & --firstboot-command options:

http://libguestfs.org/virt-builder.1.html

Secondly this is implemented without any magic:

https://github.com/libguestfs/libguestfs/blob/master/builder/builder.ml#L650

It'd be nice if virt-sysprep worked compatibly.

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
virt-df lists disk usage of guests without needing to install any
software inside the virtual machine.  Supports Linux and Windows.
http://people.redhat.com/~rjones/virt-df/




More information about the Libguestfs mailing list