Commit aaaa2794 authored by Vincent Pelletier's avatar Vincent Pelletier

stack.erp5: Use an iterator to produce port numbers.

Each loop in jinja2 has its own scope. This code was likely relying on a
bug, which was probably recently fixed upstream.
Using generators is cleaner as it better expresses the intent.
parent 02f2722d
...@@ -234,7 +234,7 @@ recipe = slapos.recipe.template:jinja2 ...@@ -234,7 +234,7 @@ recipe = slapos.recipe.template:jinja2
# XXX: "template.cfg" is hardcoded in instanciation recipe # XXX: "template.cfg" is hardcoded in instanciation recipe
rendered = ${buildout:directory}/template.cfg rendered = ${buildout:directory}/template.cfg
template = ${:_profile_base_location_}/instance.cfg.in template = ${:_profile_base_location_}/instance.cfg.in
md5sum = 75726622fbbb25a4d044a4f3532df479 md5sum = d73b1a55ed599c54da71535dd31357fd
mode = 640 mode = 640
context = context =
key mariadb_link_binary template-mariadb:link-binary key mariadb_link_binary template-mariadb:link-binary
...@@ -337,12 +337,12 @@ md5sum = b5f49c90017684aa3389ef3f97ece509 ...@@ -337,12 +337,12 @@ md5sum = b5f49c90017684aa3389ef3f97ece509
[template-zeo] [template-zeo]
<= download-base <= download-base
filename = instance-zeo.cfg.in filename = instance-zeo.cfg.in
md5sum = b0cb0ee97cddc79112a718e065806037 md5sum = 84aba4fa10d3087fbcc1d979df90fab9
[template-zope] [template-zope]
<= download-base <= download-base
filename = instance-zope.cfg.in filename = instance-zope.cfg.in
md5sum = e63ff201ee11567d35017314862f4ef3 md5sum = e65672c423d603e5fa516ad811cc1fa9
link-binary = link-binary =
${aspell:location}/bin/aspell ${aspell:location}/bin/aspell
${dmtx-utils:location}/bin/dmtxwrite ${dmtx-utils:location}/bin/dmtxwrite
...@@ -366,7 +366,7 @@ link-binary = ...@@ -366,7 +366,7 @@ link-binary =
[template-balancer] [template-balancer]
<= download-base <= download-base
filename = instance-balancer.cfg.in filename = instance-balancer.cfg.in
md5sum = ec9321514674c084e509ca070763b4a1 md5sum = 049d4153990374dc130403c04accaf13
[template-haproxy-cfg] [template-haproxy-cfg]
<= download-base <= download-base
......
...@@ -43,7 +43,7 @@ ipv4 = {{ ipv4 }} ...@@ -43,7 +43,7 @@ ipv4 = {{ ipv4 }}
{% endif -%} {% endif -%}
{% set haproxy_dict = {} -%} {% set haproxy_dict = {} -%}
{% set apache_dict = {} -%} {% set apache_dict = {} -%}
{% set next_port = slapparameter_dict['tcpv4-port'] -%} {% set next_port = itertools.count(slapparameter_dict['tcpv4-port']).next -%}
{% for family_name, parameter_id_list in sorted( {% for family_name, parameter_id_list in sorted(
slapparameter_dict['zope-family-dict'].iteritems()) -%} slapparameter_dict['zope-family-dict'].iteritems()) -%}
{% set zope_family_address_list = [] -%} {% set zope_family_address_list = [] -%}
...@@ -55,14 +55,14 @@ ipv4 = {{ ipv4 }} ...@@ -55,14 +55,14 @@ ipv4 = {{ ipv4 }}
{% do has_webdav.append(None) %} {% do has_webdav.append(None) %}
{% endif -%} {% endif -%}
{% if use_ipv6 -%} {% if use_ipv6 -%}
[{{ section('zope-tunnel-' ~ next_port) }}] {% set current_port = next_port() -%}
[{{ section('zope-tunnel-' ~ current_port) }}]
< = zope-tunnel-base < = zope-tunnel-base
base-name = {{ 'zeo-tunnel-' ~ next_port }} base-name = {{ 'zeo-tunnel-' ~ current_port }}
ipv4-port = {{ next_port }} ipv4-port = {{ current_port }}
ipv6-port = {{ zope_address.split(']:')[1] }} ipv6-port = {{ zope_address.split(']:')[1] }}
ipv6 = {{ zope_address.split(']:')[0][1:] }} ipv6 = {{ zope_address.split(']:')[0][1:] }}
{% set zope_effective_address = ipv4 ~ ":" ~ next_port -%} {% set zope_effective_address = ipv4 ~ ":" ~ current_port -%}
{% set next_port = next_port + 1 -%}
{% else -%} {% else -%}
{% set zope_effective_address = zope_address -%} {% set zope_effective_address = zope_address -%}
{% endif -%} {% endif -%}
...@@ -76,8 +76,7 @@ ipv6 = {{ zope_address.split(']:')[0][1:] }} ...@@ -76,8 +76,7 @@ ipv6 = {{ zope_address.split(']:')[0][1:] }}
# do a no-op getitem. # do a no-op getitem.
-#} -#}
{% do zope_family_address_list[0][0] -%} {% do zope_family_address_list[0][0] -%}
{% set haproxy_port = next_port -%} {% set haproxy_port = next_port() -%}
{% set next_port = next_port + 1 -%}
{% do haproxy_dict.__setitem__(family_name, (haproxy_port, zope_family_address_list)) -%} {% do haproxy_dict.__setitem__(family_name, (haproxy_port, zope_family_address_list)) -%}
{% if has_webdav -%} {% if has_webdav -%}
{% set internal_scheme = 'http' -%}{# mod_rewrite does not recognise webdav scheme -#} {% set internal_scheme = 'http' -%}{# mod_rewrite does not recognise webdav scheme -#}
...@@ -86,8 +85,7 @@ ipv6 = {{ zope_address.split(']:')[0][1:] }} ...@@ -86,8 +85,7 @@ ipv6 = {{ zope_address.split(']:')[0][1:] }}
{% set internal_scheme = 'http' -%} {% set internal_scheme = 'http' -%}
{% set external_scheme = 'https' -%} {% set external_scheme = 'https' -%}
{% endif -%} {% endif -%}
{% do apache_dict.__setitem__(family_name, (next_port, external_scheme, internal_scheme ~ '://' ~ ipv4 ~ ':' ~ haproxy_port ~ slapparameter_dict['backend-path'])) -%} {% do apache_dict.__setitem__(family_name, (next_port(), external_scheme, internal_scheme ~ '://' ~ ipv4 ~ ':' ~ haproxy_port ~ slapparameter_dict['backend-path'])) -%}
{% set next_port = next_port + 1 -%}
{% endfor -%} {% endfor -%}
[haproxy-cfg-parameter-dict] [haproxy-cfg-parameter-dict]
...@@ -209,7 +207,7 @@ crl = ${:ca-dir}/crl ...@@ -209,7 +207,7 @@ crl = ${:ca-dir}/crl
[monitor-instance-parameter] [monitor-instance-parameter]
monitor-httpd-ipv6 = {{ (ipv6_set | list)[0] }} monitor-httpd-ipv6 = {{ (ipv6_set | list)[0] }}
monitor-httpd-port = {{ next_port }} monitor-httpd-port = {{ next_port() }}
monitor-title = Balancer monitor monitor-title = Balancer monitor
[buildout] [buildout]
......
{% set next_port = slapparameter_dict['tcpv4-port'] -%} {% set next_port = itertools.count(slapparameter_dict['tcpv4-port']).next -%}
{% set ipv4 = (ipv4_set | list)[0] -%} {% set ipv4 = (ipv4_set | list)[0] -%}
{% set backup_periodicity = slapparameter_dict.get('backup-periodicity', 'daily') -%} {% set backup_periodicity = slapparameter_dict.get('backup-periodicity', 'daily') -%}
{% set part_list = [] -%} {% set part_list = [] -%}
...@@ -27,12 +27,13 @@ ip = {{ ipv4 }} ...@@ -27,12 +27,13 @@ ip = {{ ipv4 }}
{% for name, zodb in slapparameter_dict['zodb-dict'].iteritems() -%} {% for name, zodb in slapparameter_dict['zodb-dict'].iteritems() -%}
{% do zodb_dict.setdefault(zodb.get('family', 'default').lower(), []).append((name, zodb)) -%} {% do zodb_dict.setdefault(zodb.get('family', 'default').lower(), []).append((name, zodb)) -%}
{% endfor -%} {% endfor -%}
{% set tidstorage_port = next_port + len(zodb_dict) -%} {% set tidstorage_port = slapparameter_dict['tcpv4-port'] + len(zodb_dict) -%}
{% for family, zodb in zodb_dict.iteritems() -%} {% for family, zodb in zodb_dict.iteritems() -%}
{% set storage_list = [] -%} {% set storage_list = [] -%}
{% set known_tid_storage_identifier_host = (ipv4, next_port), -%} {% set current_port = next_port() -%}
{% set known_tid_storage_identifier_host = (ipv4, current_port), -%}
{% for name, zodb in zodb -%} {% for name, zodb in zodb -%}
{% do storage_dict.__setitem__(name, {'server': ipv4 ~ ':' ~ next_port, 'storage': name}) %} {% do storage_dict.__setitem__(name, {'server': ipv4 ~ ':' ~ current_port, 'storage': name}) %}
{% set path = zodb.get('path', '%(zodb)s/%(name)s.fs') % {'zodb': default_zodb_path, 'name': name} -%} {% set path = zodb.get('path', '%(zodb)s/%(name)s.fs') % {'zodb': default_zodb_path, 'name': name} -%}
{% do storage_list.append((name, path)) -%} {% do storage_list.append((name, path)) -%}
{% set backup_directory = zodb.get('backup', '%(backup)s/%(name)s') % {'backup': default_backup_path, 'name': name} -%} {% set backup_directory = zodb.get('backup', '%(backup)s/%(name)s') % {'backup': default_backup_path, 'name': name} -%}
...@@ -48,7 +49,7 @@ ip = {{ ipv4 }} ...@@ -48,7 +49,7 @@ ip = {{ ipv4 }}
[{{ zeo_section_name }}] [{{ zeo_section_name }}]
< = zeo-base < = zeo-base
base-name = zeo-{{ family }} base-name = zeo-{{ family }}
port = {{ next_port }} port = {{ current_port }}
storage = {{ dumps(storage_list) }} storage = {{ dumps(storage_list) }}
[{{ section("logrotate-" ~ zeo_section_name) }}] [{{ section("logrotate-" ~ zeo_section_name) }}]
...@@ -63,7 +64,6 @@ hostname = {{ "${" ~ zeo_section_name ~ ":ip}" }} ...@@ -63,7 +64,6 @@ hostname = {{ "${" ~ zeo_section_name ~ ":ip}" }}
port = {{ "${" ~ zeo_section_name ~ ":port}" }} port = {{ "${" ~ zeo_section_name ~ ":port}" }}
path = ${directory:promises}/zeo-{{ family }} path = ${directory:promises}/zeo-{{ family }}
{% set next_port = next_port + 1 -%}
{% endfor -%} {% endfor -%}
{% if backup_periodicity == 'never' -%} {% if backup_periodicity == 'never' -%}
...@@ -185,10 +185,9 @@ backup-zodb = {{ default_backup_path }} ...@@ -185,10 +185,9 @@ backup-zodb = {{ default_backup_path }}
zodb = {{ default_zodb_path }} zodb = {{ default_zodb_path }}
tidstorage = {{ tidstorage_repozo_path }} tidstorage = {{ tidstorage_repozo_path }}
{% set next_port = next_port + 1 -%}
[monitor-instance-parameter] [monitor-instance-parameter]
monitor-httpd-ipv6 = {{ (ipv6_set | list)[0] }} monitor-httpd-ipv6 = {{ (ipv6_set | list)[0] }}
monitor-httpd-port = {{ next_port }} monitor-httpd-port = {{ next_port() }}
monitor-title = ZODB monitor monitor-title = ZODB monitor
[buildout] [buildout]
......
{% set use_ipv6 = slapparameter_dict.get('use-ipv6', False) -%} {% set use_ipv6 = slapparameter_dict.get('use-ipv6', False) -%}
{% set next_port = slapparameter_dict['port-base'] -%} {% set next_port = itertools.count(slapparameter_dict['port-base']).next -%}
{% set site_id = slapparameter_dict['site-id'] -%} {% set site_id = slapparameter_dict['site-id'] -%}
{% set zodb_dict = slapparameter_dict['zodb-dict'] -%} {% set zodb_dict = slapparameter_dict['zodb-dict'] -%}
{% set node_id_base = slapparameter_dict['name'] -%} {% set node_id_base = slapparameter_dict['name'] -%}
...@@ -358,11 +358,10 @@ post = {{ bin_directory }}/slapos-kill --pidfile {{ '${' ~ conf_parameter_name ~ ...@@ -358,11 +358,10 @@ post = {{ bin_directory }}/slapos-kill --pidfile {{ '${' ~ conf_parameter_name ~
{% for i in range(slapparameter_dict['instance-count']) -%} {% for i in range(slapparameter_dict['instance-count']) -%}
{{ zope( {{ zope(
i, i,
next_port, next_port(),
slapparameter_dict['longrequest-logger-timeout'], slapparameter_dict['longrequest-logger-timeout'],
slapparameter_dict['longrequest-logger-interval'], slapparameter_dict['longrequest-logger-interval'],
) }} ) }}
{% set next_port = next_port + 1 -%}
{% endfor -%} {% endfor -%}
[publish] [publish]
...@@ -389,7 +388,7 @@ bt5-repository-url = {{ dumps(slapparameter_dict['bt5-repository-url']) }} ...@@ -389,7 +388,7 @@ bt5-repository-url = {{ dumps(slapparameter_dict['bt5-repository-url']) }}
[monitor-instance-parameter] [monitor-instance-parameter]
monitor-httpd-ipv6 = {{ (ipv6_set | list)[0] }} monitor-httpd-ipv6 = {{ (ipv6_set | list)[0] }}
monitor-httpd-port = {{ next_port }} monitor-httpd-port = {{ next_port() }}
monitor-title = Zope monitor monitor-title = Zope monitor
[buildout] [buildout]
......
...@@ -98,6 +98,7 @@ template = {{ template_balancer }} ...@@ -98,6 +98,7 @@ template = {{ template_balancer }}
filename = instance-balancer.cfg filename = instance-balancer.cfg
extra-context = extra-context =
section parameter_dict dynamic-template-balancer-parameters section parameter_dict dynamic-template-balancer-parameters
import itertools itertools
[dynamic-template-zeo-parameters] [dynamic-template-zeo-parameters]
buildout-bin-directory = {{ buildout_bin_directory }} buildout-bin-directory = {{ buildout_bin_directory }}
...@@ -111,6 +112,7 @@ extra-context = ...@@ -111,6 +112,7 @@ extra-context =
key buildout_directory buildout:directory key buildout_directory buildout:directory
section parameter_dict dynamic-template-zeo-parameters section parameter_dict dynamic-template-zeo-parameters
import json_module json import json_module json
import itertools itertools
[dynamic-template-zope-parameters] [dynamic-template-zope-parameters]
bin-directory = {{ bin_directory }} bin-directory = {{ bin_directory }}
...@@ -136,6 +138,7 @@ extra-context = ...@@ -136,6 +138,7 @@ extra-context =
section parameter_dict dynamic-template-zope-parameters section parameter_dict dynamic-template-zope-parameters
import urlparse urlparse import urlparse urlparse
import hashlib hashlib import hashlib hashlib
import itertools itertools
[dynamic-template-kumofs-parameters] [dynamic-template-kumofs-parameters]
dash-location = {{ dash_location }} dash-location = {{ dash_location }}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment