From 44e9796c782105ffca59360681c0640600c60648 Mon Sep 17 00:00:00 2001
From: Alain Takoudjou <alain.takoudjou@nexedi.com>
Date: Mon, 21 Mar 2016 16:38:25 +0100
Subject: [PATCH] Add monitor2 to slaprunner software release

---
 software/slaprunner/common.cfg                |  12 +-
 software/slaprunner/httpd_conf.in             |  62 +-------
 .../slaprunner/instance-resilient.cfg.jinja2  |  35 ++++-
 .../slaprunner/instance-runner-export.cfg.in  |  32 +---
 .../slaprunner/instance-runner-import.cfg.in  |  57 +++-----
 software/slaprunner/instance-runner.cfg       | 138 +++++++++---------
 6 files changed, 137 insertions(+), 199 deletions(-)

diff --git a/software/slaprunner/common.cfg b/software/slaprunner/common.cfg
index 3bef93928..6bf1c22e0 100644
--- a/software/slaprunner/common.cfg
+++ b/software/slaprunner/common.cfg
@@ -21,7 +21,7 @@ extends =
   ../../stack/slapos.cfg
   ../../stack/flask.cfg
   ../../stack/resilient/buildout.cfg
-  ../../stack/monitor/buildout.cfg
+  ../../stack/monitor2/buildout.cfg
 
 # stacks are listed from most generic to most specific,
 # to avoid versioning issues
@@ -54,7 +54,7 @@ mode = 0644
 recipe = slapos.recipe.template
 url = ${:_profile_base_location_}/instance-runner.cfg
 output = ${buildout:directory}/template-runner.cfg.in
-md5sum = 61297b0882cc9d674f4099b8abdd413f
+md5sum = 04f5cd311b452836b76808cf29f5a23d
 mode = 0644
 
 [template-runner-import-script]
@@ -69,7 +69,7 @@ mode = 0644
 recipe = slapos.recipe.template
 url = ${:_profile_base_location_}/instance-runner-import.cfg.in
 output = ${buildout:directory}/instance-runner-import.cfg
-md5sum = 6c0a0b0bf28cbcb63831a818edbd6a5d
+md5sum = 8ae80f9a9d5523219e1c9065f1cab6d8
 mode = 0644
 
 [template-runner-export-script]
@@ -84,13 +84,13 @@ mode = 0644
 recipe = slapos.recipe.template
 url = ${:_profile_base_location_}/instance-runner-export.cfg.in
 output = ${buildout:directory}/instance-runner-export.cfg
-md5sum = 994e355d713f90bcc17e4b54da65f354
+md5sum = d2c374858d421247dfabcf38589a904f
 mode = 0644
 
 [template-resilient]
 recipe = slapos.recipe.build:download
 url = ${:_profile_base_location_}/instance-resilient.cfg.jinja2
-md5sum = aa9a99235571729ab93360c4712efa12
+md5sum = 3a0559633e10c4f3013355550859ca94
 filename = instance-resilient.cfg.jinja2
 mode = 0644
 
@@ -114,7 +114,7 @@ mode = 0644
 recipe = hexagonit.recipe.download
 url = ${:_profile_base_location_}/httpd_conf.in
 download-only = true
-md5sum = b5d095f54f714d17dff12c0c5fe4afb7
+md5sum = 61ac2dd5aeb5af9745d4c72d2571df8a
 filename = httpd_conf.in
 mode = 0644
 
