replicate-publish-slave-information.cfg.in 3.11 KB
Newer Older
1 2
{% set part_list = [] %}
{% set slave_information_dict = {} %}
3 4

# regroup slave information from all frontends
5
{% for frontend, slave_list_raw in slave_information.iteritems() %}
6
{%   if slave_list_raw %}
7
{%     set slave_list = json_module.loads(slave_list_raw) %}
8 9 10
{%   else %}
{%    set slave_list = [] %}
{%   endif %}
11
{%   for slave_dict in slave_list %}
12 13 14
{%     set slave_reference = slave_dict.pop('slave-reference') %}
{%     set log_access_url = slave_dict.pop('log-access', '') %}
{%     set current_slave_dict = slave_information_dict.get(slave_reference, {}) %}
15
{%     do current_slave_dict.update(slave_dict) %}
16 17 18 19 20 21 22 23 24
{%     set log_access_list = current_slave_dict.get('log-access-urls', []) %}
{%     do log_access_list.append( frontend + ': ' + log_access_url) %}
{%     do current_slave_dict.__setitem__(
            'log-access-urls',
            log_access_list
            ) %}
{%     do current_slave_dict.__setitem__(
            'replication_number',
            current_slave_dict.get('replication_number', 0) + 1
25 26 27
            ) %}
{%     do slave_information_dict.__setitem__(slave_reference, current_slave_dict) %}
{%   endfor %}
28 29
{% endfor %}

30 31 32 33 34 35 36
{% for slave_reference, rejected_info_list in rejected_slave_information.iteritems() %}
{%   if slave_reference not in slave_information_dict %}
{%     do slave_information_dict.__setitem__(slave_reference, {}) %}
{%   endif %}
{%   do slave_information_dict[slave_reference].__setitem__('request-error-list', rejected_info_list) %}
{% endfor %}

37 38 39 40 41 42 43 44 45 46
{% for slave_reference, kedifa_dict in json_module.loads(slave_kedifa_information).iteritems() %}
{%   if slave_reference not in rejected_slave_information %}
{%     if slave_reference not in slave_information_dict %}
{%       do slave_information_dict.__setitem__(slave_reference, {}) %}
{%     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-upload-url', kedifa_dict['key-upload-url']) %}
{%   endif %}
{% endfor %}

47
# Publish information for each slave
48
{% set active_slave_instance_list = json_module.loads(active_slave_instance_dict['active-slave-instance-list']) %}
49
{% for slave_reference, slave_information in slave_information_dict.iteritems() %}
50 51
{#   Filter out destroyed, so not existing anymore, slaves #}
{#   Note: This functionality is not yet covered by tests, please modify with care #}
52
{%   if slave_reference in active_slave_instance_list %}
53 54
{%     set publish_section_title = 'publish-%s' % slave_reference %}
{%     do part_list.append(publish_section_title) %}
55 56 57
[{{ publish_section_title }}]
recipe = slapos.cookbook:publish
-slave-reference = {{ slave_reference }}
58 59
{%     set log_access_url = slave_information.pop('log-access-urls', None) %}
{%     if log_access_url %}
60
log-access-url = {{ dumps(json_module.dumps(log_access_url)) }}
61 62
{%     endif %}
{%     for key, value in slave_information.iteritems() %}
63
{{ key }} = {{ dumps(value) }}
64 65
{%     endfor %}
{%   endif %}
66 67 68
{% endfor %}

[buildout]
69
extends = {{ common_profile }}
70 71 72
parts =
{% for part in part_list %}
{{ '  %s' % part }}
73
{% endfor %}