From: Eren Yagdiran <erenyagdiran@xxxxxxxxx> Define a 'Source' class which is an abstract base to use for different template repository sources. Initially there will be a docker source which can talk to the Docker repository REST API, but others may follow. Signed-off-by: Daniel P. Berrange <berrange@xxxxxxxxxx> --- .gitignore | 1 + configure.ac | 1 + libvirt-sandbox/image/Makefile.am | 2 ++ libvirt-sandbox/image/cli.py | 15 ++++++++------ libvirt-sandbox/image/sources/Makefile.am | 8 ++++++++ libvirt-sandbox/image/sources/Source.py | 33 +++++++++++++++++++++++++++++++ libvirt-sandbox/image/sources/__init__.py | 0 7 files changed, 54 insertions(+), 6 deletions(-) mode change 100644 => 100755 libvirt-sandbox/image/cli.py create mode 100644 libvirt-sandbox/image/sources/Makefile.am create mode 100644 libvirt-sandbox/image/sources/Source.py create mode 100644 libvirt-sandbox/image/sources/__init__.py diff --git a/.gitignore b/.gitignore index f77ea12..390d65c 100644 --- a/.gitignore +++ b/.gitignore @@ -42,6 +42,7 @@ libvirt-sandbox/LibvirtSandbox-1.0.typelib *.lo *.la *.o +*.pyc *~ libvirt-sandbox/libvirt-sandbox-init-lxc libvirt-sandbox/libvirt-sandbox-init-common diff --git a/configure.ac b/configure.ac index a8376ca..92d65f4 100644 --- a/configure.ac +++ b/configure.ac @@ -130,6 +130,7 @@ AC_OUTPUT(Makefile libvirt-sandbox/Makefile libvirt-sandbox/tests/Makefile libvirt-sandbox/image/Makefile + libvirt-sandbox/image/sources/Makefile bin/Makefile examples/Makefile docs/Makefile diff --git a/libvirt-sandbox/image/Makefile.am b/libvirt-sandbox/image/Makefile.am index 7c8da51..344a881 100644 --- a/libvirt-sandbox/image/Makefile.am +++ b/libvirt-sandbox/image/Makefile.am @@ -1,4 +1,6 @@ +SUBDIRS = sources + pythonsandboxdir = $(pythondir)/libvirt_sandbox pythonsandbox_DATA = __init__.py diff --git a/libvirt-sandbox/image/cli.py b/libvirt-sandbox/image/cli.py old mode 100644 new mode 100755 index ea04820..3bf7d58 --- a/libvirt-sandbox/image/cli.py +++ b/libvirt-sandbox/image/cli.py @@ -1,5 +1,5 @@ #!/usr/bin/python -Es -# +# -*- coding: utf-8 -*- # Authors: Daniel P. Berrange <berrange@xxxxxxxxxx> # Eren Yagdiran <erenyagdiran@xxxxxxxxx> # @@ -32,11 +32,14 @@ import sys import urllib2 import subprocess -default_index_server = "index.docker.io" -default_template_dir = "/var/lib/libvirt/templates" - -debug = True -verbose = True +import importlib +def dynamic_source_loader(name): + name = name[0].upper() + name[1:] + modname = "libvirt_sandbox.image.sources." + name + "Source" + mod = importlib.import_module(modname) + classname = name + "Source" + classimpl = getattr(mod, classname) + return classimpl() gettext.bindtextdomain("libvirt-sandbox", "/usr/share/locale") gettext.textdomain("libvirt-sandbox") diff --git a/libvirt-sandbox/image/sources/Makefile.am b/libvirt-sandbox/image/sources/Makefile.am new file mode 100644 index 0000000..48d0f33 --- /dev/null +++ b/libvirt-sandbox/image/sources/Makefile.am @@ -0,0 +1,8 @@ + +pythonimagedir = $(pythondir)/libvirt_sandbox/image/sources +pythonimage_DATA = \ + __init__.py \ + Source.py \ + $(NULL) + +EXTRA_DIST = $(pythonimage_DATA) diff --git a/libvirt-sandbox/image/sources/Source.py b/libvirt-sandbox/image/sources/Source.py new file mode 100644 index 0000000..f12b0eb --- /dev/null +++ b/libvirt-sandbox/image/sources/Source.py @@ -0,0 +1,33 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Copyright (C) 2015 Universitat Politècnica de Catalunya. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# +# Author: Eren Yagdiran <erenyagdiran@xxxxxxxxx> + +from abc import ABCMeta, abstractmethod + +class Source(): + '''The Source class defines the base interface for + all image provider source implementations. An image + provide source is able to download templates from + a repository, convert them to a host specific image + format and report commands used to invoke them.''' + + __metaclass__ = ABCMeta + def __init__(self): + pass diff --git a/libvirt-sandbox/image/sources/__init__.py b/libvirt-sandbox/image/sources/__init__.py new file mode 100644 index 0000000..e69de29 -- 2.4.3 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list