diff --git a/software/slaprunner/httpd_conf.in b/software/slaprunner/httpd_conf.in
index 88348b279..afce96dad 100644
--- a/software/slaprunner/httpd_conf.in
+++ b/software/slaprunner/httpd_conf.in
@@ -1,57 +1,9 @@
-PidFile "{{ parameters.path_pid }}"
-ServerName example.com
-ServerAdmin someone@email
-
-<IfDefine !MonitorPort>
-  Listen [{{ parameters.global_ip }}]:{{ parameters.monitor_port }}
-  Define MonitorPort
-</IfDefine>
-
-LoadModule unixd_module modules/mod_unixd.so
-LoadModule access_compat_module modules/mod_access_compat.so
-LoadModule auth_basic_module modules/mod_auth_basic.so
-LoadModule authz_core_module modules/mod_authz_core.so
-LoadModule authz_user_module modules/mod_authz_user.so
-LoadModule authz_host_module modules/mod_authz_host.so
-LoadModule authn_core_module modules/mod_authn_core.so
-LoadModule authn_file_module modules/mod_authn_file.so
-LoadModule mime_module modules/mod_mime.so
-LoadModule cgid_module modules/mod_cgid.so
-LoadModule ssl_module modules/mod_ssl.so
-LoadModule alias_module modules/mod_alias.so
-LoadModule env_module modules/mod_env.so
-LoadModule rewrite_module modules/mod_rewrite.so
-LoadModule headers_module modules/mod_headers.so
 LoadModule log_config_module modules/mod_log_config.so
-LoadModule dav_module modules/mod_dav.so
-LoadModule dav_fs_module modules/mod_dav_fs.so
 LoadModule cache_module modules/mod_cache.so
 LoadModule file_cache_module modules/mod_file_cache.so
-LoadModule setenvif_module modules/mod_setenvif.so
-
-ErrorLog "{{ parameters.path_error_log }}"
-LogFormat "%h %l %u %t \"%r\" %>s %b" common
-CustomLog "{{ parameters.path_access_log }}" common
 
-# SSL Configuration
-Define SSLConfigured
-SSLCertificateFile {{ parameters.cert_file }}
-SSLCertificateKeyFile {{ parameters.key_file }}
-SSLRandomSeed startup builtin
-SSLRandomSeed connect builtin
-SSLRandomSeed startup /dev/urandom 256
-SSLRandomSeed connect builtin
-SSLProtocol -ALL +SSLv3 +TLSv1
-SSLHonorCipherOrder On
-SSLCipherSuite RC4-SHA:HIGH:!ADH
-SSLEngine   On
 
-Include {{ parameters.httpd_cors_file }}
-Header set Access-Control-Allow-Credentials "true"
-Header set Access-Control-Allow-Methods "PROPFIND, PROPPATCH, COPY, MOVE, DELETE, MKCOL, LOCK, UNLOCK, PUT, GETLIB, VERSION-CONTROL, CHECKIN, CHECKOUT, UNCHECKOUT, REPORT, UPDATE, CANCELUPLOAD, HEAD, OPTIONS, GET, POST"
-Header set Access-Control-Allow-Headers "Overwrite, Destination, Content-Type, Depth, User-Agent, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name, Cache-Control, Authorization"
-
-Alias /public {{ parameters.runner_home }}/public
+Alias /web-public {{ parameters.runner_home }}/public
 <Directory {{ parameters.runner_home }}/public>
     Order Allow,Deny
     Allow from all
@@ -65,22 +17,19 @@ Alias /public {{ parameters.runner_home }}/public
     </Files>
 </Directory>
 
-
-DavLockDB {{ parameters.var_dir }}/DavLock
-Alias /share {{ parameters.runner_home }}
+Alias /shared {{ parameters.runner_home }}
 <Directory {{ parameters.runner_home }}>
     DirectoryIndex disabled
     DAV On
     Options Indexes FollowSymLinks
     AuthType Basic
     AuthName "webdav"
-    AuthUserFile "{{ parameters.etc_dir }}/.htpasswd"
+    AuthUserFile "{{ parameters.etc_dir }}/monitor-htpasswd"
     <LimitExcept OPTIONS>
         Require valid-user
     </LimitExcept>
 </Directory>
 
-ScriptSock {{ parameters.path_pid }}
 
 SetEnv GIT_HTTP_EXPORT_ALL
 ScriptAlias /git/ {{ parameters.git_http_backend }}/
