{% if slap_software_type == software_type -%}
{% set site_id = slapparameter_dict.get('cluster').get('site-id', 'erp5') -%}
{% set promise_path = slapparameter_dict.get('promise-path', 'erp5') -%}
[buildout]
extends = 
parts =
  erp5-cluster
  binary-wrap-launcher
  binary-wrap-performance-tester
  erp5-bootstrap
  erp5-promise
  promise-erp5-site
  promise-scalability-user-data
  scalability-launcher-instance
  publish

eggs-directory = {{ eggs_directory }}
develop-eggs-directory = {{ develop_eggs_directory }}
offline = true

[slap-configuration]
recipe = slapos.cookbook:slapconfiguration.serialised
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}

# Request erp5-cluster instance
[erp5-cluster]
recipe = slapos.cookbook:request.serialised
sla = computer_guid
server-url = ${slap-connection:server-url}
key-file = ${slap-connection:key-file}
cert-file = ${slap-connection:cert-file}
computer-id = ${slap-connection:computer-id}
partition-id = ${slap-connection:partition-id}
name = ERP5 Cluster
software-url = ${slap-connection:software-release-url}
software-type = default
sla-computer_guid = {{ slapparameter_dict.get('launcher-computer-guid', computer_id) }}
{# Add a zope scalability family to the erp5 cluster configuration, -#}
{# this zope family is used by erp5-bootstrap and may serve to scalability monitoring tools. -#}
{% set additional_scalability_zope = {'scalability':{'family':'scalability', 'computer-guid':computer_id}} -%}
{% do slapparameter_dict.get('cluster').get('zope-partition-dict').update( additional_scalability_zope ) -%}
{% set cluster_parameter_dict = slapparameter_dict.get('cluster', {}) -%}
config = {{ cluster_parameter_dict.keys() | join(' ') }}
{% for key, value in cluster_parameter_dict.items() -%}
config-{{ key }} = {{ dumps(value) }}
{% endfor -%}
return = mariadb-database-list family-scalability family-user memcached-persistent-url memcached-volatile-url cloudooo-url
state = ${slap-configuration:instance-state}

# Create wrapper
[binary-wrap-launcher]
recipe = slapos.cookbook:wrapper
log-path = ${basedirectory:log}
binary-path = {{ bin_directory }}/runScalabilityTestSuite
wrapper-path = ${rootdirectory:bin}/runScalabilityTestSuite
output = ${binary-wrap-launcher:binary-path}
site-id = "/{{ site_id }}"
# Suppose that there is a user zope family in the configuration
erp5-url = ${erp5-cluster:connection-family-user}${:site-id}
parameters-extra = $*
command-line = ${binary-wrap-launcher:binary-path}
return = url

# Create wrapper
[binary-wrap-performance-tester]
recipe = slapos.cookbook:wrapper
binary-path = {{ bin_directory }}/performance_tester
wrapper-path = ${rootdirectory:bin}/performance_tester
output = ${binary-wrap-performance-tester:binary-path}
parameters-extra = $*
command-line = ${binary-wrap-performance-tester:binary-path}
return = url

[scalability-launcher-instance]
recipe = slapos.cookbook:scalability
configuration-file = ${rootdirectory:etc}/scalability_runner.conf
wrapper = ${basedirectory:services}/scalability_runner
exec-path = ${binary-wrap-launcher:wrapper-path}
erp5-url = ${binary-wrap-launcher:erp5-url}
test-result-path = {{ slapparameter_dict.get('test-result-path') }}
revision = {{ slapparameter_dict.get('test-suite-revision') }}
node-title = {{ slapparameter_dict.get('node-title', 'Unknown') }}
test-suite = {{ slapparameter_dict.get('test-suite') }}
test-suite-master-url = {{ slapparameter_dict.get('test-suite-master-url') }}
log-path = ${binary-wrap-launcher:log-path}
runner-path = ${binary-wrap-performance-tester:wrapper-path}
erp5-location = {{ erp5_location }}

# Create partition's directories
[basedirectory]
recipe = slapos.cookbook:mkdirectory
log = ${rootdirectory:var}/log
services = ${rootdirectory:etc}/run
promises = ${rootdirectory:etc}/promise/

[rootdirectory]
recipe = slapos.cookbook:mkdirectory
etc = ${buildout:directory}/etc
var = ${buildout:directory}/var
bin = ${buildout:directory}/bin

[erp5-bootstrap]
recipe = slapos.cookbook:erp5.bootstrap
runner-path = ${basedirectory:services}/erp5-bootstrap
#mysql-url =  ${erp5-cluster:mariadb-url}
mysql-url-list =  ${erp5-cluster:connection-mariadb-database-list}
zope-username = zope
zope-password = insecure
zope-site-id = {{ site_id }}
zope-url = ${erp5-cluster:connection-family-scalability}
scalability = True

[erp5-promise]
recipe = slapos.cookbook:erp5.promise
promise-path = {{ promise_path }}
kumofs-url = ${erp5-cluster:connection-memcached-persistent-url}
memcached-url = ${erp5-cluster:connection-memcached-volatile-url}
cloudooo-url = ${erp5-cluster:connection-cloudooo-url}
smtp-url =
bt5 =
bt5-repository-url =

[promise-erp5-site]
recipe = slapos.cookbook:check_url_available
path = ${basedirectory:promises}/erp5site
site-id = "/{{ site_id }}"
url = ${erp5-cluster:connection-family-scalability}${:site-id}
dash_path = {{ dash_location }}/bin/dash
curl_path = {{ curl_location }}/bin/curl

[promise-scalability-user-data]
recipe = slapos.cookbook:check_url_available
path = ${basedirectory:promises}/scalabilityData
site-id = "/{{ site_id }}"
page = "/person_module/scalability_user_0/getTitle"
url = ${erp5-cluster:connection-family-scalability}${:site-id}${:page}
dash_path = {{ dash_location }}/bin/dash
curl_path = {{ curl_location }}/bin/curl

[publish]
recipe = slapos.cookbook:publish.serialised
erp5-frontend-url = ${scalability-launcher-instance:erp5-url}
erp5-scalability-url = ${erp5-cluster:connection-family-scalability}
{% endif %}