[buildout] parts = instance publish-connection-parameter ## Monitoring part XXX whe should not have to specify all parts like this ## Parts to add for monitoring certificate-authority cron cron-entry-monitor cron-entry-rss deploy-index deploy-settings-cgi deploy-status-cgi deploy-status-history-cgi setup-static-files certificate-authority zero-parameters public-symlink cgi-httpd-wrapper cgi-httpd-graceful-wrapper monitor-promise monitor-instance-log-access ## Monitor for ipython monitor-current-log-access monitor-deploy-set-password-cgi erp5-kernel kernel-json custom-js extends = {{ monitor_template }} eggs-directory = {{ eggs_directory }} develop-eggs-directory = {{ develop_eggs_directory }} offline = true [slapconfiguration] recipe = slapos.cookbook:slapconfiguration computer = ${slap-connection:computer-id} partition = ${slap-connection:partition-id} url = ${slap-connection:server-url} key = ${slap-connection:key-file} cert = ${slap-connection:cert-file} [instance-parameter] port = 8888 host = ${slapconfiguration:ipv6-random} cert_file = ${generate-certificate:cert_file} key_file = ${generate-certificate:key_file} logfile = ${directory:log}/ipython_notebook.log notebook_dir = ${directory:notebook_dir} [dynamic-jinja2-template-base] recipe = slapos.recipe.template:jinja2 mode = 0644 [generate-certificate] ; TODO: there is a slapos recipe to generate certificates. Use it instead recipe = plone.recipe.command command = if [ ! -e ${instance-parameter:key_file} ] then {{ openssl_output }} req -x509 -nodes -days 3650 \ -subj "/C=AA/ST=X/L=X/O=Dis/CN=${instance-parameter:host}" \ -newkey rsa:1024 -keyout ${instance-parameter:key_file} \ -out ${instance-parameter:cert_file} fi update-command = ${:command} cert_file = ${directory:etc}/ipython_notebook_cert.crt key_file = ${directory:etc}/ipython_notebook_cert.key [instance] recipe = slapos.cookbook:wrapper command-line = {{ bin_directory }}/ipython notebook --no-browser --matplotlib=inline --ip=${instance-parameter:host} --port=${instance-parameter:port} --port-retries=0 --certfile=${instance-parameter:cert_file} --keyfile=${instance-parameter:key_file} --notebook-dir=${instance-parameter:notebook_dir} --logfile=${instance-parameter:logfile} --config=${ipython-notebook-config:rendered} # Add 'log-level' alias to 'DEBUG' so as to log requests being done while running # of service ipython_notebook. --log-level="DEBUG" wrapper-path = ${directory:service}/ipython_notebook parameters-extra = true # Explicitly define IPython Directory to be used while starting ipython notebook environment = IPYTHONDIR=${directory:ipython_dir} [ipython-notebook-config] <= dynamic-jinja2-template-base template = {{ ipython_notebook_config_location }}/{{ ipython_notebook_config_filename }} rendered = ${directory:etc}/ipython_notebook_config.py mode = 0744 context = raw config_cfg ${buildout:directory}/knowledge0.cfg [monitor-current-log-access] < = monitor-directory-access source = ${instance-parameter:logfile} [monitor-deploy-set-password-cgi] <= dynamic-jinja2-template-base template = {{ ipython_notebook_set_password_location }}/{{ ipython_notebook_set_password_filename }} rendered = ${monitor-directory:knowledge0-cgi}/${:filename} filename = ipython-notebook-password.cgi mode = 0744 context = raw config_cfg ${buildout:directory}/knowledge0.cfg raw python_executable {{ bin_directory }}/ipython key pwd monitor-directory:knowledge0-cgi key this_file :filename key httpd_graceful cgi-httpd-graceful-wrapper:rendered [directory] recipe = slapos.cookbook:mkdirectory home = ${buildout:directory} etc = ${:home}/etc var = ${:home}/var script = ${:etc}/run/ service = ${:etc}/service promise = ${:etc}/promise/ log = ${:var}/log notebook_dir = ${:var}/notebooks # Add folders to explicitly define ipython directory ipython_dir = ${:home}/ipython ipython_kernel_dir = ${:ipython_dir}/kernels erp5_kernel_dir = ${:ipython_kernel_dir}/ERP5 [publish-connection-parameter] recipe = slapos.cookbook:publish url = https://[${instance-parameter:host}]:${instance-parameter:port} monitor_url = ${monitor-parameters:url} [erp5-kernel] <= dynamic-jinja2-template-base template = {{ erp5_kernel_location }}/{{ erp5_kernel_filename }} rendered = ${directory:erp5_kernel_dir}/ERP5kernel.py # Use ipython as executable python as we'll be needing requests library in kernel context = raw python_executable {{ bin_directory }}/ipython [kernel-json] <= dynamic-jinja2-template-base template = {{ kernel_json_location }}/{{ kernel_json_filename }} rendered = ${directory:erp5_kernel_dir}/kernel.json # Use python2.7 executable bin file for kernel config context = raw python_executable {{ python_executable }} key kernel_dir erp5-kernel:rendered raw display_name ERP5 raw language_name python [custom-js] <= dynamic-jinja2-template-base template = {{ custom_js_location }}/{{ custom_js_filename }} rendered = ${directory:ipython_dir}/profile_default/static/custom/custom.js mode = 0744