@@ -96,7 +45,7 @@ RewriteCond %{REQUEST_URI} /git-receive-pack$
 
         AuthType Basic
         AuthName "Git Access"
-        AuthUserFile "{{ parameters.etc_dir }}/.htpasswd"
+        AuthUserFile "{{ parameters.etc_dir }}/monitor-htpasswd"
         Require valid-user
 </LocationMatch>
 
@@ -107,9 +56,8 @@ RewriteCond %{REQUEST_URI} /git-receive-pack$
 
         AuthType Basic
         AuthName "Git Access"
-        AuthUserFile "{{ parameters.etc_dir }}/.htpasswd"
+        AuthUserFile "{{ parameters.etc_dir }}/monitor-htpasswd"
         Require valid-user
         Satisfy any
 </LocationMatch>
 
-include {{ parameters.cgi_httpd_conf }}
diff --git a/software/slaprunner/instance-resilient.cfg.jinja2 b/software/slaprunner/instance-resilient.cfg.jinja2
index bada94f4c..d5fb822ba 100644
--- a/software/slaprunner/instance-resilient.cfg.jinja2
+++ b/software/slaprunner/instance-resilient.cfg.jinja2
@@ -10,6 +10,10 @@
 {% if number_of_instances > 2 %}
   {% set number_of_instances = 2 %}
 {% endif %}
+{% set monitor_return = ['monitor-base-url', 'monitor-url', 'monitor-user', 'monitor-password'] -%}
+{% set monitor_parameter = {'monitor-cors-domains': slapparameter_dict.pop('monitor-cors-domains', "")} -%}
+{% set monitor_dict = {'parameter': monitor_parameter, 'return': monitor_return, 'set-monitor-url': True} -%}
+{% set monitor_interface_url = slapparameter_dict.pop('monitor-interface-url', '') -%}
 
 {% import 'parts' as parts %}
 {% import 'replicated' as replicated %}
@@ -24,11 +28,30 @@ parts +=
   {{ parts.replicate("runner", number_of_instances + 1) }}
   publish-connection-information
 
-{{ replicated.replicate("runner", number_of_instances + 1, "runner-export", "runner-import", slapparameter_dict=slapparameter_dict) }}
+[monitor-htpasswd]
+recipe = slapos.cookbook:generate.password
+storage-path = ${directory:etc}/.monitor_user
+bytes = 8
+username = admin
+
+{%  do monitor_parameter.__setitem__('monitor-username', slapparameter_dict.get('monitor-username', 'admin'))%}
+{%  do monitor_parameter.__setitem__('monitor-password', slapparameter_dict.get('monitor-password', '${monitor-htpasswd:passwd}'))%}
+
+{{ replicated.replicate("runner", number_of_instances + 1, "runner-export", "runner-import", slapparameter_dict=slapparameter_dict, monitor_parameter_dict=monitor_dict) }}
+
+[directory]
+recipe = slapos.cookbook:mkdirectory
+etc = ${buildout:directory}/etc
+
+# XXX Monitoring Main Instane
+[monitor-instance-parameter]
+monitor-httpd-port = 8160
+cors-domains = {{ monitor_parameter.get('monitor-cors-domains', '') }}
+
 
 # Bubble up the parameters
 [request-runner]
-return = url ssh-public-key ssh-url notification-id ip backend_url url ssh_command access_url 1_info 2_info monitor_url monitor_backend_url webdav_url public_url git_public_url git_private_url
+return = url ssh-public-key ssh-url notification-id ip backend_url url ssh_command access_url 1_info 2_info webdav_url public_url git_public_url git_private_url {{ monitor_return | join(' ') }}
 
 [publish-connection-information]
 recipe = slapos.cookbook:publish
@@ -38,12 +61,16 @@ backend_url = ${request-runner:connection-backend_url}
 access_url = ${request-runner:connection-access_url}
 url = ${request-runner:connection-url}
 ssh_command = ${request-runner:connection-ssh_command}
