in dns/check-zone.py [0:0]
def verify_dns(queries):
"""
Iterate over the queries comparing the responses to the record configuration
"""
dns_error = False
for record, responses in sorted(queries.items(), key=lambda d: d[0]):
record_error = False
# Print out a log each record
stdout.write(record.fqdn)
stdout.write(',')
stdout.write(record._type)
stdout.write(',')
stdout.write(unicode(record.ttl))
# pull out the values we want to configure for this record
record_values = record_value_list(record)
# clean them up a bit
configured_values = quote_cleanup(record_values)
# ensure valid responses that match configured values
for response in responses:
stdout.write(',')
# the responses need a quick test / cleanup
response_values=record_response_values(record, response)
if response_values:
stdout.write(' '.join(response_values))
# NS Records will need to be handled differently
if record._type == "NS":
continue
# If we didn't get a response, it's an error
if not response_values:
dns_error = True
record_error = False
continue
# All configured_values should be included in the response
for configured_value in configured_values:
if configured_value in response_values:
continue
log.error('*** Configured Value not in response: %s (expected %s, got %s)',
record.fqdn, configured_value, response_values)
record_error = True
dns_error = True
# All reponses should be included in the configured_values
for response_value in response_values:
if response_value in configured_values:
continue
log.error('*** Response not in configuration: %s (expected %s, got %s',
record.fqdn, response_value, configured_values)
record_error = True
dns_error = True
if not record_error:
stdout.write(',True\n')
else:
stdout.write(',False\n')
return dns_error