[libvirt] [sandbox PATCH 03/10] Add disk parameter to virt-sandbox

Daniel P. Berrange berrange at redhat.com
Thu Jun 25 13:09:19 UTC 2015


On Thu, Jun 25, 2015 at 01:27:23PM +0200, Eren Yagdiran wrote:
> Allow users to add disk images to their sandbox. Only disk images are supported so far, but the
> parameter is intentionally designed for future changes.
> ---
>  bin/virt-sandbox.c | 37 +++++++++++++++++++++++++++++++++++++
>  1 file changed, 37 insertions(+)
> 
> diff --git a/bin/virt-sandbox.c b/bin/virt-sandbox.c
> index 1ab2f8a..ac56346 100644
> --- a/bin/virt-sandbox.c
> +++ b/bin/virt-sandbox.c
> @@ -63,6 +63,7 @@ int main(int argc, char **argv) {
>      GMainLoop *loop = NULL;
>      GError *error = NULL;
>      gchar *name = NULL;
> +    gchar **disks = NULL;
>      gchar **mounts = NULL;
>      gchar **includes = NULL;
>      gchar *includefile = NULL;
> @@ -92,6 +93,8 @@ int main(int argc, char **argv) {
>            N_("name of the sandbox"), "NAME" },
>          { "root", 'r', 0, G_OPTION_ARG_STRING, &root,
>            N_("root directory of the sandbox"), "DIR" },
> +        { "disk", ' ', 0, G_OPTION_ARG_STRING_ARRAY, &disks,
> +          N_("add a disk in the guest"), "TYPE:TARGET=SOURCE,FORMAT=FORMAT" },
>          { "mount", 'm', 0, G_OPTION_ARG_STRING_ARRAY, &mounts,
>            N_("mount a filesystem in the guest"), "TYPE:TARGET=SOURCE" },
>          { "include", 'i', 0, G_OPTION_ARG_STRING_ARRAY, &includes,
> @@ -182,6 +185,13 @@ int main(int argc, char **argv) {
>          gvir_sandbox_config_set_username(cfg, "root");
>      }
>  
> +    if (disks &&
> +        !gvir_sandbox_config_add_disk_strv(cfg, disks, &error)) {
> +        g_printerr(_("Unable to parse disks: %s\n"),
> +                   error && error->message ? error->message : _("Unknown failure"));
> +        goto cleanup;
> +    }
> +
>      if (mounts &&
>          !gvir_sandbox_config_add_mount_strv(cfg, mounts, &error)) {
>          g_printerr(_("Unable to parse mounts: %s\n"),
> @@ -319,6 +329,33 @@ inheriting the host's root filesystem.
>  NB. C<DIR> must contain a matching install of the libvirt-sandbox
>  package. This restriction may be lifted in a future version.
>  
> +=item B<--disk TYPE:TARGET=SOURCE,FORMAT=FORMAT>
> +
> +Sets up a disk inside the sandbox by using B<SOURCE> with target device B<TARGET>
> +and type B<TYPE> and format B<FORMAT>. Example: file:hda=/var/lib/sandbox/demo/tmp.qcow2,format=qcow2
> +Format is an optional parameter.
> +
> +=over 4
> +
> +=item B<TYPE>
> +
> +Type parameter can be set to "file".
> +
> +=item B<TARGET>
> +
> +Target parameter can be set to "hda" or any other libvirt supported target disk

Per the discussion on the previous set of patches, we must *not* expose the
libvirt <disk> target device string to the end user at all, because it means
the user has to know about the differences in virtualizaton technology used.

The latter patches in your series support the /dev/disk/by-tag/TAGNAME
symlink to a /dev/TARGET device node, so the user should only be
providing the "TAGNAMNE" and not the TARGET.

ie,

 -disk file:data=/var/lib/sandbox/demo/tmp.qcow2,format=qcow2

would end up creating a link /dev/disk/by-tag/data which symlinked
to /dev/vda on KVM, or /dev/sda on LXC, or /dev/xvda on Xen (hypothetical)
etc.

Regards,
Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list