-monitor_url = ${request-runner:connection-monitor_url}
-monitor_backend_url = ${request-runner:connection-monitor_backend_url}
 webdav_url = ${request-runner:connection-webdav_url}
 public_url = ${request-runner:connection-public_url}
 git_public_url = ${request-runner:connection-git_public_url}
 git_private_url = ${request-runner:connection-git_private_url}
+{% for key in monitor_return -%}
+{{ key }} = ${request-runner:connection-{{ key }}}
+{% endfor -%}
+{% if monitor_interface_url -%}
+monitor_setup_url = {{ monitor_interface_url }}/#page=settings_configurator&url=${request-runner:connection-monitor-url}
+{% endif -%}
 
 [slap-parameter]
 # Default parameters for distributed deployment
diff --git a/software/slaprunner/instance-runner-export.cfg.in b/software/slaprunner/instance-runner-export.cfg.in
index 923978168..7ef23b337 100644
--- a/software/slaprunner/instance-runner-export.cfg.in
+++ b/software/slaprunner/instance-runner-export.cfg.in
@@ -28,27 +28,7 @@ parts +=
   minishell-cwd
   supervisord-wrapper
 ## Monitoring part
-###Parts to add for monitoring
-  cron
-  certificate-authority
-  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
-  bash-profile
 ## Monitor for runner
-  monitor-current-log-access
-  monitor-deploy-cors-domain-cgi
   monitor-check-resilient-feed-file
   monitor-check-webrunner-internal-instance
 
@@ -65,8 +45,12 @@ context =
   raw  shell_binary ${dash:location}/bin/dash
   raw  rsync_binary ${rsync:location}/bin/rsync
 
-[monitor-promise]
-url = $${monitor-frontend:config-url}/$${deploy-index-template:filename}
+[monitor-instance-parameter]
+monitor-httpd-port = 8437
+# Pass some parameter to dispay in monitoring interface
+instance-configuration =
+  file recovery-code $${recovery-code:storage-path}
+  raw webrunner-url https://$${request-frontend:connection-domain}
 
 # Extends publish section with resilient parameters
 [publish-connection-information]
@@ -75,10 +59,10 @@ url = $${monitor-frontend:config-url}/$${deploy-index-template:filename}
 [monitor-check-resilient-feed-file]
 recipe = slapos.recipe.template:jinja2
 template = ${template-monitor-check-resilient-feed:location}/${template-monitor-check-resilient-feed:filename}
-rendered = $${monitor-directory:monitor-custom-scripts}/check-create-resilient-feed-files.py
+rendered = $${monitor-directory:promises}/check-create-resilient-feed-files
 mode = 700
 context =
   key input_feed_directory directory:notifier-feeds
-  key monitor_feed_directory monitor-directory:public-cgi
+  key monitor_feed_directory monitor-directory:public
   raw base_url http://[$${notifier:host}]:$${notifier:port}/get/
   raw python_executable ${buildout:executable}
diff --git a/software/slaprunner/instance-runner-import.cfg.in b/software/slaprunner/instance-runner-import.cfg.in
index 7c0e29011..a57f70d8a 100644
--- a/software/slaprunner/instance-runner-import.cfg.in
+++ b/software/slaprunner/instance-runner-import.cfg.in
@@ -28,29 +28,6 @@ parts +=
   importer-consistency-promise
 # have to repeat the next one, as it's not inherited from pbsready-import
   import-on-notification
-## Monitoring part
-###Parts to add for monitoring
-  cron
-  certificate-authority
-  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 runner
-  monitor-current-log-access
-  monitor-backup-log-access
-## Monitor for import runner
-  monitor-latest-restored-backup
 
 # For the needs of importer, we run the full slaprunner
 # In case both exporter and importer (aka main instance and clone instance)
@@ -95,19 +72,29 @@ mode = 755
 [slap-parameter]
 auto-deploy-instance = false
 auto-deploy = true
