## NS1 provider for octoDNS
An [octoDNS](https://github.com/octodns/octodns/) provider that targets [NS1](https://ns1.com/products/managed-dns).
### Installation
#### Command line
```
pip install octodns-ns1
```
#### 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==0.9.14
octodns-ns1==0.0.1
```
##### SHAs
```
# Start with the latest/specific versions and don't just copy what's here
-e git+https://git@github.com/octodns/octodns.git@9da19749e28f68407a1c246dfdf65663cdc1c422#egg=octodns
-e git+https://git@github.com/octodns/octodns-ns1.git@ec9661f8b335241ae4746eea467a8509205e6a30#egg=octodns_ns1
```
### Configuration
```yaml
providers:
ns1:
class: octodns_ns1.Ns1Provider
api_key: env/NS1_API_KEY
# Only required if using dynamic records
monitor_regions:
- lga
# Optional. Default: false. true is Recommended, but not the default
# for backwards compatibility reasons. If true, all NS1 monitors will
# use a shared notify list rather than one per record & value
# combination. See CHANGELOG,
# https://github.com/octodns/octodns/blob/master/CHANGELOG.md, for more
# information before enabling this behavior.
shared_notifylist: false
# Optional. Default: None. If set, back off in advance to avoid 429s
# from rate-limiting. Generally this should be set to the number
# of processes or workers hitting the API, e.g. the value of
# `max_workers`.
parallelism: 11
# Optional. Default: 4. Number of times to retry if a 429 response
# is received.
retry_count: 4
# Optional. Default: None. Additional options or overrides passed to
# the NS1 SDK config, as key-value pairs.
client_config:
endpoint: my.nsone.endpoint # Default: api.nsone.net
ignore-ssl-errors: true # Default: false
follow_pagination: false # Default: true
# Optional. Default: false. Use modern HTTP monitor (true) or the legacy
# HTTP-emulating TCP monitor (false) for HTTP(s) healthchecks.
use_http_monitors: false
# Optional. Default: HTTP/1.0. Default HTTP protocol to use when
# health-checking dynamic record endpoints. See "Health Check Options"
# README section below to override per dynamic record.
# This is only supported when use_http_monitors is set to false. If it
# is set to true, HTTP/1.1 will be used and it cannot be changed.
default_healthcheck_http_version: HTTP/1.0
```
### Support Information
#### Records
All octoDNS record types are supported.
#### Root NS Records
Ns1Provider supports full root NS record management.
#### Dynamic
Ns1Provider supports dynamic records.
#### Subnet targeting
Ns1Provider supports [subnet targeting](https://github.com/octodns/octodns/blob/main/docs/dynamic_records.md#subnets) in dynamic records.
#### Health Check Options
See https://github.com/octodns/octodns/blob/master/docs/dynamic_records.md#health-checks for information on health checking for dynamic records. Ns1Provider supports the following options:
| Key | Description | Default |
|--|--|--|
| policy | One of:<ol><li>`all` - down if every region is down</li><li>`quorum` - down if majority regions are down</li><li>`one` - down if any region is down</ol> | `quorum` |
| frequency | Frequency (in seconds) of health-check | 60 |
| connect_timeout | Timeout (in seconds) before we give up trying to connect | 2 |
| response_timeout | Timeout (in seconds) after connecting to wait for output | 10 |
| rapid_recheck | Enable or disable a second, automatic verification test before changing the status of a host. Enabling this option can help prevent false positives. | False |
| http_version | Specify HTTP version to use when HTTP health-checking a host. Only applicable if `use_http_monitors=False`. One of <ol><li>`HTTP/1.0`</li><li>`HTTP/1.1`</li><ol> | `HTTP/1.0` |
```yaml
---
octodns:
ns1:
healthcheck:
policy: quorum
frequency: 60
connect_timeout: 2
response_timeout: 10
rapid_recheck: True
http_version: HTTP/1.1
```
### 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.
Raw data
{
"_id": null,
"home_page": "https://github.com/octodns/octodns-ns1",
"name": "octodns-ns1",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": "",
"keywords": "",
"author": "Ross McFarland",
"author_email": "rwmcfa1@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/84/c4/6e7fa98bbcd7c725074dc2d9354b0206548084f0b7558e17c82f3e102b75/octodns-ns1-0.0.7.tar.gz",
"platform": null,
"description": "## NS1 provider for octoDNS\n\nAn [octoDNS](https://github.com/octodns/octodns/) provider that targets [NS1](https://ns1.com/products/managed-dns).\n\n### Installation\n\n#### Command line\n\n```\npip install octodns-ns1\n```\n\n#### requirements.txt/setup.py\n\nPinning specific versions or SHAs is recommended to avoid unplanned upgrades.\n\n##### Versions\n\n```\n# Start with the latest versions and don't just copy what's here\noctodns==0.9.14\noctodns-ns1==0.0.1\n```\n\n##### SHAs\n\n```\n# Start with the latest/specific versions and don't just copy what's here\n-e git+https://git@github.com/octodns/octodns.git@9da19749e28f68407a1c246dfdf65663cdc1c422#egg=octodns\n-e git+https://git@github.com/octodns/octodns-ns1.git@ec9661f8b335241ae4746eea467a8509205e6a30#egg=octodns_ns1\n```\n\n### Configuration\n\n```yaml\nproviders:\n ns1:\n class: octodns_ns1.Ns1Provider\n api_key: env/NS1_API_KEY\n # Only required if using dynamic records\n monitor_regions:\n - lga\n # Optional. Default: false. true is Recommended, but not the default\n # for backwards compatibility reasons. If true, all NS1 monitors will\n # use a shared notify list rather than one per record & value\n # combination. See CHANGELOG,\n # https://github.com/octodns/octodns/blob/master/CHANGELOG.md, for more\n # information before enabling this behavior.\n shared_notifylist: false\n # Optional. Default: None. If set, back off in advance to avoid 429s\n # from rate-limiting. Generally this should be set to the number\n # of processes or workers hitting the API, e.g. the value of\n # `max_workers`.\n parallelism: 11\n # Optional. Default: 4. Number of times to retry if a 429 response\n # is received.\n retry_count: 4\n # Optional. Default: None. Additional options or overrides passed to\n # the NS1 SDK config, as key-value pairs.\n client_config:\n endpoint: my.nsone.endpoint # Default: api.nsone.net\n ignore-ssl-errors: true # Default: false\n follow_pagination: false # Default: true\n # Optional. Default: false. Use modern HTTP monitor (true) or the legacy\n # HTTP-emulating TCP monitor (false) for HTTP(s) healthchecks.\n use_http_monitors: false\n # Optional. Default: HTTP/1.0. Default HTTP protocol to use when\n # health-checking dynamic record endpoints. See \"Health Check Options\"\n # README section below to override per dynamic record.\n # This is only supported when use_http_monitors is set to false. If it\n # is set to true, HTTP/1.1 will be used and it cannot be changed.\n default_healthcheck_http_version: HTTP/1.0\n\n```\n\n### Support Information\n\n#### Records\n\nAll octoDNS record types are supported.\n\n#### Root NS Records\n\nNs1Provider supports full root NS record management.\n\n#### Dynamic\n\nNs1Provider supports dynamic records.\n\n#### Subnet targeting\n\nNs1Provider supports [subnet targeting](https://github.com/octodns/octodns/blob/main/docs/dynamic_records.md#subnets) in dynamic records.\n\n#### Health Check Options\n\nSee https://github.com/octodns/octodns/blob/master/docs/dynamic_records.md#health-checks for information on health checking for dynamic records. Ns1Provider supports the following options:\n\n| Key | Description | Default |\n|--|--|--|\n| policy | One of:<ol><li>`all` - down if every region is down</li><li>`quorum` - down if majority regions are down</li><li>`one` - down if any region is down</ol> | `quorum` |\n| frequency | Frequency (in seconds) of health-check | 60 |\n| connect_timeout | Timeout (in seconds) before we give up trying to connect | 2 |\n| response_timeout | Timeout (in seconds) after connecting to wait for output | 10 |\n| rapid_recheck | Enable or disable a second, automatic verification test before changing the status of a host. Enabling this option can help prevent false positives. | False |\n| http_version | Specify HTTP version to use when HTTP health-checking a host. Only applicable if `use_http_monitors=False`. One of <ol><li>`HTTP/1.0`</li><li>`HTTP/1.1`</li><ol> | `HTTP/1.0` |\n\n```yaml\n---\n octodns:\n ns1:\n healthcheck:\n policy: quorum\n frequency: 60\n connect_timeout: 2\n response_timeout: 10\n rapid_recheck: True\n http_version: HTTP/1.1\n```\n\n### Development\n\nSee 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.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "NS1 provider for octoDNS",
"version": "0.0.7",
"project_urls": {
"Homepage": "https://github.com/octodns/octodns-ns1"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "8ee2054d943631e0396f460e88bac75167ee76681ddc8845069198521066e032",
"md5": "d6e83b74c585ba5cbec0c7ce01044012",
"sha256": "4f08995a5b98cb50b10958b2e8266765f2f605ec485550391cca393c81e8bb21"
},
"downloads": -1,
"filename": "octodns_ns1-0.0.7-py3-none-any.whl",
"has_sig": false,
"md5_digest": "d6e83b74c585ba5cbec0c7ce01044012",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 19539,
"upload_time": "2023-11-14T19:45:38",
"upload_time_iso_8601": "2023-11-14T19:45:38.144876Z",
"url": "https://files.pythonhosted.org/packages/8e/e2/054d943631e0396f460e88bac75167ee76681ddc8845069198521066e032/octodns_ns1-0.0.7-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "84c46e7fa98bbcd7c725074dc2d9354b0206548084f0b7558e17c82f3e102b75",
"md5": "8cae637e08173dd195ca42838a42e4a5",
"sha256": "7449fbc19ab23b521113c8f0ac7c9e4dee2e815b42ac105dce0210b22644c582"
},
"downloads": -1,
"filename": "octodns-ns1-0.0.7.tar.gz",
"has_sig": false,
"md5_digest": "8cae637e08173dd195ca42838a42e4a5",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 37883,
"upload_time": "2023-11-14T19:45:40",
"upload_time_iso_8601": "2023-11-14T19:45:40.121578Z",
"url": "https://files.pythonhosted.org/packages/84/c4/6e7fa98bbcd7c725074dc2d9354b0206548084f0b7558e17c82f3e102b75/octodns-ns1-0.0.7.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-11-14 19:45:40",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "octodns",
"github_project": "octodns-ns1",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "octodns-ns1"
}