[libvirt] [sandbox PATCH v2 19/19] Image: Add custom environment support

Daniel P. Berrange berrange at redhat.com
Mon Aug 10 16:20:57 UTC 2015


On Tue, Aug 04, 2015 at 08:11:25PM +0000, Eren Yagdiran wrote:
> Any custom key=value pair can be used as a custom environment variable
> in virt-sandbox-image.
> e.g virt-sandbox-image run ubuntu /var/lib/libvirt/templates -c lxc:/// -i /bin/bash -e key1=val1
> ---
>  virt-sandbox-image/sources/DockerSource.py | 10 ++++++++++
>  virt-sandbox-image/sources/Source.py       |  4 ++++
>  virt-sandbox-image/virt-sandbox-image.py   | 19 +++++++++++++++++++
>  3 files changed, 33 insertions(+)
> 
> diff --git a/virt-sandbox-image/sources/DockerSource.py b/virt-sandbox-image/sources/DockerSource.py
> index 44bc238..54b68b9 100644
> --- a/virt-sandbox-image/sources/DockerSource.py
> +++ b/virt-sandbox-image/sources/DockerSource.py
> @@ -48,6 +48,12 @@ class DockerConfParser():
>            for key,value in volumes.iteritems():
>              volumelist.append(key)
>          return volumelist
> +    def getEnvs(self):
> +        lst = self.json_data['container_config']['Env']
> +        if lst is not None and isinstance(lst,list):
> +          return lst
> +        else:
> +          return []
>  
>  class DockerSource(Source):
>      default_index_server = "index.docker.io"
> @@ -411,5 +417,9 @@ class DockerSource(Source):
>          configParser = DockerConfParser(configfile)
>          return configParser.getVolumes()
>  
> +    def get_environment(self,configfile):
> +        configParser = DockerConfParser(configfile)
> +        return configParser.getEnvs()
> +
>  def debug(msg):
>      sys.stderr.write(msg)
> diff --git a/virt-sandbox-image/sources/Source.py b/virt-sandbox-image/sources/Source.py
> index 6898c15..ad82986 100644
> --- a/virt-sandbox-image/sources/Source.py
> +++ b/virt-sandbox-image/sources/Source.py
> @@ -53,3 +53,7 @@ class Source():
>      @abstractmethod
>      def get_volume(self,**args):
>        pass
> +
> +    @abstractmethod
> +    def get_env(self,**args):

Here you call it 'get_env' but in the DockerSource you call
it 'get_environment'. This causes python to immediately exit
saying that DockerSource doens't implement the API defined
by Source.


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