Skip to content

show_zones > 100 Entries #2

@Thanquol

Description

@Thanquol

Hi,

the Hetzner DNS Api returns only the first 100 entries.
I'm managing > 500 DNS Entries at the moment.

i did some changes to support up to 1000 entries.
Maybe you can adopt the idea

--
def show_zones(self):
""" Show all zones eg. hdns show_zones """
pageNum = 1

    result_header = ['ID', 'Zone', 'Secondary?', 'NS']
    results = []

    while pageNum <= 10	:
        try:
            response = requests.get(
                url=f"https://{self.SYSTEM}/api/v1/zones?page={pageNum}",
                headers={"Auth-API-Token": self.API_TOKEN}
            )
    
            status_code = response.status_code
            content = json.loads(response.content)

            for zone in content['zones']:
                results.append(
                    [
                        zone['id'],
                        zone['name'],
                        zone['is_secondary_dns'],
                        ", ".join(zone['ns'])um = pageNum + 1

        except requests.exceptions.RequestException as e:
            logger.exception(e)

hdns_cli.py.txt

    print(f"*** Zones @ {self.SYSTEM} " + "*"*80)
    print(tabulate.tabulate(results, result_header))

--

and:

--
def _get_zone_id(self, zone_name):
""" PRIVATE: Get the zone id to work with names in records add, mod, remove """
try:
pageNum = 1
while pageNum <= 10 :
response = requests.get(
url=f"https://{self.SYSTEM}/api/v1/zones?page={pageNum}",
headers={"Auth-API-Token": self.API_TOKEN}
)

            status_code = response.status_code
            content = json.loads(response.content)

            if status_code == 200:
                for zone in content['zones']:
                    if zone_name == zone['name']:
                        return zone['id']

            pageNum = pageNum + 1

        return False

    except requests.exceptions.RequestException as e:
        logger.exception(e)

--

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions