An octodns provider for BlueCat Address Manager (BAM) using the REST API v2.
| Provider | Record Support | Notes |
|---|---|---|
| BlueCatProvider | A, AAAA, CAA, CNAME, MX, NS, PTR, SRV, TXT | See restrictions below |
Pinning specific versions or SHAs is recommended to avoid unplanned upgrades.
# Start with the latest versions and don't just copy what's here
octodns==1.15.0
octodns-bluecat==0.0.1
This provider requires BlueCat Address Manager with REST API v2 enabled. API v2 is available in BAM 9.3 and later.
providers:
bluecat:
class: octodns_bluecat.BlueCatProvider
# BAM server base URL (no trailing slash). Required.
base_url: https://bam.corp.example.com
# BAM username. Use env/VAR to read from environment variable. Required.
username: env/BLUECAT_USER
# BAM password. Use env/VAR to read from environment variable. Required.
password: env/BLUECAT_PASS
# BAM Configuration name. Required.
confname: env/BLUECAT_CONF
# BAM DNS View name. Required.
view: env/BLUECAT_VIEW
# Optional. Default: 100. Number of resource records per page.
#page_size: 100
# Optional. Default: 30. HTTP request timeout in seconds.
#timeout: 30BlueCatProvider supports A, AAAA, CAA, CNAME, MX, NS, PTR, SRV, and TXT records.
BlueCatProvider does not support dynamic records or geo routing.
BlueCatProvider does not manage PTR records — they are read-only and managed by BAM's DHCP deployment process.
SRV records must follow the RFC 2782 naming convention: the owner name must
begin with two underscore-prefixed labels identifying the service and protocol,
e.g. _sip._tcp or _ldap._tcp.
BAM does not enforce this convention, so it is possible to create SRV records
in the GUI with names that do not conform (e.g. sip-tcp or _sip.tcp).
During populate, the provider checks for this and skips any SRV record
whose name is invalid, logging a WARNING with the BAM record id so the record
can be corrected manually in BAM before the next sync.
BlueCat Address Manager stores CNAME targets and MX mail exchanges as
ExternalHostRecord objects in a dedicated zone within the view. When writing
CNAME or MX records, the provider automatically looks up or creates the required
ExternalHostRecord before linking it to the DNS record. No manual setup is
required.
BlueCatProvider supports list_zones(), enabling wildcard zone configuration:
zones:
"*":
sources:
- bluecat
targets:
- dumpYou can also target specific zones on the command line:
octodns-sync --config-file sync.yaml --doit zone1.example.com. zone2.example.com.See the CONTRIBUTING.md guidelines for information on contributing to this provider.
# Clone and install for development
git clone https://github.com/quistian/octodns-bluecat
cd octodns-bluecat
uv venv
pip install -e ".[dev]"
# Run the test suite
pytest tests/ -v
# Run with coverage report
pytest tests/ --cov=octodns_bluecat --cov-report=term-missingSee the /script directory for helper scripts. The most useful is
./script/test which runs the full test suite.
Copyright (c) 2026 Russell Sutherland, University of Toronto
Licensed under the Apache License, Version 2.0.