<?xml version='1.0' encoding='UTF-8'?>
<rougail version="0.10">
  <services>
    <service name="nsd" target="multi-user">
      <override/>
      <ip ip_type="variable">nsd_allowed_all_client</ip>
      <file>/etc/nsd/conf.d/risotto.conf</file>
      <file file_type="variable" source="nsd.zone" variable="nsd_zones" included="content">nsd_zone_filenames</file>
      <file file_type="variable" source="nsd.signed" variable="nsd_zone_filenames">nsd_zone_filenames_signed</file>
      <file file_type="variable" source="nsd.reverse" variable="nsd_reverse_name" included="content">nsd_reverse_filenames</file>
      <file file_type="variable" source="nsd.signed" variable="nsd_reverse_filenames">nsd_reverse_filenames_signed</file>
      <file engine="none" source="sysuser-nsd.conf">/sysusers.d/0nsd.conf</file>
      <file engine="none" source="tmpfile-nsd.conf">/tmpfiles.d/0nsd.conf</file>
      <file filelist="copy_tests">/tests/nsd.yml</file>
    </service>
  </services>
  <variables>
    <family name="network">
      <variable name="dns_client_address" redefine="True" disabled="True"/>
      <variable name="ip_dns" redefine="True" remove_fill="True"/>
    </family>
    <family name="dns_server" description="Serveur DNS">
      <variable name="nsd_allowed_client" type="domainname" description="Clients" multi="True" mandatory="True" hidden="True" provider="LocalDNS"/>
      <variable name="nsd_allowed_client_ip" type="ip" description="Clients" multi="True" mandatory="True" hidden="True"/>
      <variable name="nsd_resolver" type="domainname" description="Nom de domaine du résolveur DNS associé" supplier="ExternalDNS"/>
      <variable name="nsd_resolve_ip" type="ip" hidden="True"/>
      <variable name="nsd_allowed_all_client" type="ip" description="All autorised IP" multi="True" hidden="True"/>
    </family>
    <family name="dns_zone" description="Zone DNS">
      <variable name="nsd_zones" type="domainname" description="Zones DNS" multi="True"/>
    </family>
    <family name="dns_reverses" description="Zone DNS reverse" leadership="True">
      <variable name="nsd_reverse_network" description="Réseau pour la résolution reverse" type="network_cidr" multi="True"/>
      <variable name="nsd_reverse_name" description="Nom de la zone" hidden="True"/>
    </family>
    <variable name="nsd_zones_all" type="domainname" multi="True" supplier="ExternalDNS:authority_zones" hidden="True"/>
    <variable name="nsd_zone_filenames" type="filename" description="Nom des fichiers de zone" multi="True" hidden="True"/>
    <variable name="nsd_zone_filenames_signed" type="filename" description="Nom des fichiers de zone signé" multi="True" hidden="True"/>
    <variable name="nsd_reverse_filenames" type="filename" description="Nom des fichiers de zone reverse" multi="True" hidden="True"/>
    <variable name="nsd_reverse_filenames_signed" type="filename" description="Nom des fichiers de zone reverse signé" multi="True" hidden="True"/>
  </variables>
  <constraints>
    <fill name="calc_value">
      <param type="variable">ip_eth0</param>
      <target>ip_dns</target>
    </fill>
    <fill name="get_ip">
      <param type="information">zones</param>
      <param type="variable">nsd_allowed_client</param>
      <target>nsd_allowed_client_ip</target>
    </fill>
    <fill name="nsd_concat_lists">
      <param type="variable">nsd_zones</param>
      <param type="variable">nsd_reverse_name</param>
      <target>nsd_zones_all</target>
    </fill>
    <fill name="nsd_concat_lists">
      <param type="variable">ip_eth</param>
      <param type="variable">nsd_allowed_client_ip</param>
      <param type="variable">nsd_resolve_ip</param>
      <target>nsd_allowed_all_client</target>
    </fill>
    <fill name="get_ip">
      <param type="information">zones</param>
      <param type="variable">nsd_resolver</param>
      <target>nsd_resolve_ip</target>
    </fill>
    <fill name="get_internal_zones">
      <param type="variable">zones_list</param>
      <param type="information">zones</param>
      <target>nsd_zones</target>
    </fill>
    <fill name="get_reverse_name">
      <param type="variable">nsd_reverse_network</param>
      <target>nsd_reverse_name</target>
    </fill>
    <fill name="calc_value">
      <param>/etc/nsd/</param>
      <param type="variable">nsd_zones</param>
      <param>.zone</param>
      <param name="join"></param>
      <param name="multi" type="boolean">True</param>
      <target>nsd_zone_filenames</target>
    </fill>
    <fill name="calc_value">
      <param type="variable">nsd_zone_filenames</param>
      <param>.signed</param>
      <param name="join"></param>
      <param name="multi" type="boolean">True</param>
      <target>nsd_zone_filenames_signed</target>
    </fill>
    <fill name="calc_value">
      <param>/etc/nsd/</param>
      <param type="variable">nsd_reverse_name</param>
      <param>reverse</param>
      <param name="join"></param>
      <param name="multi" type="boolean">True</param>
      <target>nsd_reverse_filenames</target>
    </fill>
    <fill name="calc_value">
      <param type="variable">nsd_reverse_filenames</param>
      <param>.signed</param>
      <param name="join"></param>
      <param name="multi" type="boolean">True</param>
      <target>nsd_reverse_filenames_signed</target>
    </fill>
    <fill name="get_zones_info">
      <param type="information">zones</param>
      <param>network</param>
      <param type="variable" name="zone_names">zones_list</param>
      <target>nsd_reverse_network</target>
    </fill>
  </constraints>
</rougail>