+name = Webrunner import
+monitor-cors-domains = 
+monitor-username = $${monitor-htpasswd:username}
+monitor-password = $${monitor-htpasswd:passwd}
 
 [resilient-publish-connection-parameter]
-monitor-url = $${monitor-parameters:url}
+monitor-base-url = $${publish:monitor-base-url}
+monitor-url = $${publish:monitor-url}
+monitor-user = $${publish:monitor-user}
+monitor-password = $${publish:monitor-password}
 
-[monitor-backup-log-access]
-< = monitor-directory-access
-source = $${directory:logrotate-backup}
 
-[monitor-latest-restored-backup]
-recipe = slapos.recipe.template:jinja2
-command = if [ -f $${directory:etc}/.resilient-timestamp ]; then echo "$(date -d @$(cat $${directory:etc}/.resilient-timestamp) +%c)"; else echo "No backup timestamp found"; fi
-rendered = $${monitor-directory:monitoring-cgi}/latest-restored-backup
-template = ${template-wrapper:output}
-mode = 744
-context =
-  key content :command
+[monitor-instance-parameter]
+monitor-httpd-port = 8360
+#monitor-title = $${slap-parameter:name}
+#cors-domains = $${slap-parameter:monitor-cors-domains}
+#username = $${slap-parameter:monitor-username}
+#password = $${slap-parameter:monitor-password}
+# Pass some parameter to dispay in monitoring interface
+instance-configuration =
+  raw takeover-url http://[$${resilient-web-takeover-httpd-configuration-file:listening-ip}]:$${resilient-web-takeover-httpd-configuration-file:listening-port}/
+  raw takeover-password $${resilient-web-takeover-password:passwd}
+
+[monitor-conf-parameters]
+private-path-list += 
+  $${directory:logrotate-backup}
diff --git a/software/slaprunner/instance-runner.cfg b/software/slaprunner/instance-runner.cfg
index e4b5a30a1..a3b1fa7d1 100644
--- a/software/slaprunner/instance-runner.cfg
+++ b/software/slaprunner/instance-runner.cfg
@@ -31,29 +31,10 @@ parts =
   custom-frontend-promise
 {% endif %}
 ## Monitoring part
-###Parts to add for monitoring
-  cron
-  certificate-authority
-  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 runner
-  monitor-current-log-access
-  monitor-deploy-cors-domain-cgi
+
   monitor-check-webrunner-internal-instance
 
-extends = ${monitor-template:output}
+extends = ${monitor2-template:rendered}
 
 eggs-directory = ${buildout:eggs-directory}
 develop-eggs-directory = ${buildout:develop-eggs-directory}
@@ -179,7 +160,7 @@ debug = False
 auto_deploy = $${slap-parameter:auto-deploy}
 auto_deploy_instance = $${slap-parameter:auto-deploy-instance}
 autorun = $${slap-parameter:autorun}
-knowledge0_file = $${buildout:directory}/$${public:filename}
+knowledge0_file = $${monitor-instance-parameter:configuration-file-path}
 minishell_cwd_file = $${directory:etc}/.minishell-cwd
 minishell_history_file = $${directory:etc}/.minishell_history
 software_info_json = $${runnerdirectory:home}/software_info.json
@@ -317,39 +298,39 @@ context =
     section param_nginx_frontend nginx-frontend
 
 [httpd-parameters]
-path_pid = $${directory:run}/httpd.pid
-path_error_log = $${directory:log}/httpd-error.log
-path_access_log = $${directory:log}/httpd-access.log
-key_file = $${ca-httpd:key-file}
-cert_file = $${ca-httpd:cert-file}
+#path_pid = $${directory:run}/httpd.pid
+#path_error_log = $${directory:log}/httpd-error.log
+#path_access_log = $${directory:log}/httpd-access.log
+#key_file = $${ca-httpd:key-file}
+#cert_file = $${ca-httpd:cert-file}
 global_ip = $${slap-network-information:global-ipv6}
 global_port = $${slaprunner:runner_port}
 monitor_port = $${monitor-parameters:port}
