[libvirt] [sandbox PATCH v4 13/21] Image: Add get_disk function to Source

Daniel P. Berrange berrange at redhat.com
Fri Sep 4 13:12:53 UTC 2015


On Fri, Aug 28, 2015 at 01:47:41PM +0000, Eren Yagdiran wrote:
> Provide a way to know which disk image to use for the sandbox depending on the used source
> DockerSource will need to locate the topmost disk image among all the layers images
> ---
>  virt-sandbox-image/sources/DockerSource.py | 16 ++++++++++++++++
>  virt-sandbox-image/sources/Source.py       |  4 ++++
>  virt-sandbox-image/virt-sandbox-image.py   |  9 +++++++++
>  3 files changed, 29 insertions(+)
> 
> diff --git a/virt-sandbox-image/sources/DockerSource.py b/virt-sandbox-image/sources/DockerSource.py
> index 3e0362b..87fbcf3 100644
> --- a/virt-sandbox-image/sources/DockerSource.py
> +++ b/virt-sandbox-image/sources/DockerSource.py
> @@ -372,6 +372,22 @@ class DockerSource(Source):
>                      parent = None
>              imagetagid = parent
>  
> +    def get_disk(self,**args):
> +        name = args['name']
> +        destdir = args['templatedir']
> +        sandboxid = args['id']
> +        imageList = self._get_image_list(name,destdir)
> +        toplayer = imageList[0]
> +        diskfile = destdir + "/" + toplayer + "/template.qcow2"
> +        configfile = destdir + "/" + toplayer + "/template.json"
> +        tempfile = destdir + "/" + toplayer + "/" + sandboxid + ".qcow2"

This is storing the per-sandbox image file inside the
template directory which is not what we want. We should
be using the storage_dir instead of template_dir for the
per instance image.

> +        cmd = ["qemu-img","create","-q","-f","qcow2"]
> +        cmd.append("-o")
> +        cmd.append("backing_fmt=qcow2,backing_file=%s" % diskfile)
> +        cmd.append(tempfile)
> +        subprocess.call(cmd)
> +        return (tempfile,configfile)
> +
>      def get_command(self,configfile):
>          configParser = DockerConfParser(configfile)
>          commandToRun = configParser.getRunCommand()

> +def requires_id(parser):
> +    randomid = ''.join(random.choice(string.lowercase) for i in range(10))
> +    parser.add_argument("-d","--id",
> +                        default=randomid,
> +                        help=_("id of the running sandbox"))

This is currently just used to form the per-instance image filename.
We should also use this for the libvirt guest name too. So I'd
suggest we just call this  '-n' / '--name' to match the virt-sandbox
arg syntax and have a prefix on it eg  sandboxXXXXXXX where XXXXX
is the random suffix

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