Imported from octodns/octodns-ultra (
AGENTS.md). Install upstream withnpx skills add octodns/octodns-ultra. Copyright stays with the author.
Developer Agent Guide for octoDNS UltraDNS Provider
This repository contains the UltraDNS provider for octoDNS. It enables planning, syncing, and applying DNS record states directly to the UltraDNS platform using its REST API.
[!IMPORTANT] Core Workflow and Guidelines
All agents working on this repository must read and follow the general instructions and workflow guidelines defined in the core octoDNS
AGENTS.mdfile.
- Local check: Look for the file at
../octodns/AGENTS.md.- Remote check: If the local file is not available, fetch it from GitHub: octoDNS Core AGENTS.md.
You must align your code structure, style, pull request guidelines, and overall development workflows with the instructions specified there.
Repository & Module Information
Key Components
- Provider Class: UltraProvider (defined in octodns_ultra/init.py). This is the core provider implementing record and zone synchronization.
- REST Client & Authentication: The provider handles token authentication natively by logging in to
/authorization/tokenwithusernameandpasswordto obtain a Bearer token, which it caches in its request headers. It targets the base URIhttps://api.ultradns.com. - Special Conditions:
- UltraNoZonesExistException: Handles cases where no zones are defined under the account, preventing API error codes (70002) from breaking standard sync runs.
Key Workflows & Features
- Supported Record Types:
A,AAAA,ALIAS(mapped to UltraDNSAPEXALIAS),CAA,CNAME,MX,NS,PTR,SRV,TXT. - Zone Types: The provider filters and operates only on PRIMARY zones (
PRIMARYquery query parameter on/v3/zones). - Paging limits: Configures limit options
ZONE_REQUEST_LIMIT = 1000andRRSET_REQUEST_LIMIT = 1000to page through large accounts and zone sets. - Root Name Server Support: Fully supported (
SUPPORTS_ROOT_NS=True). - Dynamic Routing: Not supported (
SUPPORTS_DYNAMIC=False,SUPPORTS_GEO=False). - Dynamic Subnets: Not supported (
SUPPORTS_DYNAMIC_SUBNETS=False). - Pool Value Status: Not supported (
SUPPORTS_POOL_VALUE_STATUS=False). - Valimail Monitor: Enabled via provider config.
- DNSSEC: Enabled via provider config.
Development & Testing
- Setup Script: Run
./script/bootstrapto create a virtual environment, install runtime and development dependencies (includingblack,isort,pyflakes, andpytest), and configure pre-commit hooks. - Test Suite: Run unit tests using
pytestvia./script/test(orpytest tests/). Test files are located in tests/. - Code Coverage: Verify code coverage using
./script/coverage.
Key Constraints & Behaviors
- Python Version: Targets Python
>=3.10. - Formatting: Code formatting is enforced via
black(version>=26.0.0,<27.0.0) andisort.