-monitor_index = $${deploy-index:rendered}
-working_directory = $${slaprunner:working-directory}
-dav_lock = $${directory:var}/DavLock
+#monitor_index = $${deploy-index:rendered}
+#working_directory = $${slaprunner:working-directory}
+#dav_lock = $${directory:var}/DavLock
 etc_dir = $${directory:etc}
-var_dir = $${directory:var}
-project_folder = $${directory:project}
+#var_dir = $${directory:var}
+#project_folder = $${directory:project}
 project_private_folder = $${runnerdirectory:private-project}
 project_public_folder = $${runnerdirectory:public-project}
 runner_home = $${runnerdirectory:home}
 git_http_backend = ${git:location}/libexec/git-core/git-http-backend
-cgi_httpd_conf = $${monitor-httpd-configuration-file:rendered}
-httpd_cors_file = $${monitor-httpd-cors:location}
+#cgi_httpd_conf = $${monitor-httpd-configuration-file:rendered}
+#httpd_cors_file = $${monitor-httpd-cors:location}
 
 [httpd-conf]
 recipe = slapos.recipe.template:jinja2
 template = ${template_httpd_conf:location}/${template_httpd_conf:filename}
-rendered = $${directory:etc}/httpd.conf
+rendered = $${directory:etc}/httpd-part.conf
 context =
     section parameters httpd-parameters
 
-[cgi-httpd-wrapper]
-recipe = slapos.cookbook:wrapper
-apache-executable = ${apache:location}/bin/httpd
-wrapper-path = $${ca-httpd:executable}
-command-line = $${:apache-executable} -f $${httpd-conf:rendered} -DFOREGROUND
+#[cgi-httpd-wrapper]
+#recipe = slapos.cookbook:wrapper
+#apache-executable = ${apache:location}/bin/httpd
+#wrapper-path = $${ca-httpd:executable}
+#command-line = $${:apache-executable} -f $${httpd-conf:rendered} -DFOREGROUND
 
 #--------------------
 #--
@@ -424,17 +405,6 @@ config-url = $${slaprunner:access-url}
 config-domain = $${slap-parameter:frontend-domain}
 return = site_url domain
 
-[monitor-frontend]
-<= slap-connection
-recipe = slapos.cookbook:requestoptional
-name = Monitor Frontend
-# XXX We have hardcoded SR URL here.
-software-url = http://git.erp5.org/gitweb/slapos.git/blob_plain/HEAD:/software/apache-frontend/software.cfg
-slave = true
-config-url = https://[$${monitor-httpd-configuration:listening-ip}]:$${monitor-parameters:port}
-config-domain = $${slap-parameter:frontend-domain}
-return = site_url domain
-
 #--------------------------------------
 #--
 #-- Send information to SlapOS Master
@@ -447,13 +417,17 @@ backend_url = $${slaprunner:access-url}
 access_url = $${:url}/login
 url =  https://$${request-frontend:connection-domain}
 ssh_command = ssh $${dropbear-runner-server:host} -p $${dropbear-runner-server:port}
-monitor_url = https://$${monitor-frontend:connection-domain}
-monitor_backend_url = https://[$${monitor-httpd-configuration:listening-ip}]:$${monitor-parameters:port}
-webdav_url = $${:monitor_url}/share/
-public_url =  $${:monitor_url}/public/
+webdav_url = $${:monitor-base-url}/shared/
+public_url =  $${:monitor-base-url}/web-public/
 git_public_url = https://[$${httpd-parameters:global_ip}]:$${httpd-parameters:monitor_port}/git-public/
 git_private_url = https://[$${httpd-parameters:global_ip}]:$${httpd-parameters:monitor_port}/git/
