slapos-testing: add missing eggs.
[slapos.git] / software / powerdns / instance-powerdns-replicate.cfg.jinja2
1 {% if slap_software_type in software_type -%}
2
3 [jinja2-template-base]
4 recipe = slapos.recipe.template:jinja2
5 rendered = ${buildout:directory}/${:filename}
6 extra-context =
7 context =
8     import json_module json
9     key eggs_directory buildout:eggs-directory
10     key develop_eggs_directory buildout:develop-eggs-directory
11     key slap_software_type slap-parameter:slap_software_type
12     key slave_instance_list slap-parameter:slave_instance_list
13     ${:extra-context}
14
15 {% set part_list = [] -%}
16 {% set single_type_key = 'single-' %}
17 {% if slap_software_type in ("replicate", "RootSoftwareInstance") %}
18 {%   set dns_type = slapparameter_dict.pop('-dns-type', 'single-default') -%}
19 {% else -%}
20 {%   set dns_type = "%s%s" % (single_type_key, slap_software_type) -%}
21 {% endif -%}
22 {% set dns_quantity = slapparameter_dict.pop('-dns-quantity', '1') | int -%}
23 {% set slave_list_name = 'extra_slave_instance_list' -%}
24 {% set dns_list = [] %}
25 {% set dns_domain_list = [] %}
26 {% set dns_section_list = [] %}
27 {% set namebase = 'powerdns' -%}
28 # XXX Dirty hack, not possible to define default value before
29 {% set sla_computer_powerdns_1_key = '-sla-1-computer_guid' -%}
30 {% if not sla_computer_powerdns_1_key in slapparameter_dict -%}
31 {%   do slapparameter_dict.__setitem__(sla_computer_powerdns_1_key, '${slap-connection:computer-id}') -%}
32 {% endif -%}
33
34 ## DNS set up
35 {% set zone = slapparameter_dict.pop('zone', 'domain.com') %}
36 {% set server_admin = slapparameter_dict.pop('server-admin', 'admin@domain.com') %}
37 {% set dns_name_template_string = slapparameter_dict.pop('dns-name-template-string', 'ns%s.' + zone) %}
38
39 # Here we request individualy each dns.
40 # The presence of sla parameters is checked and added if found
41 {% for i in range(1, dns_quantity + 1) -%}
42 {%   set dns_name = 'ns%s' % i -%}
43 {%   set dns_domain = dns_name_template_string % i %}
44 {%   set request_section_title = 'request-%s' % dns_name -%}
45 {%   set sla_key = "-sla-%s-" % i -%}
46 {%   set sla_key_length = sla_key | length %}
47 {%   set sla_parameters = [] %}
48 {%   for key in slapparameter_dict.keys() %}
49 {%     if key.startswith(sla_key) %}
50 {%       do sla_parameters.append(key[sla_key_length:]) %}
51 {%     endif -%}
52 {%   endfor -%}
53 {%   do dns_list.append(dns_name) -%}
54 {%   do dns_domain_list.append(dns_domain) -%}
55 {%   do dns_section_list.append(request_section_title) -%}
56 {%   do part_list.append(request_section_title) -%}
57
58 [{{request_section_title}}]
59 <= replicate
60 name = {{dns_name}}
61 {%   set state_key = "-dns-%s-state" % i %}
62 {%   if slapparameter_dict.has_key(state_key) %}
63 state = {{ slapparameter_dict.pop(state_key) }}
64 {%   endif%}
65 config-zone = {{ zone }}
66 config-soa = {{ "%s,%s" % (dns_domain, server_admin) }}
67 {%   if sla_parameters %}
68 sla = {{ ' '.join(sla_parameters) }}
69 {%     for parameter in sla_parameters -%}
70 sla-{{ parameter }} = {{ slapparameter_dict.pop( sla_key + parameter ) }}
71 {%     endfor -%}
72 {%   endif -%}
73 {% endfor -%}
74
75
76
77 {% set ns_record = slapparameter_dict.pop('ns-record', ','.join(dns_domain_list)) %}
78 [replicate]
79 <= slap-connection
80 recipe = slapos.cookbook:requestoptional
81 {% set dns_software_url_key = "-dns-software-release-url" %}
82 {% if slapparameter_dict.has_key(dns_software_url_key) %}
83 software-url = {{ slapparameter_dict.pop(dns_software_url_key) }}
84 {% else %}
85 software-url = ${slap-connection:software-release-url}
86 {% endif %}
87 software-type = {{dns_type}}
88 return = private-ipv4 public-ipv4 slave-instance-information-list monitor_url
89 config = {{ ' '.join(slapparameter_dict.keys()) + ' zone soa server-admin ns-record ' + slave_list_name }}
90 config-server-admin = {{ server_admin }}
91 config-ns-record = {{ ns_record }}
92 {% for parameter, value in slapparameter_dict.iteritems() -%}
93 config-{{parameter}} = {{ value }}
94 {% endfor -%}
95 config-{{ slave_list_name }} = {{ json_module.dumps(slave_instance_list) }}
96 connection-monitor_url =
97
98 [publish-information]
99 recipe = slapos.cookbook:publish
100 domain = {{ slapparameter_dict.get('domain') }}
101 slave-amount = {{ slave_instance_list | length }}
102 ns-record = {{ ns_record }}
103 {% for dns in dns_section_list %}
104 {{ dns }}-monitor-url = {{ '${' + dns + ':connection-monitor_url}' }}
105 {% endfor -%}
106
107 [buildout]
108 parts =
109   publish-information
110 {% for part in part_list -%}
111 {{ '  %s' % part }}
112 {% endfor -%}
113
114 eggs-directory = {{ eggs_directory }}
115 develop-eggs-directory = {{ develop_eggs_directory }}
116 offline = true
117
118
119 [slap_connection]
120 # Kept for backward compatiblity
121 computer_id = ${slap-connection:computer-id}
122 partition_id = ${slap-connection:partition-id}
123 server_url = ${slap-connection:server-url}
124 software_release_url = ${slap-connection:software-release-url}
125 key_file = ${slap-connection:key-file}
126 cert_file = ${slap-connection:cert-file}
127
128 [slap-parameter]
129 slave_instance_list =
130 -dns-quantity = 1
131 -dns-type = single-default
132 {%- endif %}