## EdgeCenter DNS v2 API provider for octoDNS
An [octoDNS](https://github.com/octodns/octodns/) provider that targets [EdgeCenter DNS](https://edgecenter.ru/dns/).
### Installation
#### Command line
```
pip install octodns-edgecenter
```
#### 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-edgecenter==0.0.2
```
##### 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-edgecenter.git@ec9661f8b335241ae4746eea467a8509205e6a30#egg=octodns_edgecenter
```
### Configuration
#### EdgeCenterProvider
```yaml
providers:
ec:
class: octodns_edgecenter.EdgeCenterProvider
# Your API key
token: env/EC_TOKEN
token_type: APIKey
# or login + password
#login: env/EC_LOGIN
#password: env/EC_PASSWORD
#auth_url: https://api.edgecenter.ru/iam
#url: https://api.edgecenter.ru/dns/v2
#records_per_response: 1
```
### Support Information
#### Records
Supports A, AAAA, NS, MX, TXT, SRV, CNAME, and PTR
#### Dynamic
Supports dynamic records.
#### Filters
Supports filter weight of records type A, AAAA, and CNAME (weighted_shuffle)
You need to use the weight pool:
```yaml
---
'':
# This is a dynamic record when used with providers that support it
dynamic:
# These are the pools of records that can be referenced and thus used by rules
pools:
weight:
# Implicit weight to the weight pool (below)
values:
- value: 5.5.5.5
weight: 25
- value: 6.6.6.6
- value: 7.7.7.7
weight: 75
# Rules that assign queries to pools
rules:
# No geos means match all queries
- pool: weight
ttl: 60
type: A
# These values become a non-healthchecked default pool
values:
- 5.5.5.5
- 6.6.6.6
- 7.7.7.7
```
```json
{
"rrsets": [
{
"name": "your.zone.",
"type": "A",
"ttl": 60,
"filters": [
{
"type": "weighted_shuffle"
},
{
"limit": 1,
"type": "first_n"
}
],
"resource_records": [
{
"content": [
"7.7.7.7"
],
"meta": {
"weight": 75
}
},
{
"content": [
"6.6.6.6"
],
"meta": {
"weight": 1
}
},
{
"content": [
"5.5.5.5"
],
"meta": {
"weight": 25
}
}
]
}
]
}
```
### 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-edgecenter",
"name": "octodns-edgecenter",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": null,
"author": "Ross McFarland",
"author_email": "rwmcfa1@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/e6/5d/dcdcb06ebe40f90951bbde222fa7fee72d00827f33df9f38c12e4ca4b733/octodns_edgecenter-0.0.3.tar.gz",
"platform": null,
"description": "## EdgeCenter DNS v2 API provider for octoDNS\n\nAn [octoDNS](https://github.com/octodns/octodns/) provider that targets [EdgeCenter DNS](https://edgecenter.ru/dns/).\n\n### Installation\n\n#### Command line\n\n```\npip install octodns-edgecenter\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-edgecenter==0.0.2\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-edgecenter.git@ec9661f8b335241ae4746eea467a8509205e6a30#egg=octodns_edgecenter\n```\n\n### Configuration\n\n\n#### EdgeCenterProvider\n\n```yaml\nproviders:\n ec:\n class: octodns_edgecenter.EdgeCenterProvider\n # Your API key\n token: env/EC_TOKEN\n token_type: APIKey\n # or login + password\n #login: env/EC_LOGIN\n #password: env/EC_PASSWORD\n #auth_url: https://api.edgecenter.ru/iam\n #url: https://api.edgecenter.ru/dns/v2\n #records_per_response: 1\n```\n\n### Support Information\n\n#### Records\n\nSupports A, AAAA, NS, MX, TXT, SRV, CNAME, and PTR\n\n#### Dynamic\n\nSupports dynamic records.\n\n#### Filters\n\nSupports filter weight of records type A, AAAA, and CNAME (weighted_shuffle)\n\nYou need to use the weight pool:\n\n```yaml\n---\n'':\n # This is a dynamic record when used with providers that support it\n dynamic:\n # These are the pools of records that can be referenced and thus used by rules\n pools:\n weight:\n # Implicit weight to the weight pool (below)\n values:\n - value: 5.5.5.5\n weight: 25\n - value: 6.6.6.6\n - value: 7.7.7.7\n weight: 75\n # Rules that assign queries to pools\n rules:\n # No geos means match all queries\n - pool: weight\n ttl: 60\n type: A\n # These values become a non-healthchecked default pool\n values:\n - 5.5.5.5\n - 6.6.6.6\n - 7.7.7.7\n```\n```json\n{\n \"rrsets\": [\n {\n \"name\": \"your.zone.\",\n \"type\": \"A\",\n \"ttl\": 60,\n \"filters\": [\n {\n \"type\": \"weighted_shuffle\"\n },\n {\n \"limit\": 1,\n \"type\": \"first_n\"\n }\n ],\n \"resource_records\": [\n {\n \"content\": [\n \"7.7.7.7\"\n ],\n \"meta\": {\n \"weight\": 75\n }\n },\n {\n \"content\": [\n \"6.6.6.6\"\n ],\n \"meta\": {\n \"weight\": 1\n }\n },\n {\n \"content\": [\n \"5.5.5.5\"\n ],\n \"meta\": {\n \"weight\": 25\n }\n }\n ]\n }\n ]\n}\n\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": "EdgeCenter DNS v2 API provider for octoDNS",
"version": "0.0.3",
"project_urls": {
"Homepage": "https://github.com/octodns/octodns-edgecenter"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "dd6d0720f8b4d340395f94aed3e97e105e3a542cf48366ed9805c4a6921ccce5",
"md5": "122c03892c22da390de9243c1100c135",
"sha256": "c5a41f078a9387b2fcf2f1f69e38636203e14ad5b4d6dc4592e758dc0760707e"
},
"downloads": -1,
"filename": "octodns_edgecenter-0.0.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "122c03892c22da390de9243c1100c135",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 9943,
"upload_time": "2025-01-23T18:19:33",
"upload_time_iso_8601": "2025-01-23T18:19:33.366299Z",
"url": "https://files.pythonhosted.org/packages/dd/6d/0720f8b4d340395f94aed3e97e105e3a542cf48366ed9805c4a6921ccce5/octodns_edgecenter-0.0.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e65ddcdcb06ebe40f90951bbde222fa7fee72d00827f33df9f38c12e4ca4b733",
"md5": "1a665dae5b2a3d825c1f190551e0efb5",
"sha256": "0cc4ac8aa7b3ebc6c6f39dbb44fe96d9d6aff6fd95abdc451aa7c0e5ecba8393"
},
"downloads": -1,
"filename": "octodns_edgecenter-0.0.3.tar.gz",
"has_sig": false,
"md5_digest": "1a665dae5b2a3d825c1f190551e0efb5",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 16481,
"upload_time": "2025-01-23T18:19:35",
"upload_time_iso_8601": "2025-01-23T18:19:35.941516Z",
"url": "https://files.pythonhosted.org/packages/e6/5d/dcdcb06ebe40f90951bbde222fa7fee72d00827f33df9f38c12e4ca4b733/octodns_edgecenter-0.0.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-01-23 18:19:35",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "octodns",
"github_project": "octodns-edgecenter",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "PyYAML",
"specs": [
[
"==",
"6.0.2"
]
]
},
{
"name": "certifi",
"specs": [
[
"==",
"2024.8.30"
]
]
},
{
"name": "charset-normalizer",
"specs": [
[
"==",
"3.3.2"
]
]
},
{
"name": "dnspython",
"specs": [
[
"==",
"2.7.0"
]
]
},
{
"name": "fqdn",
"specs": [
[
"==",
"1.5.1"
]
]
},
{
"name": "idna",
"specs": [
[
"==",
"3.10"
]
]
},
{
"name": "natsort",
"specs": [
[
"==",
"8.4.0"
]
]
},
{
"name": "octodns",
"specs": [
[
"==",
"1.10.0"
]
]
},
{
"name": "python-dateutil",
"specs": [
[
"==",
"2.9.0.post0"
]
]
},
{
"name": "requests",
"specs": [
[
"==",
"2.32.3"
]
]
},
{
"name": "six",
"specs": [
[
"==",
"1.16.0"
]
]
},
{
"name": "urllib3",
"specs": [
[
"==",
"2.2.3"
]
]
}
],
"lcname": "octodns-edgecenter"
}