ERP5 and Jupyter integrated together
authorKirill Smelkov <kirr@nexedi.com>
Wed, 27 Jan 2016 08:40:23 +0000 (11:40 +0300)
committerKirill Smelkov <kirr@nexedi.com>
Mon, 1 Feb 2016 10:21:31 +0000 (13:21 +0300)
commit0a446263e195af5abddccb3550d67dd2ba1bceaa
treebfb67839ab55e9c4a2a4e13f54ed274f9178c60b
parent7b199c9c68c60b4c430c2311e3cd67e42d010ae6
ERP5 and Jupyter integrated together

This patch teaches ERP5 software release to automatically instantiate Jupyter
notebook web UI and tune it to connect to ERP5 by default. When Jupyter is
enabled, it also installs on-server erp5_data_notebook bt5 (nexedi/erp5!29)
which handles code execution requested for Jupyter.

For ERP5 - for security and backward compatibility reasons - Jupyter
instantiation and erp5_data_notebook bt5 install happen only if jupyter is
explicitly enabled in instance parameters. The default is not to have Jupyter
out of the box.

On the other hand for Wendelin SR, which inherits from ERP5 SR, the
default is to have Jupyter out of the box, because Wendelin SR is fresh
enough without lots of backward compatibility needs, and Jupyter is
usually very handy for people who use Wendelin.

~~~~

For integration, we reuse already established in ERP5 infrastructure, to
request various slave instances, and request Jupyter in a way so it
automatically tunes and connects to balancer of one of Zope family.

Jupyter code itself is compiled by reusing
software/ipython_notebook/software.cfg, and Jupyter instance code is
reused by hooking software/ipython_notebook/instance.cfg.in into ERP5 SR
properly (the idea to override instance-jupyter not to render into
default template.cfg is taken from previous work by @tiwariayush).

~~~~

I tested this patch inside webrunner with create-erp5-site software type and
various configurations (whether to have or not have jupyter, to which zope
family to connect it, etc).

I have not tested frontend instantiation fully - because tests were done only
in webrunner, but I've tried to make sure generated buildout code is valid for
cases with frontend.

NOTE the code in this patch depends erp5_data_notebook bt5 (nexedi/erp5!29) which just got merged to erp5.git recently (see nexedi/erp5@f662b5a2)

NOTE even when erp5_data_notebook bt5 is installed, on a freshly installed ERP5, it
is required to "check site consistency" first, so that initial bt5(s) are
actually installed and erp5 is ready to function.

/cc @vpelletier, @Tyagov, @klaus, @Camata, @tiwariayush, @Kreisel, @jerome, @nexedi
/proposed-for-review-on nexedi/slapos!43
software/erp5/README.rst
software/erp5/instance-erp5-input-schema.json
software/erp5/instance-erp5-output-schema.json
software/ipython_notebook/instance.cfg.in
software/ipython_notebook/software.cfg
software/ipython_notebook/template/ERP5kernel.py.jinja
software/wendelin/software.cfg
stack/erp5/buildout.cfg
stack/erp5/instance-erp5.cfg.in
stack/erp5/instance.cfg.in