; Copyright 2017-present Open Networking Foundation
;
; Licensed under the Apache License, Version 2.0 (the "License");
; you may not use this file except in compliance with the License.
; You may obtain a copy of the License at
;
; http://www.apache.org/licenses/LICENSE-2.0
;
; Unless required by applicable law or agreed to in writing, software
; distributed under the License is distributed on an "AS IS" BASIS,
; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
; See the License for the specific language governing permissions and
; limitations under the License.
;
; Zone file modified: {{modified}}.
; Note that the modification time of this file doesn't reflect
; the actual modification time.  MAAS controls the modification time
; of this file to be able to force the zone to be reloaded by BIND.
$TTL    300
@   IN    SOA {{domain}}. nobody.example.com. (
              {{serial}} ; serial
              600 ; Refresh
              1800 ; Retry
              604800 ; Expire
              300 ; TTL
              )

    IN  NS  {{domain}}.
{{for type, directive in generate_directives.items()}}
{{for iterator_values, rdns, hostname in directive}}
$GENERATE {{iterator_values}} {{rdns}} IN {{type}} {{hostname}}
{{endfor}}
{{endfor}}

{{for type, mapping in mappings.items()}}
{{for item_from, item_to in mapping}}
{{item_from}} IN {{type}} {{item_to}}
{{endfor}}
{{endfor}}
