Metadata-Version: 2.4
Name: octodns-opusdns
Version: 1.2.0
Summary: OpusDNS provider for octoDNS
Author-email: Jonathan Leroy <jonathan@relkian.com>
License-Expression: MIT
Project-URL: Homepage, https://github.com/relkian/octodns-opusdns
Project-URL: Source, https://github.com/relkian/octodns-opusdns
Project-URL: Issues, https://github.com/relkian/octodns-opusdns/issues
Keywords: dns,octodns,dns-as-code
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: Operating System :: OS Independent
Classifier: Topic :: Internet :: Name Service (DNS)
Classifier: Topic :: System :: Systems Administration
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: octodns>=1.22.0
Requires-Dist: requests>=2.34.2
Provides-Extra: test
Requires-Dist: pytest; extra == "test"
Requires-Dist: pytest-cov; extra == "test"
Requires-Dist: pytest-network; extra == "test"
Requires-Dist: requests-mock; extra == "test"
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"
Requires-Dist: pytest-cov; extra == "dev"
Requires-Dist: pytest-network; extra == "dev"
Requires-Dist: requests-mock; extra == "dev"
Requires-Dist: black<27.0.0,>=26.0.0; extra == "dev"
Requires-Dist: build>=0.7.0; extra == "dev"
Requires-Dist: changelet; extra == "dev"
Requires-Dist: isort>=5.11.5; extra == "dev"
Requires-Dist: proviso; extra == "dev"
Requires-Dist: pyflakes>=2.2.0; extra == "dev"
Requires-Dist: readme_renderer[md]>=26.0; extra == "dev"
Requires-Dist: twine>=3.4.2; extra == "dev"
Dynamic: license-file

## OpusDNS provider for octoDNS

An [octoDNS](https://github.com/octodns/octodns/) provider that targets
[OpusDNS](https://developers.opusdns.com/).

### Installation

#### Command line

```
pip install octodns-opusdns
```

#### requirements.txt/setup.py

Pinning specific versions or SHAs is recommended to avoid unplanned upgrades.

##### Versions

```
# Start with the latest versions and don't just copy what's here
octodns==1.22.0
octodns-opusdns==1.2.0
```

##### SHAs

```
# Start with the latest/specific versions and don't just copy what's here
octodns @ git+https://git@github.com/octodns/octodns.git@c35a57c11ce12348960ec20316507eb9b2badb72
octodns-opusdns @ git+https://git@github.com/relkian/octodns-opusdns.git@31d465fd7cd277797eaef19a063f8059ce30dbb7
```

### Configuration

```yaml
providers:
  opusdns:
    class: octodns_opusdns.OpusDNSProvider
    client_id: env/OPUSDNS_CLIENT_ID
    client_secret: env/OPUSDNS_CLIENT_SECRET
    # Remove the line below to use the production environment.
    sandbox: true
```

### Support Information

#### Records

This provider supports `A`, `AAAA`, `ALIAS`, `CAA`, `CNAME`, `HTTPS`,
`MX`, `NAPTR`, `NS`, `PTR`, `SRV`, `SSHFP`, `SVCB`, `TLSA`, `TXT` and `URI`
records.

It does not supports `CERT`, `DNSKEY`, `SOA` and `SMIMEA` records as octoDNS
doesn't handle them.

> [!NOTE]
> Currently, the creation and editing of `HTTPS`, `NAPTR`, `SSHFP`,
> `SVCB`, `TLSA` and `URI` records isn't implemented in OpusDNS zones
> management interface.
> This means that records of these types can be viewed and deleted but not
> created or edited through it.

#### Dynamic

This provider does not support dynamic records.

### Development

See the [/script/](/script/) directory for some tools to help with the
development process. They generally follow the
[Script to rule them all](https://github.com/github/scripts-to-rule-them-all)
pattern.
Most useful is `./script/bootstrap` which will create a venv and install both
the runtime and development related requirements. It will also hook up a
pre-commit hook that covers most of what's run by CI.
