From 342c0d7d089ede7c163c98c4825df3bbc439f38e Mon Sep 17 00:00:00 2001 From: crux-capacitor Date: Thu, 15 Nov 2018 16:07:19 -0500 Subject: [PATCH] Update with the required logic. Added an if-block to test for the file argument in the zone_data, and if found, use that view and update the zone variable to match the zone defined under available_zones. --- bind/config.sls | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/bind/config.sls b/bind/config.sls index 1394904..522f198 100644 --- a/bind/config.sls +++ b/bind/config.sls @@ -203,19 +203,24 @@ bind_rndc_client_config: {%- set views = {False: salt['pillar.get']('bind', {})} %}{# process non-view zones in the same loop #} {%- do views.update(salt['pillar.get']('bind:configured_views', {})) %} {%- for view, view_data in views|dictsort %} -{%- set dash_view = '-' + view if view else '' %} -{% for zone, zone_data in view_data.get('configured_zones', {})|dictsort -%} -{%- set file = salt['pillar.get']("bind:available_zones:" + zone + ":file", false) %} -{%- set zone_records = salt['pillar.get']('bind:available_zones:' + zone + ':records', {}) %} -{%- if salt['pillar.get']('bind:available_zones:' + zone + ':generate_reverse') %} -{%- do generate_reverse(zone_records, salt['pillar.get']('bind:available_zones:' + zone + ':generate_reverse:net'), salt['pillar.get']('bind:available_zones:' + zone + ':generate_reverse:for_zones'), salt['pillar.get']('bind:available_zones', {})) %} -{%- endif %} +{%- set dash_view = '-' + view if view else '' %} +{%- for zone, zone_data in view_data.get('configured_zones', {})|dictsort -%} +{%- if 'file' in zone_data %} +{%- set file = zone_data.file %} +{%- set zone = zone|replace(".txt", "") %} +{%- else %} +{%- set file = salt['pillar.get']("bind:available_zones:" + zone + ":file", false) %} +{%- endif %} +{%- set zone_records = salt['pillar.get']('bind:available_zones:' + zone + ':records', {}) %} +{%- if salt['pillar.get']('bind:available_zones:' + zone + ':generate_reverse') %} +{%- do generate_reverse(zone_records, salt['pillar.get']('bind:available_zones:' + zone + ':generate_reverse:net'), salt['pillar.get']('bind:available_zones:' + zone + ':generate_reverse:for_zones'), salt['pillar.get']('bind:available_zones', {})) %} +{%- endif %} {# If we define RRs in pillar, we use the internal template to generate the zone file otherwise, we fallback to the old behaviour and use the declared file #} -{%- set zone_source = 'salt://bind/files/zone.jinja' if zone_records != {} else 'salt://' ~ map.zones_source_dir ~ '/' ~ file %} -{%- set serial_auto = salt['pillar.get']('bind:available_zones:' + zone + ':soa:serial', '') == 'auto' %} -{% if file and zone_data['type'] == 'master' -%} +{%- set zone_source = 'salt://bind/files/zone.jinja' if zone_records != {} else 'salt://' ~ map.zones_source_dir ~ '/' ~ file %} +{%- set serial_auto = salt['pillar.get']('bind:available_zones:' + zone + ':soa:serial', '') == 'auto' %} +{% if file and zone_data['type'] == 'master' -%} zones{{ dash_view }}-{{ zone }}{{ '.include' if serial_auto else ''}}: file.managed: - name: {{ zones_directory }}/{{ file }}{{ '.include' if serial_auto else ''}}