[libvirt] [sandbox PATCH v3 14/22] Image: Add run function

Cedric Bosdonnat cbosdonnat at suse.com
Tue Aug 18 09:31:05 UTC 2015


On Tue, 2015-08-18 at 06:53 +0000, Eren Yagdiran wrote:
> Run an already-built template
> If there is no execution command specified by user, source.get_command will
> find the command to invoke
> ---
>  virt-sandbox-image/virt-sandbox-image.py | 25 +++++++++++++++++++++++++
>  1 file changed, 25 insertions(+)
> 
> diff --git a/virt-sandbox-image/virt-sandbox-image.py b/virt-sandbox-image/virt-sandbox-image.py
> index c46abd4..278d19a 100755
> --- a/virt-sandbox-image/virt-sandbox-image.py
> +++ b/virt-sandbox-image/virt-sandbox-image.py
> @@ -128,6 +128,31 @@ def check_connect(connectstr):
>              raise ValueError("%s is not supported by Virt-sandbox" %connectstr)
>          return True
>  
> +def run(args):
> +    try:
> +        if args.connect is not None:
> +            check_connect(args.connect)
> +        source = dynamic_source_loader(args.source)
> +        diskfile,configfile = source.get_disk(name=args.name,templatedir=args.template_dir)

This is the place where the temporary disk file would be created. Don't
forget it's a per-sandbox disk layer. Compute the sandbox name here, use
it to create the disk layer in the sandbox state directory...

> +
> +        format = "qcow2"
> +        commandToRun = args.igniter
> +        if commandToRun is None:
> +            commandToRun = source.get_command(configfile)
> +        cmd = ['virt-sandbox']

...and add --name parameter to virt-sandbox to define that name.

--
Cedric

> +        if args.connect is not None:
> +            cmd.append("-c")
> +            cmd.append(args.connect)
> +        params = ['-m','host-image:/=%s,format=%s' %(diskfile,format),
> +               '--',
> +               commandToRun]
> +        cmd = cmd + params
> +        subprocess.call(cmd)
> +        subprocess.call(["rm", "-rf", diskfile])

Remove the temporary disk layer and the sandbox state directory here.

--
Cedric

> +    except Exception,e:
> +        print "Run Error %s" % str(e)
> +
>  def requires_name(parser):
>      parser.add_argument("name",
>                          help=_("name of the template"))





More information about the libvir-list mailing list