Fix possible double import of cubes modules
When cubes using the new layout are imported with 'cubicweb_<cube>' and with
'cubes.<cube>', the same module is imported twice.
Handle this by adding 'cubes.<cube>' to sys.modules when importing from
'cubicweb_<cube>'.
Move load_module() to a sub class _CubesLoader to share informations computed
in find_modules().
Don't handle subpackages in _CubesImporter and rely on normal import machinery
instead.
Add a test and use unittest from cubicweb.devtools.testlib which resolve to
unittest2 on PY2 with assertLogs() method.
.. -*- coding: utf-8 -*-
Migrating cubicweb instances - benefits from a distributed architecture
=======================================================================
Migrate apache & cubicweb
-------------------------
**Aim** : do the migration for N cubicweb instances hosted on a server to another with no downtime.
**Prerequisites** : have an explicit definition of the database host (not default or localhost). In our case, the database is hosted on another host.
**Steps** :
1. *on new machine* : install your environment (*pseudocode*) ::
apt-get install cubicweb cubicweb-applications apache2
2. *on old machine* : copy your cubicweb and apache configuration to the new machine ::
scp /etc/cubicweb.d/ newmachine:/etc/cubicweb.d/
scp /etc/apache2/sites-available/ newmachine:/etc/apache2/sites-available/
3. *on new machine* : start your instances ::
cubicweb start
4. *on new machine* : enable sites and modules for apache and start it, test it using by modifying your /etc/host file.
5. change dns entry from your oldmachine to newmachine
6. shutdown your *old machine* (if it doesn't host other services or your database)
7. That's it.
**Possible enhancements** : use right from the start a pound server behind your apache, that way you can add backends and smoothily migrate by shuting down backends that pound will take into account.