[Kimchi-devel] [PATCH] Fix issue #738 - Split Wok and Kimchi object stores
Paulo Ricardo Paz Vital
pvital at linux.vnet.ibm.com
Wed Oct 14 19:23:09 UTC 2015
Blah blah blah!!!
I did some mistakes here in my previous test. The patch is working!!
Tested-By: Paulo Vital <pvital at linux.vnet.ibm.com>
Reviewed-By: Paulo Vital <pvital at linux.vnet.ibm.com>
On Wed, 2015-10-14 at 16:05 -0300, Paulo Ricardo Paz Vital wrote:
> This patch is not loading the plugins available in Wok.
>
> I applied the first patch "Use *lib/kimchi instead of
> *lib/wok/plugins/kimchi", then this one and neither the login page I
> could see.
>
> Best regards,
> Paulo Vital.
>
> On Tue, 2015-10-13 at 18:54 -0300, Lucio Correia wrote:
> > Wok and Kimchi currently share the same object store. This
> > patch creates a specific store for Kimchi to avoid name
> > conflicts with Wok and other plugins in future.
> >
> > It also makes objectstore location a required parameter for
> > model instantiation, since there is no more default location
> > provided by Wok. Each plugin will have its own object store
> > in its own location
> >
> > Signed-off-by: Lucio Correia <luciojhc at linux.vnet.ibm.com>
> > ---
> > Makefile.am | 5 ++++-
> > contrib/wok.spec.fedora.in | 3 ++-
> > contrib/wok.spec.suse.in | 3 ++-
> > src/wok/model/model.py | 2 +-
> > src/wok/objectstore.py | 5 ++---
> > src/wok/plugins/kimchi/Makefile.am | 4 ++--
> > src/wok/plugins/kimchi/config.py.in | 4 ++++
> > src/wok/plugins/kimchi/contrib/kimchi.spec.fedora.in | 2 +-
> > src/wok/plugins/kimchi/contrib/kimchi.spec.suse.in | 2 +-
> > src/wok/plugins/kimchi/mockmodel.py | 2 +-
> > src/wok/plugins/kimchi/root.py | 7 +++++--
> > src/wok/plugins/kimchi/tests/test_yumparser.py | 3 ++-
> > src/wok/server.py | 2 +-
> > 13 files changed, 28 insertions(+), 16 deletions(-)
> >
> > diff --git a/Makefile.am b/Makefile.am
> > index 8d2f346..54bc521 100644
> > --- a/Makefile.am
> > +++ b/Makefile.am
> > @@ -83,6 +83,8 @@ install-deb: install
> > cp -R $(top_srcdir)/contrib/wokd
> > -upstart.conf.debian
> > \
> > $(DESTDIR)/etc/init/wokd.conf; \
> > fi
> > + $(MKDIR_P) -p $(DESTDIR)/$(localstatedir)/lib/wok/
> > + touch $(DESTDIR)/$(localstatedir)/lib/wok/objectstore
> > $(MKDIR_P) $(DESTDIR)/usr/lib/firewalld/services
> > cp -R $(top_srcdir)/src/firewalld.xml \
> > $(DESTDIR)/usr/lib/firewalld/services/wokd.xml
> > @@ -128,12 +130,13 @@ install-data-local:
> > mkdir -p $(DESTDIR)/etc/init.d/; \
> > $(INSTALL_DATA) contrib/wokd.sysvinit
> > $(DESTDIR)/etc/init.d/wokd; \
> > chmod +x $(DESTDIR)/etc/init.d/wokd; \
> > - fi; \
> > + fi; \
> > if test -d /usr/lib/firewalld/services/; then \
> > mkdir -p $(DESTDIR)/usr/lib/firewalld/services/; \
> > $(INSTALL_DATA) src/firewalld.xml
> > $(DESTDIR)/usr/lib/firewalld/services/wokd.xml; \
> > fi; \
> > mkdir -p $(DESTDIR)/$(localstatedir)/lib/wok/
> > + touch $(DESTDIR)/$(localstatedir)/lib/wok/objectstore
> > mkdir -p $(DESTDIR)/$(localstatedir)/log/wok/
> > touch $(DESTDIR)/$(localstatedir)/log/wok/wok-access.log
> > touch $(DESTDIR)/$(localstatedir)/log/wok/wok-error.log
> > diff --git a/contrib/wok.spec.fedora.in
> > b/contrib/wok.spec.fedora.in
> > index 8941ff7..ad9988e 100644
> > --- a/contrib/wok.spec.fedora.in
> > +++ b/contrib/wok.spec.fedora.in
> > @@ -122,6 +122,7 @@ rm -rf $RPM_BUILD_ROOT
> > %if 0%{?with_systemd}
> > %{_sysconfdir}/nginx/conf.d/wok.conf
> > %{_sharedstatedir}/wok/
> > +%{_sharedstatedir}/wok/objectstore
> > %{_localstatedir}/log/wok/*
> > %{_localstatedir}/log/wok/
> > %{_unitdir}/wokd.service
> > @@ -135,7 +136,7 @@ rm -rf $RPM_BUILD_ROOT
> > %endif
> >
> > %changelog
> > -* Fri Jun 19 2015 Lucio Correia <luciojhc at linux.vnet.ibm.com> 1.6
> > +* Fri Jun 19 2015 Lucio Correia <luciojhc at linux.vnet.ibm.com> 2.0
> > - Rename to wokd
> > - Remove kimchi specifics
> >
> > diff --git a/contrib/wok.spec.suse.in b/contrib/wok.spec.suse.in
> > index 161b996..4b5e4f3 100644
> > --- a/contrib/wok.spec.suse.in
> > +++ b/contrib/wok.spec.suse.in
> > @@ -95,6 +95,7 @@ rm -rf $RPM_BUILD_ROOT
> > %{_sysconfdir}/nginx/conf.d/wok.conf.in
> > %{_sysconfdir}/nginx/conf.d/wok.conf
> > %{_var}/lib/wok/
> > +%{_var}/lib/wok/objectstore
> > %{_localstatedir}/log/wok/*
> > %{_localstatedir}/log/wok/
> > %{_mandir}/man8/wokd.8.gz
> > @@ -115,7 +116,7 @@ rm -rf $RPM_BUILD_ROOT
> >
> >
> > %changelog
> > -* Fri Jun 19 2015 Lucio Correia <luciojhc at linux.vnet.ibm.com> 1.6
> > +* Fri Jun 19 2015 Lucio Correia <luciojhc at linux.vnet.ibm.com> 2.0
> > - Rename to wokd
> > - Remove kimchi specifics
> >
> > diff --git a/src/wok/model/model.py b/src/wok/model/model.py
> > index e8826f2..cb213d3 100644
> > --- a/src/wok/model/model.py
> > +++ b/src/wok/model/model.py
> > @@ -28,7 +28,7 @@ from wok.utils import import_module,
> > listPathModules
> >
> >
> > class Model(BaseModel):
> > - def __init__(self, objstore_loc=None):
> > + def __init__(self, objstore_loc):
> >
> > self.objstore = ObjectStore(objstore_loc)
> > kargs = {'objstore': self.objstore}
> > diff --git a/src/wok/objectstore.py b/src/wok/objectstore.py
> > index 670a363..810c5be 100644
> > --- a/src/wok/objectstore.py
> > +++ b/src/wok/objectstore.py
> > @@ -29,7 +29,6 @@ except ImportError:
> > from ordereddict import OrderedDict
> >
> >
> > -from wok import config
> > from wok.exception import NotFoundError
> > from wok.utils import wok_log
> >
> > @@ -83,10 +82,10 @@ class ObjectStoreSession(object):
> >
> >
> > class ObjectStore(object):
> > - def __init__(self, location=None):
> > + def __init__(self, location):
> > self._lock = threading.Semaphore()
> > self._connections = OrderedDict()
> > - self.location = location or config.get_object_store()
> > + self.location = location
> > with self._lock:
> > self._init_db()
> >
> > diff --git a/src/wok/plugins/kimchi/Makefile.am
> > b/src/wok/plugins/kimchi/Makefile.am
> > index 1080005..404c3f4 100644
> > --- a/src/wok/plugins/kimchi/Makefile.am
> > +++ b/src/wok/plugins/kimchi/Makefile.am
> > @@ -99,7 +99,7 @@ config.py: config.py.in Makefile
> > install-deb: install
> > cp -R $(top_srcdir)/contrib/DEBIAN $(DESTDIR)/
> > mkdir -p $(DESTDIR)/$(localstatedir)/lib/kimchi
> > - touch $(DESTDIR)/$(localstatedir)/lib/wok/objectstore
> > + touch $(DESTDIR)/$(localstatedir)/lib/kimchi/objectstore
> > mkdir -p $(DESTDIR)/$(localstatedir)/lib/kimchi/vnc-tokens
> > mkdir -p
> > $(DESTDIR)/$(localstatedir)/lib/kimchi/debugreports
> > mkdir -p
> > $(DESTDIR)/$(localstatedir)/lib/kimchi/screenshots
> > @@ -140,7 +140,7 @@ ChangeLog:
> >
> > install-data-local:
> > $(MKDIR_P) $(DESTDIR)/$(localstatedir)/lib/kimchi/
> > - touch $(DESTDIR)/$(localstatedir)/lib/wok/objectstore
> > + touch $(DESTDIR)/$(localstatedir)/lib/kimchi/objectstore
> > $(MKDIR_P) $(DESTDIR)$(kimchidir)
> > $(INSTALL_DATA) API.json $(DESTDIR)$(kimchidir)/API.json
> > mkdir -p $(DESTDIR)/$(localstatedir)/lib/kimchi/vnc-tokens
> > diff --git a/src/wok/plugins/kimchi/config.py.in
> > b/src/wok/plugins/kimchi/config.py.in
> > index 6ae0ccd..43e94e1 100644
> > --- a/src/wok/plugins/kimchi/config.py.in
> > +++ b/src/wok/plugins/kimchi/config.py.in
> > @@ -42,6 +42,10 @@ def get_debugreports_path():
> > return os.path.join(PluginPaths('kimchi').state_dir,
> > 'debugreports')
> >
> >
> > +def get_object_store():
> > + return os.path.join(PluginPaths('kimchi').state_dir,
> > 'objectstore')
> > +
> > +
> > def get_screenshot_path():
> > return os.path.join(PluginPaths('kimchi').state_dir,
> > 'screenshots')
> >
> > diff --git a/src/wok/plugins/kimchi/contrib/kimchi.spec.fedora.in
> > b/src/wok/plugins/kimchi/contrib/kimchi.spec.fedora.in
> > index e4b7b6d..41a8a86 100644
> > --- a/src/wok/plugins/kimchi/contrib/kimchi.spec.fedora.in
> > +++ b/src/wok/plugins/kimchi/contrib/kimchi.spec.fedora.in
> > @@ -100,10 +100,10 @@ rm -rf $RPM_BUILD_ROOT
> > %{_sysconfdir}/kimchi/
> > %{_sharedstatedir}/kimchi/debugreports/
> > %{_sharedstatedir}/kimchi/isos/
> > +%{_sharedstatedir}/kimchi/objectstore
> > %{_sharedstatedir}/kimchi/screenshots/
> > %{_sharedstatedir}/kimchi/vnc-tokens/
> > %{_sharedstatedir}/kimchi/
> > -%{_sharedstatedir}/wok/objectstore
> >
> >
> > %changelog
> > diff --git a/src/wok/plugins/kimchi/contrib/kimchi.spec.suse.in
> > b/src/wok/plugins/kimchi/contrib/kimchi.spec.suse.in
> > index 03dfa7b..6fbdb3e 100644
> > --- a/src/wok/plugins/kimchi/contrib/kimchi.spec.suse.in
> > +++ b/src/wok/plugins/kimchi/contrib/kimchi.spec.suse.in
> > @@ -87,10 +87,10 @@ rm -rf $RPM_BUILD_ROOT
> > %{_sysconfdir}/kimchi/
> > %{_var}/lib/kimchi/debugreports/
> > %{_var}/lib/kimchi/isos/
> > +%{_var}/lib/kimchi/objectstore
> > %{_var}/lib/kimchi/screenshots/
> > %{_var}/lib/kimchi/vnc-tokens/
> > %{_var}/lib/kimchi/
> > -%{_var}/lib/wok/objectstore
> >
> >
> > %changelog
> > diff --git a/src/wok/plugins/kimchi/mockmodel.py
> > b/src/wok/plugins/kimchi/mockmodel.py
> > index 0832b20..4dd063c 100644
> > --- a/src/wok/plugins/kimchi/mockmodel.py
> > +++ b/src/wok/plugins/kimchi/mockmodel.py
> > @@ -67,7 +67,7 @@ class MockModel(Model):
> > _undefineDomain = libvirt.virDomain.undefine
> > _libvirt_get_vol_path = LibvirtVMTemplate._get_volume_path
> >
> > - def __init__(self, objstore_loc=None):
> > + def __init__(self, objstore_loc):
> > # Override osinfo.defaults to ajust the values according
> > to
> > # test:///default driver
> > defaults = dict(osinfo.defaults)
> > diff --git a/src/wok/plugins/kimchi/root.py
> > b/src/wok/plugins/kimchi/root.py
> > index 1e2bfc7..21c3131 100644
> > --- a/src/wok/plugins/kimchi/root.py
> > +++ b/src/wok/plugins/kimchi/root.py
> > @@ -33,12 +33,14 @@ from model import model as kimchiModel
> >
> > class KimchiRoot(WokRoot):
> > def __init__(self, wok_options):
> > + objstore_loc = config.get_object_store()
> > if hasattr(wok_options, "model"):
> > self.model = wok_options.model
> > elif wok_options.test:
> > - self.model = mockmodel.MockModel()
> > + mockstore = "%s-mock" % os.path.abspath(objstore_loc)
> > + self.model = mockmodel.MockModel(mockstore)
> > else:
> > - self.model = kimchiModel.Model()
> > + self.model =
> > kimchiModel.Model(objstore_loc=objstore_loc)
> >
> > dev_env = wok_options.environment != 'production'
> > super(KimchiRoot, self).__init__(self.model, dev_env)
> > @@ -57,6 +59,7 @@ class KimchiRoot(WokRoot):
> > self.messages = messages
> >
> > make_dirs = [
> > +
> > os.path.dirname(os.path.abspath(config.get_object_store())),
> > os.path.abspath(config.get_distros_store()),
> > os.path.abspath(config.get_debugreports_path()),
> > os.path.abspath(config.get_screenshot_path())
> > diff --git a/src/wok/plugins/kimchi/tests/test_yumparser.py
> > b/src/wok/plugins/kimchi/tests/test_yumparser.py
> > index be5e95c..c69f574 100644
> > --- a/src/wok/plugins/kimchi/tests/test_yumparser.py
> > +++ b/src/wok/plugins/kimchi/tests/test_yumparser.py
> > @@ -23,6 +23,7 @@ import unittest
> >
> > from wok.rollbackcontext import RollbackContext
> >
> > +from wok.plugins.kimchi import config
> > from wok.plugins.kimchi.model import model
> > from wok.plugins.kimchi.yumparser import delete_repo_from_file,
> > get_repo_files
> > from wok.plugins.kimchi.yumparser import
> > get_yum_packages_list_update
> > @@ -34,7 +35,7 @@ TEMP_REPO_FILE = ''
> >
> >
> > def _is_yum_distro():
> > - inst = model.Model('test:///default')
> > + inst = model.Model('test:///default',
> > config.get_object_store())
> > repo_type = inst.capabilities_lookup()['repo_mngt_tool']
> > return repo_type == 'yum'
> >
> > diff --git a/src/wok/server.py b/src/wok/server.py
> > index c6f12dd..071c425 100644
> > --- a/src/wok/server.py
> > +++ b/src/wok/server.py
> > @@ -124,7 +124,7 @@ class Server(object):
> > if hasattr(options, 'model'):
> > model_instance = options.model
> > else:
> > - model_instance = model.Model()
> > + model_instance =
> > model.Model(config.get_object_store())
> >
> > for ident, node in sub_nodes.items():
> > if node.url_auth:
>
> _______________________________________________
> Kimchi-devel mailing list
> Kimchi-devel at ovirt.org
> http://lists.ovirt.org/mailman/listinfo/kimchi-devel
>
More information about the Kimchi-devel
mailing list