octodns-metaname
OctoDNS provider for the Metaname DNS API, originally
bootstrapped from the upstream octodns-template.
Use it to run a DNS-as-Code workflow with OctoDNS for any zones you host at
Metaname.
Installation
PyPI release:
pip install octodns-metaname
If you rely on the OpsDev.nz 1Password resolver, install the optional extra:
pip install octodns-metaname[onepassword]
Editable install for local development:
python -m venv venv && source venv/bin/activate
pip install -e .[dev]
OctoDNS integration
Once installed, the provider is available via the entry point metaname. Sample
config.yaml fragment:
providers:
metaname-test:
class: octodns_metaname.MetanameProvider
base_url: https://test.metaname.net/api/1.1
Populate/apply workflows follow the standard OctoDNS CLI tools. Consult the OctoDNS docs for full CLI details.
Domain lifecycle CLI
Domain registration is separate from DNS record management. The CLI defaults to Metaname's test API:
octodns-metaname check example.nz
octodns-metaname list
octodns-metaname register example.nz --term 12 --confirm
Pass --production before the command to use the live API. Registration
requires --confirm because it consumes test credit or incurs a production
charge. Omitting --nameserver selects Metaname hosted DNS.
Optional registration during apply
The provider can register a missing domain immediately before applying its records. This is disabled by default and should normally be enabled only for the test API:
providers:
metaname-test:
class: octodns_metaname.MetanameProvider
base_url: https://test.metaname.net/api/1.1
auto_register_domains: true
registration_term: 12
The dry-run only reports the proposed records. Registration happens during the
subsequent octodns-sync --doit apply. For the production API, an additional
allow_production_registration: true safeguard is required. Prefer the CLI for
an explicit availability check and registration before enabling production
automation.
Secret resolution
By default the provider reads secrets directly from environment variables such
as METANAME_ACCOUNT_REF and METANAME_API_TOKEN. If your workflow stores
values in a vault (e.g., 1Password) you can register a resolver using:
from octodns_metaname import secrets
def resolve(name: str, reference: str | None) -> str | None:
...
secrets.set_secret_resolver(resolve)
For CLI usage set OCTODNS_METANAME_SECRET_RESOLVER="module:function" so the
resolver is loaded automatically. OpsDev.nz deployments point this at
op_opsdevnz.octodns_hooks:resolve, which returns values directly from the
1Password Service Account SDK/CLI.
Development
python -m venv venv && source venv/bin/activate
pip install -e .[dev]
ruff check src tests
mypy src
pytest --maxfail=1
The repo includes a GitHub Actions workflow that runs linting, type checking, tests, and a build on every push.
Releasing
See RELEASING.md for the full TestPyPI → PyPI checklist.
License
Apache-2.0 © OpsDev.nz
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file octodns_metaname-0.2.1.tar.gz.
File metadata
- Download URL: octodns_metaname-0.2.1.tar.gz
- Upload date:
- Size: 26.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
147b7277827a85c6d32837eb35ad4623d3b933ffb6849bf9cdc48db3b970d94e
|
|
| MD5 |
8b18fdc517909f2dbe92f568ae8311d9
|
|
| BLAKE2b-256 |
06fe88cb105cd04403acbaee28ab3c44252094d7bec2b6687014989f52b68d7e
|
Provenance
The following attestation bundles were made for octodns_metaname-0.2.1.tar.gz:
Publisher:
publish.yml on startmeup-nz/octodns-metaname
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
octodns_metaname-0.2.1.tar.gz -
Subject digest:
147b7277827a85c6d32837eb35ad4623d3b933ffb6849bf9cdc48db3b970d94e - Sigstore transparency entry: 2179161699
- Sigstore integration time:
-
Permalink:
startmeup-nz/octodns-metaname@27e24c5c790d795a9f9fcae902fb1b901cc5f893 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/startmeup-nz
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@27e24c5c790d795a9f9fcae902fb1b901cc5f893 -
Trigger Event:
push
-
Statement type:
File details
Details for the file octodns_metaname-0.2.1-py3-none-any.whl.
File metadata
- Download URL: octodns_metaname-0.2.1-py3-none-any.whl
- Upload date:
- Size: 19.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8840c6286132d78a67c521636f04d2f3a2d3b01a7973a2286c081230acca3f7d
|
|
| MD5 |
62b257cf3eb987ae7a642875fd420377
|
|
| BLAKE2b-256 |
5a56bb18d3d2059c7c33fe101cbc51f9499887914579b79106050dc6c8425922
|
Provenance
The following attestation bundles were made for octodns_metaname-0.2.1-py3-none-any.whl:
Publisher:
publish.yml on startmeup-nz/octodns-metaname
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
octodns_metaname-0.2.1-py3-none-any.whl -
Subject digest:
8840c6286132d78a67c521636f04d2f3a2d3b01a7973a2286c081230acca3f7d - Sigstore transparency entry: 2179161748
- Sigstore integration time:
-
Permalink:
startmeup-nz/octodns-metaname@27e24c5c790d795a9f9fcae902fb1b901cc5f893 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/startmeup-nz
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@27e24c5c790d795a9f9fcae902fb1b901cc5f893 -
Trigger Event:
push
-
Statement type: