# -*- coding: utf-8 -*-
from .base import AwsBase
[docs]class Route53Service(AwsBase):
'''
Class belonging to the Route 53 DNS Service
'''
[docs] def get_domains(self):
'''
Get hosted zones and its records
Returns:
(lst): List of Hosted Zones with Records
'''
domains = []
for hz in self.list_hosted_zones():
hz['Records'] = self.list_records(hz['Id'])
domains.append(hz)
return domains
[docs] def list_hosted_zones(self):
'''
List all hosted zones
Returns:
List of hosted zones
'''
return self.inject_client_vars(self.client.list_hosted_zones()['HostedZones'])
[docs] def list_records(self, hosted_zone_id):
'''
List all records for a hosted zone
Args:
hosted zone (str): The ID of the hosted zone that contains the resource record sets that you want to list
Returns:
List of DNS records
'''
records = []
config = self.get_client_vars()
paginator = self.client.get_paginator('list_resource_record_sets')
for response in paginator.paginate(HostedZoneId=hosted_zone_id):
for x in response['ResourceRecordSets']: records.append(x)
return self.inject_client_vars(records, config)
[docs] def list_records_by_domain(self, domain):
'''
List all records of a hosted-zone domain
Args:
domain (str): The DOMAIN name of the hosted zone that contains the resource record sets that you want to list
Returns:
List of DNS records
'''
hosted_zone = filter(lambda x: domain + "." == x['Name'], self.list_hosted_zones())
if hosted_zone:
return self.list_records(hosted_zone[0]['Id'])
return None
[docs] def __init__(self):
AwsBase.__init__(self, 'route53')
self.change_region('us-east-1')