[buildout]
extends = template-runner.cfg
          ${pbsready-import:output}

parts +=
  nginx_conf
  nginx-launcher
  certificate-authority
  ca-nginx
  gunicorn-launcher
  gunicorn-graceful
  sshkeys-dropbear-runner
  dropbear-server-add-authorized-key
  sshkeys-authority
  slaprunner-promise
  slaprunner-supervisord-wrapper
  dropbear-promise
  runtestsuite
  shellinabox
  symlinks
  slapos-cfg
  slapos-repo
  cron-entry-prepare-software
  deploy-instance-parameters
  instance-software-type
  bash-profile
  supervisord-wrapper
  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)
# run with the same IP (usually for testing purposes),
# run slaprunner using different ports.
[slaprunner]
proxy_port = 50000
runner_port = 50005

[importer]
recipe = slapos.recipe.template:jinja2
template = ${template-runner-import-script:location}/${template-runner-import-script:filename}
rendered = $${directory:bin}/$${slap-parameter:namebase}-importer
# backward compatibility for resilient stack
wrapper = $${:rendered}
mode = 700
restore-exit-code-file=$${directory:srv}/importer-exit-code-file
context =
  key backend_url slaprunner:access-url
  key proxy_host slaprunner:ipv4
  section directory directory
  raw  shell_binary ${dash:location}/bin/dash
  raw  rsync_binary ${rsync:location}/bin/rsync
  raw  restore_exit_code_file $${:restore-exit-code-file}

[importer-consistency-promise]
# Test that the importer script and "after-import" subscripts:
# 1/ Have been run in the last 24 hours
# 2/ Have succeeded
recipe = collective.recipe.template
input = inline: #!/bin/sh
  EXIT_CODE_FILE=$(find "$${importer:restore-exit-code-file}" -mtime -1)
  if [ -z "$EXIT_CODE_FILE" ]; then
     echo "Consistency check is too old."
     exit 1
   fi
  EXIT_CODE=$(cat $EXIT_CODE_FILE)
  exit $EXIT_CODE
output = $${directory:promises}/importer-consistency-promise
mode = 755

[slap-parameter]
auto-deploy-instance = false
auto-deploy = true

[resilient-publish-connection-parameter]
monitor-url = $${monitor-parameters:url}

[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