1 {% if slap_software_type in software_type -%}
4 recipe = slapos.recipe.template:jinja2
5 rendered = ${buildout:directory}/${:filename}
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
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') -%}
20 {% set dns_type = "%s%s" % (single_type_key, slap_software_type) -%}
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}') -%}
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) %}
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:]) %}
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) -%}
58 [{{request_section_title}}]
61 {% set state_key = "-dns-%s-state" % i %}
62 {% if slapparameter_dict.has_key(state_key) %}
63 state = {{ slapparameter_dict.pop(state_key) }}
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 ) }}
77 {% set ns_record = slapparameter_dict.pop('ns-record', ','.join(dns_domain_list)) %}
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) }}
85 software-url = ${slap-connection:software-release-url}
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 }}
95 config-{{ slave_list_name }} = {{ json_module.dumps(slave_instance_list) }}
96 connection-monitor_url =
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}' }}
110 {% for part in part_list -%}
114 eggs-directory = {{ eggs_directory }}
115 develop-eggs-directory = {{ develop_eggs_directory }}
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}
129 slave_instance_list =
131 -dns-type = single-default