-
+monitor-base-url = $${publish:monitor-base-url}
+monitor-url = $${publish:monitor-url}
+monitor-user = $${publish:monitor-user}
+monitor-password = $${publish:monitor-password}
+{% if slapparameter_dict.get('monitor-interface-url', '') -%}
+monitor_setup_url = {{ slapparameter_dict['monitor-interface-url'] }}/#page=settings_configurator&url=$${publish:monitor-url}
+{% endif -%}
 #---------------------------
 #--
 #-- Deploy promises scripts
@@ -497,7 +471,7 @@ slapos-reference = master
 auto-deploy = false
 auto-deploy-instance = true
 autorun = false
-monitor-port = 9684
+monitor-port = 9687
 instance-name =
 
 [monitor-parameters]
@@ -599,11 +573,6 @@ url = $${slap-connection:server-url}
 key = $${slap-connection:key-file}
 cert = $${slap-connection:cert-file}
 
-[public]
-recovery-code = $${recovery-code:passwd}
-
-[zero-parameters]
-
 
 [minishell-cwd]
 recipe = plone.recipe.command
@@ -692,11 +661,41 @@ path = $${directory:promises}/supervisord
 hostname = $${slaprunner:ipv4}
 port = $${supervisord:port}
 
+# XXX Monitor 
+[monitor-instance-parameter]
+monitor-httpd-port = $${slap-parameter:monitor-port}
+{% if slapparameter_dict.get('name', '') -%}
+monitor-title = {{ slapparameter_dict['name'] }}
+{% endif -%}
+cors-domains = {{ slapparameter_dict.get('monitor-cors-domains', '') }}
+{% if slapparameter_dict.get('monitor-username', '') -%}
+username = {{ slapparameter_dict['monitor-username'] }}
+{% endif -%}
+{% if slapparameter_dict.get('monitor-password', '') -%}
+password = {{ slapparameter_dict['monitor-password'] }}
+{% endif -%}
+{% if slapparameter_dict.get('monitor-url-list', '') -%}
+opml-url-list = {{ slapparameter_dict['monitor-url-list'] }}
+{% endif -%}
+{% if not slapparameter_dict.get('authorized-key', '') -%}
+# Parameter for resilient
+# Pass some parameter to dispay in monitoring interface
+instance-configuration =
+  file recovery-code $${recovery-code:storage-path}
+{% endif -%}
+configuration-file-path = $${buildout:directory}/knowledge0.cfg
 
-[monitor-current-log-access]
-< = monitor-directory-access
-source = $${directory:log}
+[monitor-httpd-conf-parameter]
+httpd-include-file = $${httpd-conf:rendered}
 
+[monitor-check-webrunner-internal-instance]
+recipe = slapos.recipe.template:jinja2
+template = ${monitor-check-webrunner-internal-instance:location}/${monitor-check-webrunner-internal-instance:filename}
+rendered = $${monitor-directory:promises}/$${:filename}
+filename = monitor-check-webrunner-internal-instance
+mode = 0744
+
+# XXX -not needed for monitor2
 [monitor-deploy-cors-domain-cgi]
 recipe = slapos.recipe.template:jinja2
 template = ${cors-domain-cgi:location}/${cors-domain-cgi:filename}
@@ -712,14 +711,7 @@ context =
   key this_file :filename
   key httpd_graceful cgi-httpd-graceful-wrapper:rendered
 
-[monitor-check-webrunner-internal-instance]
-recipe = slapos.recipe.template:jinja2
-template = ${monitor-check-webrunner-internal-instance:location}/${monitor-check-webrunner-internal-instance:filename}
-rendered = $${monitor-directory:monitor-custom-scripts}/$${:filename}
-filename = monitor-check-webrunner-internal-instance.py
-mode = 0744
-
-[monitor-httpd-cors]
+[monitor-httpd-cors-xx]
 recipe = plone.recipe.command
 command = if [ ! -f $${:location} ]; then touch $${:location}; fi
 location = $${directory:etc}/$${:filename}
-- 
2.30.9