[libvirt] [PATCH sandbox v5 09/20] Image: Add get_command function to Source
Cedric Bosdonnat
cbosdonnat at suse.com
Wed Sep 9 11:59:18 UTC 2015
On Tue, 2015-09-08 at 17:29 +0100, Daniel P. Berrange wrote:
> From: Eren Yagdiran <erenyagdiran at gmail.com>
>
> Provide a way to know how a template can be started depending on the used source
> DockerSource will need to parse the topmost config file in order to find the igniter command
>
> Signed-off-by: Daniel P. Berrange <berrange at redhat.com>
> ---
> libvirt-sandbox/image/sources/DockerSource.py | 31 +++++++++++++++++++++++++++
> libvirt-sandbox/image/sources/Source.py | 12 +++++++++++
> 2 files changed, 43 insertions(+)
>
> diff --git a/libvirt-sandbox/image/sources/DockerSource.py b/libvirt-sandbox/image/sources/DockerSource.py
> index ab18b52..2607011 100644
> --- a/libvirt-sandbox/image/sources/DockerSource.py
> +++ b/libvirt-sandbox/image/sources/DockerSource.py
> @@ -29,6 +29,16 @@ import os
> import subprocess
> import shutil
>
> +class DockerConfParser():
> +
> + def __init__(self,jsonfile):
> + with open(jsonfile) as json_file:
> + self.json_data = json.load(json_file)
> + def getCommand(self):
> + return self.json_data['config']['Cmd']
> + def getEntrypoint(self):
> + return self.json_data['config']['Entrypoint']
> +
> class DockerSource(Source):
>
> www_auth_username = None
> @@ -345,5 +355,26 @@ class DockerSource(Source):
> parent = None
> imagetagid = parent
>
> + def _get_template_data(self, templatename, templatedir):
> + imageList = self._get_image_list(templatename, templatedir)
> + toplayer = imageList[0]
> + diskfile = templatedir + "/" + toplayer + "/template.qcow2"
> + configfile = templatedir + "/" + toplayer + "/template.json"
> + return configfile, diskfile
> +
> + def get_command(self, templatename, templatedir, userargs):
> + configfile, diskfile = self._get_template_data(templatename, templatedir)
> + configParser = DockerConfParser(configfile)
> + cmd = configParser.getCommand()
> + entrypoint = configParser.getEntrypoint()
> + if entrypoint is None:
> + entrypoint = []
> + if cmd is None:
> + cmd = []
> + if userargs is not None and len(userargs) > 0:
> + return entrypoint + userargs
> + else:
> + return entrypoint + cmd
> +
> def debug(msg):
> sys.stderr.write(msg)
> diff --git a/libvirt-sandbox/image/sources/Source.py b/libvirt-sandbox/image/sources/Source.py
> index 4aea5c9..4305d0b 100644
> --- a/libvirt-sandbox/image/sources/Source.py
> +++ b/libvirt-sandbox/image/sources/Source.py
> @@ -71,3 +71,15 @@ class Source():
> Delete all local files associated with the template
> """
> pass
> +
> + @abstractmethod
> + def get_command(self, templatename, templatedir, userargs):
> + """
> + :param templatename: name of the template image to query
> + :param templatedir: local directory path in which templates are stored
> + :param userargs: user specified arguments to run
> +
> + Get the command line to invoke in the container. If userargs
> + is specified, then this should override the default args in
> + the image"""
> + pass
ACK
--
Cedric
More information about the libvir-list
mailing list