Commit 746f9ea5 authored by Łukasz Nowak's avatar Łukasz Nowak

software/rapid-cdn: Mininimize produced files

There is no reason to have so many empty lines, as other tools can have
troubles with processing it.
parent 13fcd193
...@@ -26,7 +26,7 @@ md5sum = 4a53b09ba4cbf15e32a5088cc81db5ea ...@@ -26,7 +26,7 @@ md5sum = 4a53b09ba4cbf15e32a5088cc81db5ea
[profile-master] [profile-master]
filename = instance-master.cfg.in filename = instance-master.cfg.in
md5sum = 653e8249ee71c3fa71b172fa3d2a4207 md5sum = 78c556911944339f0c03c8416db8dbaa
[profile-slave-list] [profile-slave-list]
filename = instance-slave-list.cfg.in filename = instance-slave-list.cfg.in
...@@ -34,7 +34,7 @@ md5sum = 8d6d2280ad47b431c433495bf9809adc ...@@ -34,7 +34,7 @@ md5sum = 8d6d2280ad47b431c433495bf9809adc
[profile-master-publish-slave-information] [profile-master-publish-slave-information]
filename = instance-master-publish-slave-information.cfg.in filename = instance-master-publish-slave-information.cfg.in
md5sum = cba4d995962f7fbeae3f61c9372c4181 md5sum = 91f4e406ef66fb6c3fac5d4af06ee0ca
[template-frontend-haproxy-configuration] [template-frontend-haproxy-configuration]
_update_hash_filename_ = templates/frontend-haproxy.cfg.in _update_hash_filename_ = templates/frontend-haproxy.cfg.in
......
{% set part_list = [] %} {%- set part_list = [] %}
{% set slave_information_dict = {} %} {%- set slave_information_dict = {} %}
# regroup slave information from all frontends # regroup slave information from all frontends
{% for frontend, slave_list_raw in slave_information.items() %} {%- for frontend, slave_list_raw in slave_information.items() %}
{% if slave_list_raw %} {%- if slave_list_raw %}
{% set slave_list = json_module.loads(slave_list_raw) %} {%- set slave_list = json_module.loads(slave_list_raw) %}
{% else %} {%- else %}
{% set slave_list = [] %} {%- set slave_list = [] %}
{% endif %} {%- endif %}
{% for slave_dict in slave_list %} {%- for slave_dict in slave_list %}
{% set slave_reference = slave_dict.pop('slave-reference') %} {%- set slave_reference = slave_dict.pop('slave-reference') %}
{% set log_access_url = slave_dict.pop('log-access', '') %} {%- set log_access_url = slave_dict.pop('log-access', '') %}
{% set current_slave_dict = slave_information_dict.get(slave_reference, {}) %} {%- set current_slave_dict = slave_information_dict.get(slave_reference, {}) %}
{% do current_slave_dict.update(slave_dict) %} {%- do current_slave_dict.update(slave_dict) %}
{% set log_access_list = current_slave_dict.get('log-access-urls', []) %} {%- set log_access_list = current_slave_dict.get('log-access-urls', []) %}
{% do log_access_list.append( frontend + ': ' + log_access_url) %} {%- do log_access_list.append( frontend + ': ' + log_access_url) %}
{% do current_slave_dict.__setitem__( {%- do current_slave_dict.__setitem__(
'log-access-urls', 'log-access-urls',
log_access_list log_access_list
) %} ) %}
{% do current_slave_dict.__setitem__( {%- do current_slave_dict.__setitem__(
'replication_number', 'replication_number',
current_slave_dict.get('replication_number', 0) + 1 current_slave_dict.get('replication_number', 0) + 1
) %} ) %}
{% do slave_information_dict.__setitem__(slave_reference, current_slave_dict) %} {%- do slave_information_dict.__setitem__(slave_reference, current_slave_dict) %}
{% endfor %} {%- endfor %}
{% endfor %} {%- endfor %}
{% for slave_reference, rejected_info_list in rejected_slave_information['rejected-slave-dict'].items() %} {%- for slave_reference, rejected_info_list in rejected_slave_information['rejected-slave-dict'].items() %}
{% if slave_reference not in slave_information_dict %} {%- if slave_reference not in slave_information_dict %}
{% do slave_information_dict.__setitem__(slave_reference, {}) %} {%- do slave_information_dict.__setitem__(slave_reference, {}) %}
{% endif %} {%- endif %}
{% do slave_information_dict[slave_reference].__setitem__('request-error-list', json_module.dumps(rejected_info_list)) %} {%- do slave_information_dict[slave_reference].__setitem__('request-error-list', json_module.dumps(rejected_info_list)) %}
{% endfor %} {%- endfor %}
{% for slave_reference, warning_info_list in warning_slave_information['warning-slave-dict'].items() %} {%- for slave_reference, warning_info_list in warning_slave_information['warning-slave-dict'].items() %}
{% if slave_reference not in slave_information_dict %} {%- if slave_reference not in slave_information_dict %}
{% do slave_information_dict.__setitem__(slave_reference, {}) %} {%- do slave_information_dict.__setitem__(slave_reference, {}) %}
{% endif %} {%- endif %}
{% do slave_information_dict[slave_reference].__setitem__('warning-list', json_module.dumps(warning_info_list)) %} {%- do slave_information_dict[slave_reference].__setitem__('warning-list', json_module.dumps(warning_info_list)) %}
{% endfor %} {%- endfor %}
{% for slave_reference, kedifa_dict in json_module.loads(slave_kedifa_information).items() %} {%- for slave_reference, kedifa_dict in json_module.loads(slave_kedifa_information).items() %}
{% if slave_reference not in rejected_slave_information['rejected-slave-dict'] %} {%- if slave_reference not in rejected_slave_information['rejected-slave-dict'] %}
{% if slave_reference not in slave_information_dict %} {%- if slave_reference not in slave_information_dict %}
{% do slave_information_dict.__setitem__(slave_reference, {}) %} {%- do slave_information_dict.__setitem__(slave_reference, {}) %}
{% endif %} {%- endif %}
{% do slave_information_dict[slave_reference].__setitem__('key-generate-auth-url', kedifa_dict['key-generate-auth-url']) %} {%- do slave_information_dict[slave_reference].__setitem__('key-generate-auth-url', kedifa_dict['key-generate-auth-url']) %}
{% do slave_information_dict[slave_reference].__setitem__('key-upload-url', kedifa_dict['key-upload-url']) %} {%- do slave_information_dict[slave_reference].__setitem__('key-upload-url', kedifa_dict['key-upload-url']) %}
{% do slave_information_dict[slave_reference].__setitem__('kedifa-caucase-url', kedifa_dict['kedifa-caucase-url']) %} {%- do slave_information_dict[slave_reference].__setitem__('kedifa-caucase-url', kedifa_dict['kedifa-caucase-url']) %}
{% endif %} {%- endif %}
{% endfor %} {%- endfor %}
[common-frontend-information] [common-frontend-information]
{% for frontend_key, frontend_value in frontend_information.items() %} {%- for frontend_key, frontend_value in frontend_information.items() %}
{{ frontend_key }} = {{ frontend_value }} {{ frontend_key }} = {{ frontend_value }}
{% endfor %} {%- endfor %}
# Publish information for each slave # Publish information for each slave
{% set active_slave_instance_list = json_module.loads(active_slave_instance_dict['active-slave-instance-list']) %} {%- set active_slave_instance_list = json_module.loads(active_slave_instance_dict['active-slave-instance-list']) %}
{% for slave_reference, slave_information in slave_information_dict.items() %} {%- for slave_reference, slave_information in slave_information_dict.items() %}
{# Filter out destroyed, so not existing anymore, slaves #} {# Filter out destroyed, so not existing anymore, slaves #}
{# Note: This functionality is not yet covered by tests, please modify with care #} {# Note: This functionality is not yet covered by tests, please modify with care #}
{% if slave_reference in active_slave_instance_list %} {%- if slave_reference in active_slave_instance_list %}
{% set publish_section_title = 'publish-%s' % slave_reference %} {%- set publish_section_title = 'publish-%s' % slave_reference %}
{% do part_list.append(publish_section_title) %} {%- do part_list.append(publish_section_title) %}
[{{ publish_section_title }}] [{{ publish_section_title }}]
<= common-frontend-information <= common-frontend-information
recipe = slapos.cookbook:publish_failsafe recipe = slapos.cookbook:publish_failsafe
-error-status-file = {{ publish_failsafe_error }}/{{ slave_reference }}-error.status -error-status-file = {{ publish_failsafe_error }}/{{ slave_reference }}-error.status
-slave-reference = {{ slave_reference }} -slave-reference = {{ slave_reference }}
{% set log_access_url = slave_information.pop('log-access-urls', None) %} {%- set log_access_url = slave_information.pop('log-access-urls', None) %}
{% if log_access_url %} {%- if log_access_url %}
{# sort_keys are important in order to avoid shuffling parameters on each run #} {# sort_keys are important in order to avoid shuffling parameters on each run #}
log-access-url = {{ dumps(json_module.dumps(log_access_url, sort_keys=True)) }} log-access-url = {{ dumps(json_module.dumps(log_access_url, sort_keys=True)) }}
{% endif %} {%- endif %}
{% for key, value in slave_information.items() %} {%- for key, value in slave_information.items() %}
{{ key }} = {{ dumps(value) }} {{ key }} = {{ dumps(value) }}
{% endfor %} {%- endfor %}
{% endif %} {%- endif %}
{% endfor %} {%- endfor %}
[buildout] [buildout]
extends = {{ profile_common }} extends = {{ profile_common }}
parts = parts =
{% for part in part_list %} {% for part in part_list %}
{{ ' %s' % part }} {{- ' %s' % part }}
{% endfor %} {% endfor %}
{% set aibcc_enabled = True %} {%- set aibcc_enabled = True %}
{% import "caucase" as caucase with context %} {%- import "caucase" as caucase with context %}
{#- DANGER! DANGER! #} {#- DANGER! DANGER! #}
{#- Avoid touching the NAME_BASE, as it will result with backward incompatible cluster setup #} {#- Avoid touching the NAME_BASE, as it will result with backward incompatible cluster setup #}
{%- set NAME_BASE = 'caddy-frontend' %} {%- set NAME_BASE = 'caddy-frontend' %}
...@@ -102,15 +102,15 @@ ...@@ -102,15 +102,15 @@
] ]
%} %}
{%- set FRONTEND_NODE_SLAVE_PASSED_KEY_LIST = FRONTEND_NODE_SLAVE_PASSED_KEY_LIST_SCHEMA + FRONTEND_NODE_SLAVE_PASSED_KEY_LIST_INTERNAL %} {%- set FRONTEND_NODE_SLAVE_PASSED_KEY_LIST = FRONTEND_NODE_SLAVE_PASSED_KEY_LIST_SCHEMA + FRONTEND_NODE_SLAVE_PASSED_KEY_LIST_INTERNAL %}
{% set aikc_enabled = slapparameter_dict.get('automatic-internal-kedifa-caucase-csr', 'true').lower() in TRUE_VALUES %} {%- set aikc_enabled = slapparameter_dict.get('automatic-internal-kedifa-caucase-csr', 'true').lower() in TRUE_VALUES %}
{% set aibcc_enabled = slapparameter_dict.get('automatic-internal-backend-client-caucase-csr', 'true').lower() in TRUE_VALUES %} {%- set aibcc_enabled = slapparameter_dict.get('automatic-internal-backend-client-caucase-csr', 'true').lower() in TRUE_VALUES %}
{# Ports 8401, 8402 and 8410+1..N are reserved for monitor ports on various partitions #} {#- Ports 8401, 8402 and 8410+1..N are reserved for monitor ports on various partitions #}
{% set master_partition_monitor_monitor_httpd_port = 8401 %} {%- set master_partition_monitor_monitor_httpd_port = 8401 %}
{% set kedifa_partition_monitor_httpd_port = 8402 %} {%- set kedifa_partition_monitor_httpd_port = 8402 %}
{% set frontend_monitor_httpd_base_port = 8410 %} {%- set frontend_monitor_httpd_base_port = 8410 %}
{% set caucase_host = '[' ~ instance_parameter_dict['ipv6-random'] ~ ']' %} {%- set caucase_host = '[' ~ instance_parameter_dict['ipv6-random'] ~ ']' %}
{% set caucase_netloc = caucase_host ~ ':' ~ instance_parameter_dict['configuration.caucase_backend_client_port'] %} {%- set caucase_netloc = caucase_host ~ ':' ~ instance_parameter_dict['configuration.caucase_backend_client_port'] %}
{% set caucase_url = 'http://' ~ caucase_netloc %} {%- set caucase_url = 'http://' ~ caucase_netloc %}
[jinja2-template-base] [jinja2-template-base]
recipe = slapos.recipe.template:jinja2 recipe = slapos.recipe.template:jinja2
output = ${buildout:directory}/${:filename} output = ${buildout:directory}/${:filename}
...@@ -120,262 +120,261 @@ context = ...@@ -120,262 +120,261 @@ context =
raw profile_common {{ software_parameter_dict['profile_common'] }} raw profile_common {{ software_parameter_dict['profile_common'] }}
${:extra-context} ${:extra-context}
{% set popen = functools_module.partial(subprocess_module.Popen, stdout=subprocess_module.PIPE, stderr=subprocess_module.STDOUT, stdin=subprocess_module.PIPE) %} {%- set popen = functools_module.partial(subprocess_module.Popen, stdout=subprocess_module.PIPE, stderr=subprocess_module.STDOUT, stdin=subprocess_module.PIPE) %}
{% set part_list = [] %} {%- set part_list = [] %}
{% set single_type_key = 'single-' %} {%- set single_type_key = 'single-' %}
{% set frontend_type = "%s%s" % (single_type_key, 'custom-personal') %} {%- set frontend_type = "%s%s" % (single_type_key, 'custom-personal') %}
{% set frontend_quantity = slapparameter_dict.pop('-frontend-quantity', '1') | int %} {%- set frontend_quantity = slapparameter_dict.pop('-frontend-quantity', '1') | int %}
{% set slave_list_name = 'extra_slave_instance_list' %} {%- set slave_list_name = 'extra_slave_instance_list' %}
{% set frontend_list = [] %} {%- set frontend_list = [] %}
{% set frontend_section_list = [] %} {%- set frontend_section_list = [] %}
{% set request_dict = {} %} {%- set request_dict = {} %}
# XXX Dirty hack, not possible to define default value before {#- XXX Dirty hack, not possible to define default value before #}
{% set sla_computer_1_key = '-sla-1-computer_guid' %} {%- set sla_computer_1_key = '-sla-1-computer_guid' %}
{% if not sla_computer_1_key in slapparameter_dict %} {%- if not sla_computer_1_key in slapparameter_dict %}
{% do slapparameter_dict.__setitem__(sla_computer_1_key, '${slap-connection:computer-id}') %} {%- do slapparameter_dict.__setitem__(sla_computer_1_key, '${slap-connection:computer-id}') %}
{% endif %} {%- endif %}
{% set sla_computer_kedifa_key = '-sla-kedifa-computer_guid' %} {%- set sla_computer_kedifa_key = '-sla-kedifa-computer_guid' %}
{% if not sla_computer_kedifa_key in slapparameter_dict %} {%- if not sla_computer_kedifa_key in slapparameter_dict %}
{% do slapparameter_dict.__setitem__(sla_computer_kedifa_key, '${slap-connection:computer-id}') %} {%- do slapparameter_dict.__setitem__(sla_computer_kedifa_key, '${slap-connection:computer-id}') %}
{% endif %} {%- endif %}
{#- Here we request individually each frontend. #}
# Here we request individually each frontend. {#- The presence of sla parameters is checked and added if found #}
# The presence of sla parameters is checked and added if found {%- set NODE_DEFAULT_KEY_VALUE = {
{% set NODE_DEFAULT_KEY_VALUE = {
'enable-http3': 'false', 'enable-http3': 'false',
'http3-port': '443' 'http3-port': '443'
} %} } %}
{% for i in range(1, frontend_quantity + 1) %} {%- for i in range(1, frontend_quantity + 1) %}
{% set frontend_name = "%s-%s" % (NAME_BASE, i) %} {%- set frontend_name = "%s-%s" % (NAME_BASE, i) %}
{% set request_section_title = 'request-%s' % frontend_name %} {%- set request_section_title = 'request-%s' % frontend_name %}
{% set sla_key = "-sla-%s-" % i %} {%- set sla_key = "-sla-%s-" % i %}
{% set sla_key_length = sla_key | length %} {%- set sla_key_length = sla_key | length %}
{% set sla_dict = {} %} {%- set sla_dict = {} %}
{% set config_key = "-frontend-config-%s-" % i %} {%- set config_key = "-frontend-config-%s-" % i %}
{% set config_key_length = config_key | length %} {%- set config_key_length = config_key | length %}
{% set config_dict = {} %} {%- set config_dict = {} %}
{% for key in list(slapparameter_dict.keys()) %} {%- for key in list(slapparameter_dict.keys()) %}
{% if key.startswith(sla_key) %} {%- if key.startswith(sla_key) %}
{% do sla_dict.__setitem__(key[sla_key_length:], slapparameter_dict.pop(key)) %} {%- do sla_dict.__setitem__(key[sla_key_length:], slapparameter_dict.pop(key)) %}
# We check for specific configuration regarding the frontend {#- We check for specific configuration regarding the frontend #}
{% elif key.startswith(config_key) %} {%- elif key.startswith(config_key) %}
{% set node_config_key = key[config_key_length:] %} {%- set node_config_key = key[config_key_length:] %}
{% if node_config_key in ('enable-http3', 'http3-port') %} {%- if node_config_key in ('enable-http3', 'http3-port') %}
{% do config_dict.__setitem__(node_config_key, slapparameter_dict.pop(key) or slapparameter_dict.get(node_config_key) or NODE_DEFAULT_KEY_VALUE[node_config_key]) %} {%- do config_dict.__setitem__(node_config_key, slapparameter_dict.pop(key) or slapparameter_dict.get(node_config_key) or NODE_DEFAULT_KEY_VALUE[node_config_key]) %}
{% else %} {%- else %}
{% do config_dict.__setitem__(node_config_key, slapparameter_dict.pop(key)) %} {%- do config_dict.__setitem__(node_config_key, slapparameter_dict.pop(key)) %}
{% endif %} {%- endif %}
{% endif %} {%- endif %}
{% endfor %} {%- endfor %}
{% if 'http3-port' not in config_dict %} {%- if 'http3-port' not in config_dict %}
{% do config_dict.__setitem__('http3-port', slapparameter_dict.get('http3-port') or NODE_DEFAULT_KEY_VALUE['http3-port']) %} {%- do config_dict.__setitem__('http3-port', slapparameter_dict.get('http3-port') or NODE_DEFAULT_KEY_VALUE['http3-port']) %}
{% endif %} {%- endif %}
{% if 'enable-http3' not in config_dict %} {%- if 'enable-http3' not in config_dict %}
{% do config_dict.__setitem__('enable-http3', slapparameter_dict.get('enable-http3') or NODE_DEFAULT_KEY_VALUE['enable-http3']) %} {%- do config_dict.__setitem__('enable-http3', slapparameter_dict.get('enable-http3') or NODE_DEFAULT_KEY_VALUE['enable-http3']) %}
{% endif %} {%- endif %}
{% do config_dict.__setitem__('monitor-httpd-port', frontend_monitor_httpd_base_port + i) %} {%- do config_dict.__setitem__('monitor-httpd-port', frontend_monitor_httpd_base_port + i) %}
{% do config_dict.__setitem__('backend-client-caucase-url', caucase_url) %} {%- do config_dict.__setitem__('backend-client-caucase-url', caucase_url) %}
{% set state_key = "-frontend-%s-state" % i %} {%- set state_key = "-frontend-%s-state" % i %}
{% set frontend_state = slapparameter_dict.pop(state_key, None) %} {%- set frontend_state = slapparameter_dict.pop(state_key, None) %}
{% if frontend_state != 'destroyed' %} {%- if frontend_state != 'destroyed' %}
{% do frontend_list.append(frontend_name) %} {%- do frontend_list.append(frontend_name) %}
{% do frontend_section_list.append(request_section_title) %} {%- do frontend_section_list.append(request_section_title) %}
{% endif %} {%- endif %}
{% do part_list.append(request_section_title) %} {%- do part_list.append(request_section_title) %}
# Filling request dict for slave {#- Filling request dict for slave #}
{% set request_content_dict = { {%- set request_content_dict = {
'config': config_dict, 'config': config_dict,
'name': frontend_name, 'name': frontend_name,
'sla': sla_dict, 'sla': sla_dict,
'state': frontend_state 'state': frontend_state
} %} } %}
{% set frontend_software_url_key = "-frontend-%s-software-release-url" % i %} {%- set frontend_software_url_key = "-frontend-%s-software-release-url" % i %}
{% do request_content_dict.__setitem__('software-url', slapparameter_dict.get(frontend_software_url_key) or '${slap-connection:software-release-url}') %} {%- do request_content_dict.__setitem__('software-url', slapparameter_dict.get(frontend_software_url_key) or '${slap-connection:software-release-url}') %}
{% do request_dict.__setitem__(request_section_title, request_content_dict) %} {%- do request_dict.__setitem__(request_section_title, request_content_dict) %}
{% endfor %} {%- endfor %}
{% set authorized_slave_string_list = [] %} {%- set authorized_slave_string_list = [] %}
{% set authorized_slave_list = [] %} {%- set authorized_slave_list = [] %}
{% set rejected_slave_dict = {} %} {%- set rejected_slave_dict = {} %}
{% set critical_rejected_slave_dict = {} %} {%- set critical_rejected_slave_dict = {} %}
{% set warning_slave_dict = {} %} {%- set warning_slave_dict = {} %}
{% set used_host_list = [] %} {%- set used_host_list = [] %}
{% for slave in sorted(instance_parameter_dict['slave-instance-list'], key=operator_module.itemgetter('slave_reference')) %} {%- for slave in sorted(instance_parameter_dict['slave-instance-list'], key=operator_module.itemgetter('slave_reference')) %}
{% set slave_error_list = [] %} {%- set slave_error_list = [] %}
{% set slave_critical_error_list = [] %} {%- set slave_critical_error_list = [] %}
{% set slave_warning_list = [] %} {%- set slave_warning_list = [] %}
{% set slave_server_alias_unclashed = [] %} {%- set slave_server_alias_unclashed = [] %}
{% set slave_type = slave.get('type') %} {%- set slave_type = slave.get('type') %}
{% if slave_type not in [None, '', 'default', 'zope', 'redirect', 'notebook', 'websocket'] %} {%- if slave_type not in [None, '', 'default', 'zope', 'redirect', 'notebook', 'websocket'] %}
{% do slave_error_list.append('type:%s is not supported' % (slave_type,)) %} {%- do slave_error_list.append('type:%s is not supported' % (slave_type,)) %}
{% endif %} {%- endif %}
{# Check health-check-* #} {#- Check health-check-* #}
{% set health_check = (str(slave.get('health-check', False)) or 'false').lower() %} {%- set health_check = (str(slave.get('health-check', False)) or 'false').lower() %}
{% if health_check in TRUE_VALUES %} {%- if health_check in TRUE_VALUES %}
{% set health_check_http_method = slave.get('health-check-http-method') or 'GET' %} {%- set health_check_http_method = slave.get('health-check-http-method') or 'GET' %}
{% if health_check_http_method not in ['GET', 'OPTIONS', 'CONNECT', 'POST'] %} {%- if health_check_http_method not in ['GET', 'OPTIONS', 'CONNECT', 'POST'] %}
{% do slave_error_list.append('Wrong health-check-http-method %s' % (health_check_http_method,)) %} {%- do slave_error_list.append('Wrong health-check-http-method %s' % (health_check_http_method,)) %}
{% endif %} {%- endif %}
{% set health_check_http_path = slave.get('health-check-http-path') or '/' %} {%- set health_check_http_path = slave.get('health-check-http-path') or '/' %}
{% set health_check_http_version = slave.get('health-check-http-version') or 'HTTP/1.1' %} {%- set health_check_http_version = slave.get('health-check-http-version') or 'HTTP/1.1' %}
{% if health_check_http_version not in ['HTTP/1.1', 'HTTP/1.0'] %} {%- if health_check_http_version not in ['HTTP/1.1', 'HTTP/1.0'] %}
{% do slave_error_list.append('Wrong health-check-http-version %s' % (health_check_http_version,)) %} {%- do slave_error_list.append('Wrong health-check-http-version %s' % (health_check_http_version,)) %}
{% endif %} {%- endif %}
{% set health_check_timeout = (slave.get('health-check-timeout') or '2') | int(false) %} {%- set health_check_timeout = (slave.get('health-check-timeout') or '2') | int(false) %}
{% if health_check_timeout is false or health_check_timeout <= 0 %} {%- if health_check_timeout is false or health_check_timeout <= 0 %}
{% do slave_error_list.append('Wrong health-check-timeout %s' % (slave.get('health-check-timeout'),)) %} {%- do slave_error_list.append('Wrong health-check-timeout %s' % (slave.get('health-check-timeout'),)) %}
{% endif %} {%- endif %}
{% set health_check_interval = (slave.get('health-check-interval') or '5') | int(false) %} {%- set health_check_interval = (slave.get('health-check-interval') or '5') | int(false) %}
{% if health_check_interval is false or health_check_interval <= 0 %} {%- if health_check_interval is false or health_check_interval <= 0 %}
{% do slave_error_list.append('Wrong health-check-interval %s' % (slave.get('health-check-interval'),)) %} {%- do slave_error_list.append('Wrong health-check-interval %s' % (slave.get('health-check-interval'),)) %}
{% endif %} {%- endif %}
{% set health_check_rise = (slave.get('health-check-rise') or '1') | int(false) %} {%- set health_check_rise = (slave.get('health-check-rise') or '1') | int(false) %}
{% if health_check_rise is false or health_check_rise <= 0 %} {%- if health_check_rise is false or health_check_rise <= 0 %}
{% do slave_error_list.append('Wrong health-check-rise %s' % (slave.get('health-check-rise'),)) %} {%- do slave_error_list.append('Wrong health-check-rise %s' % (slave.get('health-check-rise'),)) %}
{% endif %} {%- endif %}
{% set health_check_fall = (slave.get('health-check-fall') or '1') | int(false) %} {%- set health_check_fall = (slave.get('health-check-fall') or '1') | int(false) %}
{% if health_check_fall is false or health_check_fall <= 0 %} {%- if health_check_fall is false or health_check_fall <= 0 %}
{% do slave_error_list.append('Wrong health-check-fall %s' % (slave.get('health-check-fall'),)) %} {%- do slave_error_list.append('Wrong health-check-fall %s' % (slave.get('health-check-fall'),)) %}
{% endif %} {%- endif %}
{% endif %} {%- endif %}
{# Check virtualhostroot-http-port and virtualhostroot-https-port #} {#- Check virtualhostroot-http-port and virtualhostroot-https-port #}
{% for key in ['virtualhostroot-http-port', 'virtualhostroot-https-port'] %} {%- for key in ['virtualhostroot-http-port', 'virtualhostroot-https-port'] %}
{% set value = (slave.get(key) or '1') | int(false) %} {%- set value = (slave.get(key) or '1') | int(false) %}
{% if value is false or value < 0 %} {%- if value is false or value < 0 %}
{% do slave_error_list.append('Wrong %s %r' % (key, slave.get(key))) %} {%- do slave_error_list.append('Wrong %s %r' % (key, slave.get(key))) %}
{% endif %} {%- endif %}
{% endfor %} {%- endfor %}
{# Check ciphers #} {#- Check ciphers #}
{% set slave_cipher_list = slave.get('ciphers', '').strip().split() %} {%- set slave_cipher_list = slave.get('ciphers', '').strip().split() %}
{% if slave_cipher_list %} {%- if slave_cipher_list %}
{% for cipher in slave_cipher_list %} {%- for cipher in slave_cipher_list %}
{% if cipher not in GOOD_CIPHER_LIST %} {%- if cipher not in GOOD_CIPHER_LIST %}
{% if cipher in CIPHER_TRANSLATION_DICT %} {%- if cipher in CIPHER_TRANSLATION_DICT %}
{# Real translation happens in instance-slave-list.cfg.in #} {#- Real translation happens in instance-slave-list.cfg.in #}
{% do slave_warning_list.append('Cipher %r translated to %r' % (cipher, CIPHER_TRANSLATION_DICT[cipher])) %} {%- do slave_warning_list.append('Cipher %r translated to %r' % (cipher, CIPHER_TRANSLATION_DICT[cipher])) %}
{% else %} {%- else %}
{% do slave_error_list.append('Cipher %r is not supported.' % (cipher,)) %} {%- do slave_error_list.append('Cipher %r is not supported.' % (cipher,)) %}
{% endif %} {%- endif %}
{% endif %} {%- endif %}
{% endfor %} {%- endfor %}
{% endif %} {%- endif %}
{# Check strict-transport-security #} {#- Check strict-transport-security #}
{% set strict_transport_security = (slave.get('strict-transport-security') or '0') | int(false) %} {%- set strict_transport_security = (slave.get('strict-transport-security') or '0') | int(false) %}
{% if strict_transport_security is false or strict_transport_security < 0 %} {%- if strict_transport_security is false or strict_transport_security < 0 %}
{% do slave_error_list.append('Wrong strict-transport-security %s' % (slave.get('strict-transport-security'),)) %} {%- do slave_error_list.append('Wrong strict-transport-security %s' % (slave.get('strict-transport-security'),)) %}
{% endif %} {%- endif %}
{% set custom_domain = slave.get('custom_domain') %} {%- set custom_domain = slave.get('custom_domain') %}
{% if custom_domain and custom_domain in used_host_list %} {%- if custom_domain and custom_domain in used_host_list %}
{% set message = 'custom_domain %r clashes' % (custom_domain,) %} {%- set message = 'custom_domain %r clashes' % (custom_domain,) %}
{% do slave_error_list.append(message) %} {%- do slave_error_list.append(message) %}
{% do slave_critical_error_list.append(message) %} {%- do slave_critical_error_list.append(message) %}
{% else %} {%- else %}
{% do used_host_list.append(custom_domain) %} {%- do used_host_list.append(custom_domain) %}
{% endif %} {%- endif %}
{% if slave.get('server-alias') %} {%- if slave.get('server-alias') %}
{% for slave_alias in ('' ~ slave['server-alias']).split() %} {%- for slave_alias in ('' ~ slave['server-alias']).split() %}
{% if slave_alias.startswith('*.') %} {%- if slave_alias.startswith('*.') %}
{% set clean_slave_alias = slave_alias[2:] %} {%- set clean_slave_alias = slave_alias[2:] %}
{% else %} {%- else %}
{% set clean_slave_alias = slave_alias %} {%- set clean_slave_alias = slave_alias %}
{% endif %} {%- endif %}
{% if not validators.domain(clean_slave_alias) %} {%- if not validators.domain(clean_slave_alias) %}
{% do slave_error_list.append('server-alias \'%s\' not valid' % (slave_alias,)) %} {%- do slave_error_list.append('server-alias \'%s\' not valid' % (slave_alias,)) %}
{% else %} {%- else %}
{% if slave_alias in slave_server_alias_unclashed or slave_alias == custom_domain %} {%- if slave_alias in slave_server_alias_unclashed or slave_alias == custom_domain %}
{# optionally do something about reporting back that server-alias has been unclashed #} {#- optionally do something about reporting back that server-alias has been unclashed #}
{% elif slave_alias in used_host_list %} {%- elif slave_alias in used_host_list %}
{% set message = 'server-alias \'%s\' clashes' % (slave_alias,) %} {%- set message = 'server-alias \'%s\' clashes' % (slave_alias,) %}
{% do slave_error_list.append(message) %} {%- do slave_error_list.append(message) %}
{% do slave_critical_error_list.append(message) %} {%- do slave_critical_error_list.append(message) %}
{% else %} {%- else %}
{% do slave_server_alias_unclashed.append(slave_alias) %} {%- do slave_server_alias_unclashed.append(slave_alias) %}
{% do used_host_list.append(slave_alias) %} {%- do used_host_list.append(slave_alias) %}
{% endif %} {%- endif %}
{% endif %} {%- endif %}
{% endfor %} {%- endfor %}
{% do slave.__setitem__('server-alias', ' '.join(slave_server_alias_unclashed)) %} {%- do slave.__setitem__('server-alias', ' '.join(slave_server_alias_unclashed)) %}
{% endif %} {%- endif %}
{% for url_key in ['url', 'https-url', 'health-check-failover-url', 'health-check-failover-https-url'] %} {%- for url_key in ['url', 'https-url', 'health-check-failover-url', 'health-check-failover-https-url'] %}
{% if url_key in slave %} {%- if url_key in slave %}
{% set url = (slave[url_key] or '').strip() %} {%- set url = (slave[url_key] or '').strip() %}
{% if not validators.url(url) %} {%- if not validators.url(url) %}
{% do slave_error_list.append('slave %s %r invalid' % (url_key, url)) %} {%- do slave_error_list.append('slave %s %r invalid' % (url_key, url)) %}
{% elif url != slave[url_key] %} {%- elif url != slave[url_key] %}
{% do slave_warning_list.append('slave %s %r has been converted to %r' % (url_key, slave[url_key], url)) %} {%- do slave_warning_list.append('slave %s %r has been converted to %r' % (url_key, slave[url_key], url)) %}
{% endif %} {%- endif %}
{% endif %} {%- endif %}
{% endfor %} {%- endfor %}
{% for url_key in ['url-netloc-list', 'https-url-netloc-list', 'health-check-failover-url-netloc-list'] %} {%- for url_key in ['url-netloc-list', 'https-url-netloc-list', 'health-check-failover-url-netloc-list'] %}
{% if url_key in slave %} {%- if url_key in slave %}
{% for netloc in slave[url_key].split() %} {%- for netloc in slave[url_key].split() %}
{% if not software.validate_netloc(netloc) %} {%- if not software.validate_netloc(netloc) %}
{% do slave_error_list.append('slave %s %r invalid' % (url_key, netloc)) %} {%- do slave_error_list.append('slave %s %r invalid' % (url_key, netloc)) %}
{% endif %} {%- endif %}
{% endfor %} {%- endfor %}
{% endif %} {%- endif %}
{% endfor %} {%- endfor %}
{% for k in ['ssl_proxy_ca_crt', 'health-check-failover-ssl-proxy-ca-crt'] %} {%- for k in ['ssl_proxy_ca_crt', 'health-check-failover-ssl-proxy-ca-crt'] %}
{% if k in slave %} {%- if k in slave %}
{% set crt = slave.get(k, '') %} {%- set crt = slave.get(k, '') %}
{% set check_popen = popen([software_parameter_dict['openssl'], 'x509', '-noout']) %} {%- set check_popen = popen([software_parameter_dict['openssl'], 'x509', '-noout']) %}
{% do check_popen.communicate(crt.encode()) %} {%- do check_popen.communicate(crt.encode()) %}
{% if check_popen.returncode != 0 %} {%- if check_popen.returncode != 0 %}
{% do slave_error_list.append('%s is invalid' % (k,)) %} {%- do slave_error_list.append('%s is invalid' % (k,)) %}
{% endif %} {%- endif %}
{% endif %} {%- endif %}
{% endfor %} {%- endfor %}
{# BBB: SlapOS Master non-zero knowledge BEGIN #} {#- BBB: SlapOS Master non-zero knowledge BEGIN #}
{% for key in ['ssl_key', 'ssl_crt', 'ssl_ca_crt'] %} {%- for key in ['ssl_key', 'ssl_crt', 'ssl_ca_crt'] %}
{% if key in slave %} {%- if key in slave %}
{% do slave_warning_list.append('%s is obsolete, please use key-upload-url' % (key,)) %} {%- do slave_warning_list.append('%s is obsolete, please use key-upload-url' % (key,)) %}
{% endif %} {%- endif %}
{% endfor %} {%- endfor %}
{% if slave.get('ssl_ca_crt') and not (slave.get('ssl_crt') and slave.get('ssl_key')) %} {%- if slave.get('ssl_ca_crt') and not (slave.get('ssl_crt') and slave.get('ssl_key')) %}
{% do slave_error_list.append('ssl_ca_crt is present, so ssl_crt and ssl_key are required') %} {%- do slave_error_list.append('ssl_ca_crt is present, so ssl_crt and ssl_key are required') %}
{% endif %} {%- endif %}
{% if slave.get('ssl_key') and slave.get('ssl_crt') %} {%- if slave.get('ssl_key') and slave.get('ssl_crt') %}
{% set key_popen = popen([software_parameter_dict['openssl'], 'rsa', '-noout', '-modulus']) %} {%- set key_popen = popen([software_parameter_dict['openssl'], 'rsa', '-noout', '-modulus']) %}
{% set crt_popen = popen([software_parameter_dict['openssl'], 'x509', '-noout', '-modulus']) %} {%- set crt_popen = popen([software_parameter_dict['openssl'], 'x509', '-noout', '-modulus']) %}
{% set key_modulus = key_popen.communicate(slave['ssl_key'].encode())[0] | trim %} {%- set key_modulus = key_popen.communicate(slave['ssl_key'].encode())[0] | trim %}
{% set crt_modulus = crt_popen.communicate(slave['ssl_crt'].encode())[0] | trim %} {%- set crt_modulus = crt_popen.communicate(slave['ssl_crt'].encode())[0] | trim %}
{% if not key_modulus or key_modulus != crt_modulus %} {%- if not key_modulus or key_modulus != crt_modulus %}
{% do slave_error_list.append('slave ssl_key and ssl_crt does not match') %} {%- do slave_error_list.append('slave ssl_key and ssl_crt does not match') %}
{% endif %} {%- endif %}
{% endif %} {%- endif %}
{# BBB: SlapOS Master non-zero knowledge END #} {#- BBB: SlapOS Master non-zero knowledge END #}
{% if slave.get('custom_domain') %} {%- if slave.get('custom_domain') %}
{% set slave_custom_domain = '' ~ slave['custom_domain'] %} {%- set slave_custom_domain = '' ~ slave['custom_domain'] %}
{% if slave_custom_domain.startswith('*.') %} {%- if slave_custom_domain.startswith('*.') %}
{% set clean_custom_domain = slave_custom_domain[2:] %} {%- set clean_custom_domain = slave_custom_domain[2:] %}
{% else %} {%- else %}
{% set clean_custom_domain = slave_custom_domain %} {%- set clean_custom_domain = slave_custom_domain %}
{% endif %} {%- endif %}
{% if not validators.domain(clean_custom_domain) %} {%- if not validators.domain(clean_custom_domain) %}
{% do slave_error_list.append('custom_domain %r invalid' % (slave['custom_domain'],)) %} {%- do slave_error_list.append('custom_domain %r invalid' % (slave['custom_domain'],)) %}
{% endif %} {%- endif %}
{% endif %} {%- endif %}
{% if len(slave_error_list) == 0 %} {%- if len(slave_error_list) == 0 %}
{# Cleanup slave from not needed keys which come from implementation of SlapOS Master #} {#- Cleanup slave from not needed keys which come from implementation of SlapOS Master #}
{# Send only controlled information about the slave to node #} {#- Send only controlled information about the slave to node #}
{% set authorized_slave = {} %} {%- set authorized_slave = {} %}
{% for key in FRONTEND_NODE_SLAVE_PASSED_KEY_LIST + FRONTEND_NODE_SLAVE_PASSED_KEY_LIST %} {%- for key in FRONTEND_NODE_SLAVE_PASSED_KEY_LIST + FRONTEND_NODE_SLAVE_PASSED_KEY_LIST %}
{% if key in slave %} {%- if key in slave %}
{% do authorized_slave.__setitem__(key, slave[key]) %} {%- do authorized_slave.__setitem__(key, slave[key]) %}
{% endif %} {%- endif %}
{% endfor %} {%- endfor %}
{% do authorized_slave_list.append(authorized_slave) %} {%- do authorized_slave_list.append(authorized_slave) %}
{% else %} {%- else %}
{% do rejected_slave_dict.__setitem__(slave.get('slave_reference'), sorted(slave_error_list)) %} {%- do rejected_slave_dict.__setitem__(slave.get('slave_reference'), sorted(slave_error_list)) %}
{% endif %} {%- endif %}
{% if len(slave_critical_error_list) > 0 %} {%- if len(slave_critical_error_list) > 0 %}
{% do critical_rejected_slave_dict.__setitem__(slave.get('slave_reference'), sorted(slave_critical_error_list)) %} {%- do critical_rejected_slave_dict.__setitem__(slave.get('slave_reference'), sorted(slave_critical_error_list)) %}
{% endif %} {%- endif %}
{% if len(slave_warning_list) > 0 %} {%- if len(slave_warning_list) > 0 %}
{% do warning_slave_dict.__setitem__(slave.get('slave_reference'), sorted(slave_warning_list)) %} {%- do warning_slave_dict.__setitem__(slave.get('slave_reference'), sorted(slave_warning_list)) %}
{% endif %} {%- endif %}
{% endfor %} {%- endfor %}
{% do authorized_slave_list.sort(key=operator_module.itemgetter('slave_reference')) %} {%- do authorized_slave_list.sort(key=operator_module.itemgetter('slave_reference')) %}
[monitor-instance-parameter] [monitor-instance-parameter]
monitor-httpd-port = {{ master_partition_monitor_monitor_httpd_port }} monitor-httpd-port = {{ master_partition_monitor_monitor_httpd_port }}
...@@ -397,50 +396,50 @@ return = slave-instance-information-list monitor-base-url backend-client-csr-url ...@@ -397,50 +396,50 @@ return = slave-instance-information-list monitor-base-url backend-client-csr-url
{%- do base_node_configuration_dict.__setitem__(key, slapparameter_dict[key]) %} {%- do base_node_configuration_dict.__setitem__(key, slapparameter_dict[key]) %}
{%- endif %} {%- endif %}
{%- endfor %} {%- endfor %}
{% for section, frontend_request in request_dict.items() %} {%- for section, frontend_request in request_dict.items() %}
{% set state = frontend_request.get('state', '') %} {%- set state = frontend_request.get('state', '') %}
[{{section}}] [{{section}}]
<= replicate <= replicate
name = {{ frontend_request.get('name') }} name = {{ frontend_request.get('name') }}
software-url = {{ frontend_request['software-url'] }} software-url = {{ frontend_request['software-url'] }}
{% if state %} {%- if state %}
state = {{ state }} state = {{ state }}
{% endif %} {%- endif %}
{# Do not send additional parameters for destroyed nodes #} {#- Do not send additional parameters for destroyed nodes #}
{% if state != 'destroyed' %} {%- if state != 'destroyed' %}
config-slave-kedifa-information = ${request-kedifa:connection-slave-kedifa-information} config-slave-kedifa-information = ${request-kedifa:connection-slave-kedifa-information}
config-kedifa-caucase-url = ${request-kedifa:connection-caucase-url} config-kedifa-caucase-url = ${request-kedifa:connection-caucase-url}
config-backend-client-caucase-url = {{ caucase_url }} config-backend-client-caucase-url = {{ caucase_url }}
config-master-key-download-url = ${request-kedifa:connection-master-key-download-url} config-master-key-download-url = ${request-kedifa:connection-master-key-download-url}
config-cluster-identification = {{ instance_parameter_dict['root-instance-title'] }} config-cluster-identification = {{ instance_parameter_dict['root-instance-title'] }}
{% set node_configuration_dict = {} %} {%- set node_configuration_dict = {} %}
{% do node_configuration_dict.update(frontend_request.get('config')) %} {%- do node_configuration_dict.update(frontend_request.get('config')) %}
{# sort_keys are important in order to avoid shuffling parameters on each run #} {#- sort_keys are important in order to avoid shuffling parameters on each run #}
{% do node_configuration_dict.__setitem__(slave_list_name, json_module.dumps(authorized_slave_list, sort_keys=True)) %} {%- do node_configuration_dict.__setitem__(slave_list_name, json_module.dumps(authorized_slave_list, sort_keys=True)) %}
{% do node_configuration_dict.__setitem__("frontend-name", frontend_request.get('name')) %} {%- do node_configuration_dict.__setitem__("frontend-name", frontend_request.get('name')) %}
{%- for config_key, config_value in node_configuration_dict.items() %} {%- for config_key, config_value in node_configuration_dict.items() %}
config-{{ config_key }} = {{ dumps(config_value) }} config-{{ config_key }} = {{ dumps(config_value) }}
{% endfor -%} {%- endfor -%}
{%- for config_key, config_value in base_node_configuration_dict.items() %} {%- for config_key, config_value in base_node_configuration_dict.items() %}
config-{{ config_key }} = {{ dumps(config_value) }} config-{{ config_key }} = {{ dumps(config_value) }}
{% endfor -%} {%- endfor -%}
{% if frontend_request.get('sla') %} {%- if frontend_request.get('sla') %}
{% for parameter, value in frontend_request.get('sla').items() %} {%- for parameter, value in frontend_request.get('sla').items() %}
sla-{{ parameter }} = {{ value }} sla-{{ parameter }} = {{ value }}
{% endfor %} {%- endfor %}
{% endif %} {%- endif %}
{% else %} {%- else %}
{# Ignore return for destroyed nodes #} {#- Ignore return for destroyed nodes #}
return = return =
{% endif %} {%- endif %}
{% endfor %} {%- endfor %}
{% set warning_list = [] %} {%- set warning_list = [] %}
{% for key in ['apache-certificate', 'apache-key'] %} {%- for key in ['apache-certificate', 'apache-key'] %}
{% if key in slapparameter_dict %} {%- if key in slapparameter_dict %}
{% do warning_list.append('%s is obsolete, please use master-key-upload-url' % (key, )) %} {%- do warning_list.append('%s is obsolete, please use master-key-upload-url' % (key, )) %}
{% endif %} {%- endif %}
{% endfor %} {%- endfor %}
[publish-information] [publish-information]
<= monitor-publish <= monitor-publish
...@@ -457,56 +456,54 @@ publish-failsafe-error-promise-url = ${publish-failsafe-error-promise:config-url ...@@ -457,56 +456,54 @@ publish-failsafe-error-promise-url = ${publish-failsafe-error-promise:config-url
master-key-upload-url = ${request-kedifa:connection-master-key-upload-url} master-key-upload-url = ${request-kedifa:connection-master-key-upload-url}
master-key-generate-auth-url = ${request-kedifa:connection-master-key-generate-auth-url} master-key-generate-auth-url = ${request-kedifa:connection-master-key-generate-auth-url}
kedifa-caucase-url = ${request-kedifa:connection-caucase-url} kedifa-caucase-url = ${request-kedifa:connection-caucase-url}
{% if len(warning_list) > 0 %} {%- if len(warning_list) > 0 %}
{# sort_keys are important in order to avoid shuffling parameters on each run #} {#- sort_keys are important in order to avoid shuffling parameters on each run #}
warning-list = {{ dumps(json_module.dumps(warning_list, sort_keys=True)) }} warning-list = {{ dumps(json_module.dumps(warning_list, sort_keys=True)) }}
{% endif %} {%- endif %}
{% if len(warning_slave_dict) > 0 %} {%- if len(warning_slave_dict) > 0 %}
{# sort_keys are important in order to avoid shuffling parameters on each run #} {#- sort_keys are important in order to avoid shuffling parameters on each run #}
warning-slave-dict = {{ dumps(json_module.dumps(warning_slave_dict, sort_keys=True)) }} warning-slave-dict = {{ dumps(json_module.dumps(warning_slave_dict, sort_keys=True)) }}
{% endif %} {%- endif %}
{% if not aikc_enabled or not aibcc_enabled %} {%- if not aikc_enabled or not aibcc_enabled %}
{% for index, frontend in enumerate(frontend_list) %} {%- for index, frontend in enumerate(frontend_list) %}
{% set section_part = '${request-' + frontend %} {% set section_part = '${request-' + frontend %}
frontend-node-{{ index + 1 }}-csr-certificate = {{ section_part }}:connection-csr-certificate} frontend-node-{{ index + 1 }}-csr-certificate = {{ section_part }}:connection-csr-certificate}
{% endfor %} {%- endfor %}
{% endif %} {%- endif %}
{% if not aikc_enabled %} {%- if not aikc_enabled %}
kedifa-csr-url = ${request-kedifa:connection-kedifa-csr-url} kedifa-csr-url = ${request-kedifa:connection-kedifa-csr-url}
kedifa-csr-certificate = ${request-kedifa:connection-csr-certificate} kedifa-csr-certificate = ${request-kedifa:connection-csr-certificate}
{% for index, frontend in enumerate(frontend_list) %} {%- for index, frontend in enumerate(frontend_list) %}
{% set section_part = '${request-' + frontend %} {% set section_part = '${request-' + frontend %}
frontend-node-{{ index + 1 }}-kedifa-csr-url = {{ section_part }}:connection-kedifa-csr-url} frontend-node-{{ index + 1 }}-kedifa-csr-url = {{ section_part }}:connection-kedifa-csr-url}
{% endfor %} {%- endfor %}
{% endif %} {%- endif %}
{% for index, frontend in enumerate(frontend_list) %} {%- for index, frontend in enumerate(frontend_list) %}
{% set section_part = '${request-' + frontend %} {% set section_part = '${request-' + frontend %}
frontend-node-{{ index + 1 }}-backend-haproxy-statistic-url = {{ section_part }}:connection-backend-haproxy-statistic-url} frontend-node-{{ index + 1 }}-backend-haproxy-statistic-url = {{ section_part }}:connection-backend-haproxy-statistic-url}
frontend-node-{{ index + 1 }}-node-information-json = ${frontend-information:frontend-node-{{ index + 1 }}-node-information-json} frontend-node-{{ index + 1 }}-node-information-json = ${frontend-information:frontend-node-{{ index + 1 }}-node-information-json}
{% endfor %} {%- endfor %}
{% if not aibcc_enabled %} {%- if not aibcc_enabled %}
{% for index, frontend in enumerate(frontend_list) %} {%- for index, frontend in enumerate(frontend_list) %}
{% set section_part = '${request-' + frontend %} {% set section_part = '${request-' + frontend %}
frontend-node-{{ index + 1 }}-backend-client-csr-url = {{ section_part }}:connection-backend-client-csr-url} frontend-node-{{ index + 1 }}-backend-client-csr-url = {{ section_part }}:connection-backend-client-csr-url}
{% endfor %} {%- endfor %}
{% endif %} {%- endif %}
# Generate promises for requested nodes {#- Generate promises for requested nodes #}
{% for index, frontend in enumerate(frontend_list) %} {%- for index, frontend in enumerate(frontend_list) %}
{% set part_name = 'promise-backend-haproxy-statistic-url-' + frontend %} {%- set part_name = 'promise-backend-haproxy-statistic-url-' + frontend %}
{% do part_list.append(part_name) %} {%- do part_list.append(part_name) %}
{% set section_part = '${request-' + frontend %} {%- set section_part = '${request-' + frontend %}
[{{ part_name }}] [{{ part_name }}]
<= monitor-promise-base <= monitor-promise-base
promise = check_url_available promise = check_url_available
name = check-backend-haproxy-statistic-url-frontend-node-{{ index + 1 }}.py name = check-backend-haproxy-statistic-url-frontend-node-{{ index + 1 }}.py
config-url = config-url =
{{ section_part }}:connection-backend-haproxy-statistic-url} {{ section_part }}:connection-backend-haproxy-statistic-url}
{% endfor %} {%- endfor %}
#---------------------------- {#- Publish slave information #}
#--
#-- Publish slave information
[publish-slave-information] [publish-slave-information]
recipe = slapos.cookbook:switch-softwaretype recipe = slapos.cookbook:switch-softwaretype
default = instance-publish-slave-information:output default = instance-publish-slave-information:output
...@@ -521,7 +518,7 @@ config-monitor-cors-domains = {{ slapparameter_dict.get('monitor-cors-domains', ...@@ -521,7 +518,7 @@ config-monitor-cors-domains = {{ slapparameter_dict.get('monitor-cors-domains',
config-monitor-username = ${monitor-instance-parameter:username} config-monitor-username = ${monitor-instance-parameter:username}
config-monitor-password = ${monitor-htpasswd:passwd} config-monitor-password = ${monitor-htpasswd:passwd}
config-monitor-httpd-port = {{ kedifa_partition_monitor_httpd_port }} config-monitor-httpd-port = {{ kedifa_partition_monitor_httpd_port }}
{% for key in ['kedifa_port', 'caucase_port'] -%} {%- for key in ['kedifa_port', 'caucase_port'] -%}
{%- if key in slapparameter_dict %} {%- if key in slapparameter_dict %}
config-{{ key }} = {{ dumps(slapparameter_dict[key]) }} config-{{ key }} = {{ dumps(slapparameter_dict[key]) }}
{%- endif %} {%- endif %}
...@@ -529,22 +526,22 @@ config-{{ key }} = {{ dumps(slapparameter_dict[key]) }} ...@@ -529,22 +526,22 @@ config-{{ key }} = {{ dumps(slapparameter_dict[key]) }}
config-slave-list = {{ dumps(authorized_slave_list) }} config-slave-list = {{ dumps(authorized_slave_list) }}
config-cluster-identification = {{ instance_parameter_dict['root-instance-title'] }} config-cluster-identification = {{ instance_parameter_dict['root-instance-title'] }}
{% set software_url_key = "-kedifa-software-release-url" %} {%- set software_url_key = "-kedifa-software-release-url" %}
{% if software_url_key in slapparameter_dict %} {%- if software_url_key in slapparameter_dict %}
software-url = {{ slapparameter_dict.pop(software_url_key) }} software-url = {{ slapparameter_dict.pop(software_url_key) }}
{% else %} {%- else %}
software-url = ${slap-connection:software-release-url} software-url = ${slap-connection:software-release-url}
{% endif %} {%- endif %}
software-type = kedifa software-type = kedifa
name = kedifa name = kedifa
return = slave-kedifa-information master-key-generate-auth-url master-key-upload-url master-key-download-url caucase-url kedifa-csr-url csr-certificate monitor-base-url return = slave-kedifa-information master-key-generate-auth-url master-key-upload-url master-key-download-url caucase-url kedifa-csr-url csr-certificate monitor-base-url
{% set sla_kedifa_key = "-sla-kedifa-" %} {%- set sla_kedifa_key = "-sla-kedifa-" %}
{% set sla_kedifa_key_length = sla_kedifa_key | length %} {%- set sla_kedifa_key_length = sla_kedifa_key | length %}
{% for key in list(slapparameter_dict.keys()) %} {%- for key in list(slapparameter_dict.keys()) %}
{% if key.startswith(sla_kedifa_key) %} {%- if key.startswith(sla_kedifa_key) %}
sla-{{ key[sla_kedifa_key_length:] }} = {{ slapparameter_dict.pop(key) }} sla-{{ key[sla_kedifa_key_length:] }} = {{ slapparameter_dict.pop(key) }}
{% endif %} {%- endif %}
{% endfor %} {%- endfor %}
[rejected-slave-information] [rejected-slave-information]
rejected-slave-dict = {{ dumps(rejected_slave_dict) }} rejected-slave-dict = {{ dumps(rejected_slave_dict) }}
...@@ -553,18 +550,18 @@ rejected-slave-dict = {{ dumps(rejected_slave_dict) }} ...@@ -553,18 +550,18 @@ rejected-slave-dict = {{ dumps(rejected_slave_dict) }}
warning-slave-dict = {{ dumps(warning_slave_dict) }} warning-slave-dict = {{ dumps(warning_slave_dict) }}
[slave-information] [slave-information]
{% for frontend_section in frontend_section_list %} {%- for frontend_section in frontend_section_list %}
{{ frontend_section }} = {{ "${%s:connection-slave-instance-information-list}" % frontend_section }} {{ frontend_section }} = {{ "${%s:connection-slave-instance-information-list}" % frontend_section }}
{% endfor %} {%- endfor %}
[active-slave-instance] [active-slave-instance]
{% set active_slave_instance_list = [] %} {%- set active_slave_instance_list = [] %}
{% for slave_instance in instance_parameter_dict['slave-instance-list'] %} {%- for slave_instance in instance_parameter_dict['slave-instance-list'] %}
{# Provide a list of slave titles send by master, in order to filter out already destroyed slaves #} {#- Provide a list of slave titles send by master, in order to filter out already destroyed slaves #}
{# Note: This functionality is not yet covered by tests, please modify with care #} {#- Note: This functionality is not yet covered by tests, please modify with care #}
{% do active_slave_instance_list.append(slave_instance['slave_reference']) %} {%- do active_slave_instance_list.append(slave_instance['slave_reference']) %}
{% endfor %} {%- endfor %}
{# sort_keys are important in order to avoid shuffling parameters on each run #} {#- sort_keys are important in order to avoid shuffling parameters on each run #}
active-slave-instance-list = {{ json_module.dumps(active_slave_instance_list, sort_keys=True) }} active-slave-instance-list = {{ json_module.dumps(active_slave_instance_list, sort_keys=True) }}
[frontend-information] [frontend-information]
...@@ -599,12 +596,9 @@ bin = ${buildout:directory}/bin/ ...@@ -599,12 +596,9 @@ bin = ${buildout:directory}/bin/
srv = ${buildout:directory}/srv/ srv = ${buildout:directory}/srv/
tmp = ${buildout:directory}/tmp/ tmp = ${buildout:directory}/tmp/
backup = ${:srv}/backup backup = ${:srv}/backup
# CAUCASE directories
caucased = ${:srv}/caucased caucased = ${:srv}/caucased
backup-caucased = ${:backup}/caucased backup-caucased = ${:backup}/caucased
# NGINX
master-introspection-var = ${:var}/master-introspection-nginx master-introspection-var = ${:var}/master-introspection-nginx
# slaves
publish-failsafe-error-var = ${:var}/publish-failsafe-error publish-failsafe-error-var = ${:var}/publish-failsafe-error
publish-failsafe-check-var = ${:var}/publish-failsafe-check publish-failsafe-check-var = ${:var}/publish-failsafe-check
...@@ -784,8 +778,8 @@ output = ${directory:bin}/aibcc-caucase-wrapper ...@@ -784,8 +778,8 @@ output = ${directory:bin}/aibcc-caucase-wrapper
{% do part_list.append('aibcc-create-user') %} {% do part_list.append('aibcc-create-user') %}
[aibcc-create-user] [aibcc-create-user]
recipe = plone.recipe.command recipe = plone.recipe.command
# the caucase for this part is provided in this profile, so we can't fail {#- the caucase for this part is provided in this profile, so we can't fail #}
# as otherwise caucase will never be started... {#- as otherwise caucase will never be started... #}
{#- XXX: Create promise #} {#- XXX: Create promise #}
stop-on-error = False stop-on-error = False
update-command = ${:command} update-command = ${:command}
...@@ -1100,6 +1094,6 @@ parts = ...@@ -1100,6 +1094,6 @@ parts =
master-key-generate-auth-url-ready-promise master-key-generate-auth-url-ready-promise
master-key-download-url-ready-promise master-key-download-url-ready-promise
master-introspection-frontend master-introspection-frontend
{% for part in part_list %} {%- for part in part_list %}
{{ ' %s' % part }} {{ ' %s' % part }}
{% endfor %} {%- endfor %}
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