{% macro section(name) %}{% do part_list.append(name) %}{{ name }}{% endmacro -%}
{% set part_list = [] -%}
{% set master_list = [] -%}
{% set admin_list = [] -%}
[request-common]
recipe = slapos.cookbook:request
software-url = ${slap-connection:software-release-url}
sla = computer_guid
sla-computer_guid = ${slap-connection:computer-id}
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}
config-cluster = {{ slapparameter_dict['cluster'] }}
config-partitions = {{ slapparameter_dict.get('partitions', 12) }}
config-replicas = {{ slapparameter_dict.get('replicas', 0) }}

[request-config]
base = cluster
master = partitions replicas
node = masters

[node-base]
< = request-common
config = ${request-config:base} ${request-config:node}
config-masters = ${all-masters:addresses}

[mysql-storage-base]
< = request-common
config = ${request-config:base} ${request-config:master}
software-type = {{ mysql_storage_software_type }}

[mysql-storage-request-base]
< = mysql-storage-base
return = master

[admin-base]
< = node-base
return = admin
software-type = {{ admin_software_type }}

[publish]
recipe = slapos.cookbook:publish
masters = ${all-masters:addresses}
admins = ${all-admins:addresses}

{% for node_number in range(slapparameter_dict.get('mysql-storage-count', 1)) -%}
{%   set section_id = 'storage-%i' % (node_number, ) -%}
{%   set final_section_id = 'final-' ~ section_id -%}
{%   do master_list.append(section_id) -%}
[{{ section_id }}]
< = mysql-storage-request-base
name = {{ section_id }}

[{{ section(final_section_id) }}]
< = mysql-storage-base
	node-base
name = {{ section_id }}
config = ${request-config:base} ${request-config:master} ${request-config:node}

{% endfor -%}
{% for node_number in range(slapparameter_dict.get('admin-count', 1)) -%}
{%   set section_id = 'admin-%i' % (node_number, ) -%}
{%   do admin_list.append(section_id)%}
[{{ section(section_id) }}]
< = admin-base
name = {{ section_id }}

{% endfor -%}
[buildout]
parts =
	{{ part_list | join('\n\t') }}
	publish

[all-masters]
addresses = {% for master in master_list -%}
{{   '${' + master + ':connection-master}' -}}
{%   if not loop.last %} {% endif -%}
{% endfor %}

[all-admins]
addresses = {% for admin in admin_list -%}
{{  '${' + admin + ':connection-admin}' -}}
{%  if not loop.last %} {% endif -%}
{% endfor %}