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 :|