Skip to main content

EdgeCenter DNS v2 API provider for octoDNS

Project description

EdgeCenter DNS v2 API provider for octoDNS

An octoDNS provider that targets EdgeCenter 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

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.

EdgeCenter RR meta passthrough

EdgeCenter RR meta keys that octoDNS dynamic does not model (asn, ip, latlong, notes, regions, and others outside geo/weight/default/backup) can be preserved in YAML under provider-specific passthrough:

octodns:
  edgecenter:
    resource_record_meta:
      - value: 2.2.2.2
        meta:
          regions: [ru-lug]
          notes: set in EdgeCenter UI

On sync, passthrough meta is restored to the API by matching value to the RR content (CNAME targets are stored with a trailing dot, matching octoDNS dynamic values).

YAML is the source of truth. Extra changes now compare the full API payload, not just failover settings. If meta exists in EdgeCenter (for example set in the UI) but is not represented in your config — including passthrough entries — octodns-sync may plan an update that removes it on apply.

Records with EdgeCenter filters but only unsupported RR meta (for example asn or regions without geo, weight, default, or backup on any RR) import as plain values/value records instead of failing. Filters and that meta are not preserved on import. Syncing such a record may flatten server-side steering into a plain multi-value record.

Filters

Supports filter weight of records type A, AAAA, and CNAME (weighted_shuffle)

You need to use the weight pool:

---
'':
  # 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
{
    "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/ directory for some tools to help with the development process. They generally follow the Script 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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

octodns_edgecenter-1.2.0.tar.gz (20.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

octodns_edgecenter-1.2.0-py3-none-any.whl (11.2 kB view details)

Uploaded Python 3

File details

Details for the file octodns_edgecenter-1.2.0.tar.gz.

File metadata

  • Download URL: octodns_edgecenter-1.2.0.tar.gz
  • Upload date:
  • Size: 20.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for octodns_edgecenter-1.2.0.tar.gz
Algorithm Hash digest
SHA256 1a27f432d07274a20cbfed23580184415c4e72b8a7f2b2406e6d02635091fb12
MD5 0b05fe518b5c68822715561a256c7302
BLAKE2b-256 27b2f4e51b6b5ae83412a9afabacb429437241979b6afa610e76762f0756f399

See more details on using hashes here.

File details

Details for the file octodns_edgecenter-1.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for octodns_edgecenter-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6843759c4835984f45ab93daa088a2b559732272808407491c27b2b8505fc25d
MD5 b14d37f3a4eb0e042fd89d9cece53b8f
BLAKE2b-256 9245867eada80f246112f73b568baefa9105ff813cb999dfd50bcb63f3302bbb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page