Compare commits

..

38 commits
dev ... main

Author SHA1 Message Date
8e168c4d88 fix cicd files
All checks were successful
check code / check-code (push) Successful in 17s
Signed-off-by: Ivan Schaller <ivan@schaller.sh>
2024-08-15 18:05:49 +02:00
1283d83060 add examples
Signed-off-by: Ivan Schaller <ivan@schaller.sh>
2024-08-15 18:05:43 +02:00
00a6ff600b update version matrix
Signed-off-by: Ivan Schaller <ivan@schaller.sh>
2024-08-15 18:05:23 +02:00
76a773da33 update changelog
Signed-off-by: Ivan Schaller <ivan@schaller.sh>
2024-08-15 18:05:12 +02:00
8226ee8c3e Merge pull request 'chore(deps): update lscr.io/linuxserver/netbox docker tag to v4.0.9' (#32) from renovate/lscr.io-linuxserver-netbox-4.x into main
All checks were successful
check code / check-code (push) Successful in 17s
Reviewed-on: #32
2024-08-15 17:54:11 +02:00
6b4bafff5a chore(deps): update lscr.io/linuxserver/netbox docker tag to v4.0.9
All checks were successful
build pypackage and create release / release-github (pull_request) Successful in 14s
check code / check-code (pull_request) Successful in 17s
2024-08-15 04:15:55 +02:00
4c6aec285b Bump version 0.3.6 → 0.3.7
All checks were successful
check code / check-code (push) Successful in 21s
build pypackage and create release / release-github (push) Successful in 30s
2024-08-09 11:07:58 +02:00
9efd4faea1 run auto-formatter
All checks were successful
check code / check-code (push) Successful in 18s
Signed-off-by: Ivan Schaller <ivan@schaller.sh>
2024-08-09 10:59:15 +02:00
Erik Hansson
f1f6602985 always normalize zones 2024-08-08 16:14:43 +02:00
96d4bff5ff Merge pull request 'chore(deps): update lscr.io/linuxserver/netbox docker tag to v4.0.8' (#30) from renovate/lscr.io-linuxserver-netbox-4.x into main
All checks were successful
check code / check-code (push) Successful in 18s
Reviewed-on: #30
2024-07-28 18:55:45 +02:00
aaab7d948e chore(deps): update lscr.io/linuxserver/netbox docker tag to v4.0.8
All checks were successful
build pypackage and create release / release-github (pull_request) Successful in 54s
check code / check-code (pull_request) Successful in 1m8s
2024-07-27 08:19:35 +02:00
f4e877e2fe remove lefthook from justfile
All checks were successful
check code / check-code (push) Successful in 52s
Signed-off-by: Ivan Schaller <ivan@schaller.sh>
2024-07-17 20:35:33 +02:00
65723753f6 update ci ciles
Some checks failed
check code / check-code (push) Has been cancelled
Signed-off-by: Ivan Schaller <ivan@schaller.sh>
2024-07-17 20:35:11 +02:00
c88acdb0f4 Merge pull request 'chore(deps): update lscr.io/linuxserver/netbox docker tag to v4.0.7' (#27) from renovate/lscr.io-linuxserver-netbox-4.x into main
All checks were successful
check code / check-code (push) Successful in 35s
Reviewed-on: #27
2024-07-10 09:58:58 +02:00
b528c58eae chore(deps): update lscr.io/linuxserver/netbox docker tag to v4.0.7
All checks were successful
build and publish / update-changelog (pull_request) Has been skipped
build and publish / release-pypackage (pull_request) Successful in 41s
check code / check-code (pull_request) Successful in 40s
2024-07-10 08:21:19 +02:00
6772f0a5e0 update to netbox>4.0 and netbox-plugin-dns>1.0
Some checks failed
check code / check-code (push) Failing after 11m2s
2024-07-08 12:49:03 +02:00
b7f41f5675 Bump version 0.3.5 → 0.3.6
Some checks failed
check code / check-code (push) Failing after 13m8s
build and publish / release-pypackage (push) Failing after 13m7s
build and publish / update-changelog (push) Failing after 12m59s
2024-07-07 18:23:16 +02:00
adeca856be update tests and deps
Some checks are pending
check code / check-code (push) Waiting to run
Signed-off-by: Ivan Schaller <ivan@schaller.sh>
2024-07-07 18:21:01 +02:00
c1b21bf093
Merge pull request #4 from freym/dynamic-zones
Implement Provider.list_zones for dynamic zone config support
2024-07-07 18:18:31 +02:00
ba2a3f6edf
fix whitespace 2024-06-27 21:30:10 +02:00
60b3226361
use make_absolute function 2024-06-27 21:26:56 +02:00
Matthias Frey
0051c30b8d Implement Provider.list_zones for dynamic zone config support 2024-06-18 10:08:37 +02:00
77ac5fbc07 Merge pull request 'chore(deps): update lscr.io/linuxserver/netbox docker tag to v3.7.6' (#20) from renovate/lscr.io-linuxserver-netbox-3.x into main
All checks were successful
check code / check-code (push) Successful in 34s
Reviewed-on: #20
2024-04-30 08:31:21 +02:00
3e56f082b2 Merge pull request 'chore(deps): update dependency octodns to v1.7.0' (#21) from renovate/octodns-1.x into main
All checks were successful
check code / check-code (push) Successful in 37s
Reviewed-on: #21
2024-04-30 08:27:55 +02:00
cb510541e2 chore(deps): update dependency octodns to v1.7.0
Some checks failed
build and publish / update-changelog (pull_request) Failing after 9s
build and publish / release-pypackage (pull_request) Successful in 27s
check code / check-code (pull_request) Successful in 30s
2024-04-30 08:17:40 +02:00
d97d2b749c chore(deps): update lscr.io/linuxserver/netbox docker tag to v3.7.6
Some checks failed
check code / check-code (pull_request) Successful in 26s
build and publish / update-changelog (pull_request) Failing after 35s
build and publish / release-pypackage (pull_request) Successful in 37s
2024-04-22 20:15:10 +02:00
9719bcf191 Merge pull request 'chore(deps): update lscr.io/linuxserver/netbox docker tag to v3.7.5' (#19) from renovate/lscr.io-linuxserver-netbox-3.x into main
All checks were successful
check code / check-code (push) Successful in 27s
Reviewed-on: #19
2024-04-08 12:18:49 +02:00
cdd9f0d910 chore(deps): update lscr.io/linuxserver/netbox docker tag to v3.7.5
Some checks failed
build and publish / update-changelog (pull_request) Failing after 8s
build and publish / release-pypackage (pull_request) Successful in 38s
check code / check-code (pull_request) Successful in 31s
2024-04-05 08:17:12 +02:00
cb70a80a40 Merge pull request 'chore(deps): update dependency octodns to v1.6.1' (#18) from renovate/octodns-1.x into main
All checks were successful
check code / check-code (push) Successful in 26s
Reviewed-on: #18
2024-03-21 10:25:25 +01:00
d70c9dec0a chore(deps): update dependency octodns to v1.6.1
All checks were successful
build and publish / update-changelog (pull_request) Successful in 6s
build and publish / release-pypackage (pull_request) Successful in 42s
check code / check-code (pull_request) Successful in 31s
2024-03-18 08:16:51 +01:00
ba4053f8ba Merge pull request 'chore(deps): update lscr.io/linuxserver/netbox docker tag to v3.7.4' (#17) from renovate/lscr.io-linuxserver-netbox-3.x into main
All checks were successful
check code / check-code (push) Successful in 27s
Reviewed-on: #17
2024-03-14 21:54:40 +01:00
6f1424c25e chore(deps): update lscr.io/linuxserver/netbox docker tag to v3.7.4
All checks were successful
build and publish / update-changelog (pull_request) Successful in 6s
build and publish / release-pypackage (pull_request) Successful in 25s
check code / check-code (pull_request) Successful in 23s
2024-03-14 08:16:36 +01:00
10e842385c Merge pull request 'chore(deps): update dependency just to v1.25.2' (#3) from renovate/just-1.x into main
All checks were successful
check code / check-code (push) Successful in 29s
Reviewed-on: #3
2024-03-12 10:16:25 +01:00
4304729ba0 Merge pull request 'chore(deps): update dependency octodns to v1.6.0' (#15) from renovate/octodns-1.x into main
Some checks failed
check code / check-code (push) Has been cancelled
Reviewed-on: #15
2024-03-12 10:16:10 +01:00
b19a598c38 chore(deps): update dependency octodns to v1.6.0
All checks were successful
build and publish / update-changelog (pull_request) Successful in 7s
build and publish / release-pypackage (pull_request) Successful in 25s
check code / check-code (pull_request) Successful in 25s
2024-03-12 08:16:41 +01:00
dff84f48ab chore(deps): update dependency just to v1.25.2
All checks were successful
build and publish / release-pypackage (pull_request) Successful in 29s
build and publish / update-changelog (pull_request) Successful in 5s
check code / check-code (pull_request) Successful in 31s
2024-03-11 08:16:17 +01:00
ff955d8479 [bot] update changelog 2024-03-04 16:09:15 +00:00
ec27c03260 Bump version 0.3.4 → 0.3.5
All checks were successful
build and publish / update-changelog (push) Successful in 9s
check code / check-code (push) Successful in 28s
build and publish / release-pypackage (push) Successful in 48s
2024-03-04 17:08:41 +01:00
18 changed files with 368 additions and 80 deletions

View file

@ -1,4 +1,4 @@
name: build and publish
name: build pypackage and create release
on:
push:
@ -9,16 +9,55 @@ on:
branches: [main, master]
jobs:
release-pypackage:
uses: actions/workflows/.gitea/workflows/release_pypackage.yml@master
release-github:
runs-on: ubuntu-latest
env:
HATCH_INDEX_REPO: main
HATCH_INDEX_USER: __token__
HATCH_INDEX_AUTH: ${{ secrets.PACKAGE_TOKEN }}
steps:
- name: checkout code
uses: actions/checkout@v4
with:
repository: main
secrets:
username: __token__
token: ${{ secrets.PACKAGE_TOKEN }}
gh-token: ${{ secrets.GH_TOKEN }}
fetch-depth: 0
update-changelog:
uses: actions/workflows/.gitea/workflows/update_changelog.yml@master
- uses: actions/setup-python@v5
with:
branch: main
python-version: "3.11"
- name: setup go
uses: actions/setup-go@v4
with:
go-version: ">=1.20"
- name: install hatc h
run: pip install -U hatch hatchling
- name: build package
run: hatch build --clean
- name: install auto-changelog
run: npm install auto-changelog
- name: generate changelog
run: >-
npx auto-changelog -t keepachangelog
--commit-limit 50 --backfill-limit 50
--ignore-commit-pattern '[Bb]ump version|[Uu]pdate changelog|[Mm]erge pull request'
- name: get release notes
id: release-notes
uses: olofvndrhr/releasenote-gen@v1
- name: publish package
if: gitea.event_name != 'pull_request'
run: hatch publish --yes --no-prompt
- name: create gitea release
uses: https://gitea.com/actions/release-action@main
if: gitea.event_name != 'pull_request'
with:
title: ${{ gitea.ref_name }}
body: ${{ steps.release-notes.outputs.releasenotes }}
files: |-
dist/**

View file

@ -9,6 +9,23 @@ on:
jobs:
check-code:
uses: actions/workflows/.gitea/workflows/check_python_hatch.yml@master
runs-on: ubuntu-latest
steps:
- name: checkout code
uses: actions/checkout@v3
- uses: actions/setup-python@v5
with:
run-tests: true
python-version: "3.11"
- name: install hatch
run: pip install -U hatch
- name: test codestyle
run: hatch run lint:style
- name: test typing
run: hatch run lint:typing
- name: run tests
run: hatch run default:test

View file

@ -0,0 +1,33 @@
name: update changelog
on:
push:
tags:
- "v*.*.*"
jobs:
update-changelog:
runs-on: ubuntu-latest
steps:
- name: checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: master
- name: install auto-changelog
run: npm install auto-changelog
- name: generate changelog
run: >-
npx auto-changelog -t keepachangelog
--commit-limit 50 --backfill-limit 50
--ignore-commit-pattern '[Bb]ump version|[Uu]pdate changelog|[Mm]erge pull request'
- name: commit and push changelog
uses: EndBug/add-and-commit@v9
with:
add: CHANGELOG.md
message: "[bot] update changelog"
author_name: actions-bot
author_email: actions@bots.44net.ch

View file

@ -1,4 +1,4 @@
name: build and release
name: build pypackage and create release
on:
push:
@ -17,7 +17,7 @@ jobs:
HATCH_INDEX_AUTH: ${{ secrets.PACKAGE_TOKEN }}
steps:
- name: checkout code
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 0
@ -25,12 +25,18 @@ jobs:
with:
python-version: "3.11"
- name: install hatch
run: pip install -U hatch hatchling
- name: build package
run: hatch build --clean
- name: install auto-changelog
run: npm install -g auto-changelog
run: npm install auto-changelog
- name: generate changelog
run: >-
auto-changelog -t keepachangelog
npx auto-changelog -t keepachangelog
--commit-limit 50 --backfill-limit 50
--ignore-commit-pattern '[Bb]ump version|[Uu]pdate changelog|[Mm]erge pull request'
@ -38,12 +44,6 @@ jobs:
id: release-notes
uses: olofvndrhr/releasenote-gen@v1
- name: install hatch
run: pip install -U hatch hatchling
- name: build package
run: hatch build --clean
- name: create github release
uses: ncipollo/release-action@v1
if: github.event_name != 'pull_request'

View file

@ -1,2 +1 @@
just 1.16.0
lefthook 1.4.6
just 1.25.2

View file

@ -7,6 +7,51 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
## [v0.3.7](https://git.44net.ch/olofvndrhr/octodns-netbox-dns/compare/v0.3.6...v0.3.7) - 2024-08-09
### Commits
- update ci ciles [`6572375`](https://git.44net.ch/olofvndrhr/octodns-netbox-dns/commit/65723753f6747921990fcd4f1b6c39c00005a92e)
- always normalize zones [`f1f6602`](https://git.44net.ch/olofvndrhr/octodns-netbox-dns/commit/f1f6602985ef57d2b1531f7099a1df7515fbaa6f)
- run auto-formatter [`9efd4fa`](https://git.44net.ch/olofvndrhr/octodns-netbox-dns/commit/9efd4faea1320a8e037ef0e4a7deab89fb3a95ab)
- update to netbox&gt;4.0 and netbox-plugin-dns&gt;1.0 [`6772f0a`](https://git.44net.ch/olofvndrhr/octodns-netbox-dns/commit/6772f0a5e0a929cc589c4fb08ff989eb8a962c3c)
- chore(deps): update lscr.io/linuxserver/netbox docker tag to v4.0.8 [`aaab7d9`](https://git.44net.ch/olofvndrhr/octodns-netbox-dns/commit/aaab7d948e5cba8c34785b5f4c53cee3c6791184)
- chore(deps): update lscr.io/linuxserver/netbox docker tag to v4.0.7 [`b528c58`](https://git.44net.ch/olofvndrhr/octodns-netbox-dns/commit/b528c58eaed41afd59c3fa76ae5f9940d5ba5049)
- remove lefthook from justfile [`f4e877e`](https://git.44net.ch/olofvndrhr/octodns-netbox-dns/commit/f4e877e2fe41dbf8a5e52bc795bf04b5da654aed)
## [v0.3.6](https://git.44net.ch/olofvndrhr/octodns-netbox-dns/compare/v0.3.5...v0.3.6) - 2024-07-07
### Commits
- update tests and deps [`adeca85`](https://git.44net.ch/olofvndrhr/octodns-netbox-dns/commit/adeca856be84af888ec7d1de3a567fba5c439f68)
- Implement Provider.list_zones for dynamic zone config support [`0051c30`](https://git.44net.ch/olofvndrhr/octodns-netbox-dns/commit/0051c30b8d948971b7ec447595b50eef80515993)
- use make_absolute function [`60b3226`](https://git.44net.ch/olofvndrhr/octodns-netbox-dns/commit/60b322636169fd8a32804f29264fe750caff607b)
- fix whitespace [`ba2a3f6`](https://git.44net.ch/olofvndrhr/octodns-netbox-dns/commit/ba2a3f6edfe2be8566c609784f659b1638c3922d)
- chore(deps): update dependency octodns to v1.7.0 [`cb51054`](https://git.44net.ch/olofvndrhr/octodns-netbox-dns/commit/cb510541e25cd5b1d57afc8496b4bb89088f3b3c)
- chore(deps): update lscr.io/linuxserver/netbox docker tag to v3.7.6 [`d97d2b7`](https://git.44net.ch/olofvndrhr/octodns-netbox-dns/commit/d97d2b749cd5a62e310600b31159665b44e724d7)
- chore(deps): update lscr.io/linuxserver/netbox docker tag to v3.7.5 [`cdd9f0d`](https://git.44net.ch/olofvndrhr/octodns-netbox-dns/commit/cdd9f0d910f682f8ab70c66887e75f095e43094a)
- chore(deps): update dependency octodns to v1.6.1 [`d70c9de`](https://git.44net.ch/olofvndrhr/octodns-netbox-dns/commit/d70c9dec0aa532c699feba8bd5991cfe7a7a13d7)
- chore(deps): update lscr.io/linuxserver/netbox docker tag to v3.7.4 [`6f1424c`](https://git.44net.ch/olofvndrhr/octodns-netbox-dns/commit/6f1424c25e7ce387a70094086a55ece38e6c7342)
- chore(deps): update dependency octodns to v1.6.0 [`b19a598`](https://git.44net.ch/olofvndrhr/octodns-netbox-dns/commit/b19a598c387c6cc53756bfc0b255ec6134e3aeef)
- chore(deps): update dependency just to v1.25.2 [`dff84f4`](https://git.44net.ch/olofvndrhr/octodns-netbox-dns/commit/dff84f48ab87fb257ee82ecf7ddb9e2b6993bd86)
## [v0.3.5](https://git.44net.ch/olofvndrhr/octodns-netbox-dns/compare/v0.3.4...v0.3.5) - 2024-03-04
### Commits
- add new tests [`a8ecfab`](https://git.44net.ch/olofvndrhr/octodns-netbox-dns/commit/a8ecfab93096cd3201efcb06a65bc86a2444611a)
- fix typo in method call and add function for semicolons [`afe1826`](https://git.44net.ch/olofvndrhr/octodns-netbox-dns/commit/afe182628a7b2fc784dc48bebaf9978c85d682d2)
- update ci files for github [`6b06cad`](https://git.44net.ch/olofvndrhr/octodns-netbox-dns/commit/6b06cada38751648b9365fd27b850aa2b6d250a8)
- unescape the changeset before comparison to live records to have an accurate changeset. fixes changes for txt records [`4fe8be6`](https://git.44net.ch/olofvndrhr/octodns-netbox-dns/commit/4fe8be62918b5bea821f4f88a151918899b61e91)
- rollback changes to semicolon escaping [`91ba03a`](https://git.44net.ch/olofvndrhr/octodns-netbox-dns/commit/91ba03af7f5f53a7f3b5218f0f4a905eebcdb914)
- revert: change from repr to string in changeset [`8d29b5e`](https://git.44net.ch/olofvndrhr/octodns-netbox-dns/commit/8d29b5e639b25bb57b43e9e85bbe78e51d70b493)
- update logging [`ff1a47c`](https://git.44net.ch/olofvndrhr/octodns-netbox-dns/commit/ff1a47cf8cda21695fb4e30910dd92d0f9cb8b63)
- update test cases [`f38a103`](https://git.44net.ch/olofvndrhr/octodns-netbox-dns/commit/f38a1036b79b9779a8480c2d1f79132370b83bb4)
- change from repr to string in changeset [`696d2a2`](https://git.44net.ch/olofvndrhr/octodns-netbox-dns/commit/696d2a2532eef05fee95cddff627c9b09736ae52)
- only unescape txt and spf records [`78448d2`](https://git.44net.ch/olofvndrhr/octodns-netbox-dns/commit/78448d2bde85fda1718c64e6cd8983b4fcb20fe0)
- fix semicolon escaping [`6e624a7`](https://git.44net.ch/olofvndrhr/octodns-netbox-dns/commit/6e624a79a75051295d1863f9af7e907d44a9b307)
- fix tests [`2e468c8`](https://git.44net.ch/olofvndrhr/octodns-netbox-dns/commit/2e468c85699808ed9ba2edb35a6cc39591869346)
## [v0.3.4](https://git.44net.ch/olofvndrhr/octodns-netbox-dns/compare/v0.3.3...v0.3.4) - 2024-02-29
### Commits

View file

@ -34,11 +34,12 @@ providers:
## compatibility
> actively tested on the newest netbox-plugin-dns and netbox versions
> actively tested on the newest `netbox-plugin-dns` and `netbox` versions
| provider | [netbox-plugin-dns](https://github.com/peteeckel/netbox-plugin-dns) | [netbox](https://github.com/netbox-community/netbox) |
|-------------|---------------------------------------------------------------------|------------------------------------------------------|
| ----------- | ------------------------------------------------------------------- | ---------------------------------------------------- |
| `>= v0.3.3` | `>=0.21.0` | `>=3.6.0` |
| `>= v0.3.6` | `>=1.0.0` | `>=4.0.0` |
## install

View file

@ -1,6 +1,6 @@
FROM lscr.io/linuxserver/netbox:3.7.3
FROM lscr.io/linuxserver/netbox:4.0.9
RUN pip install -U \
wheel \
setuptools \
netbox-plugin-dns
netbox-plugin-dns==1.0.4

View file

@ -14,7 +14,7 @@ PLUGINS_CONFIG = {
"zone_nameservers": ["ns1.example.com", "ns2.example.com"],
"zone_soa_mname": "ns1.example.com",
"zone_soa_rname": "admin.example.com",
"tolerate_underscores_in_hostnames": False,
"tolerate_underscores_in_labels": False,
"tolerate_leading_underscore_types": [
"TXT",
"SRV",

43
dev/sync2.yml Normal file
View file

@ -0,0 +1,43 @@
manager:
max_workers: 1
plan_outputs:
html:
class: octodns.provider.plan.PlanMarkdown
processors:
spf:
class: octodns_spf.SpfDnsLookupProcessor
no-root-ns:
class: octodns.processor.filter.IgnoreRootNsFilter
min-max-ttl:
class: octodns.processor.restrict.TtlRestrictionFilter
allowed_ttls:
- 60
- 300
- 600
- 900
- 1800
- 3600
- 7200
- 10800
providers:
config:
class: octodns.provider.yaml.YamlProvider
directory: ./zones
default_ttl: 3600
enforce_order: true
populate_should_replace: false
netbox:
class: octodns_netbox_dns.NetBoxDNSProvider
url: http://localhost:8000
token: 1ca8f8de1d651b0859052dc5e6a0858fd1e43e3d # change token for netbox
view: false
replace_duplicates: false
make_absolute: true
zones:
"*":
sources:
- config
processors:
- spf
targets:
- netbox

View file

@ -0,0 +1,52 @@
manager:
max_workers: 2
plan_outputs:
html:
class: octodns.provider.plan.PlanMarkdown
processors:
spf:
class: octodns_spf.SpfDnsLookupProcessor
no-root-ns:
class: octodns.processor.filter.IgnoreRootNsFilter
ignore-non-public:
class: octodns.processor.filter.NetworkValueRejectlistFilter
rejectlist:
- 127.0.0.0/8 # loopback
- 192.168.0.0/16 # rfc1918
- 172.16.0.0/12 # rfc1918
- 10.0.0.0/8 # rfc1918
- ::1/128 # loopback
- fc00::/7 # ula
- fe80::/10 # link-local
- f00::/8 # multicast
providers:
netbox:
class: octodns_netbox_dns.NetBoxDNSProvider
url: https://netbox.example.net
token: env/NETBOX_API_KEY
view: false
replace_duplicates: false
make_absolute: true
cloudflare:
class: octodns_cloudflare.CloudflareProvider
token: env/CLOUDFLARE_API_KEY
account_id: env/CLOUDFLARE_ACCOUNT_ID
cdn: false
pagerules: false
retry_count: 4
retry_period: 300
zones_per_page: 50
records_per_page: 100
zones:
"*":
sources:
- netbox
processors:
- spf
- no-root-ns
- ignore-non-public
targets:
- cloudflare

View file

@ -0,0 +1,33 @@
manager:
max_workers: 2
plan_outputs:
html:
class: octodns.provider.plan.PlanMarkdown
processors:
spf:
class: octodns_spf.SpfDnsLookupProcessor
providers:
config:
class: octodns.provider.yaml.YamlProvider
directory: ./zones
default_ttl: 3600
enforce_order: true
populate_should_replace: false
netbox:
class: octodns_netbox_dns.NetBoxDNSProvider
url: https://netbox.example.net
token: env/NETBOX_API_KEY
view: false
replace_duplicates: false
make_absolute: true
zones:
"*":
sources:
- netbox
processors:
- spf
targets:
- config

View file

@ -19,7 +19,6 @@ show_system_info:
setup:
asdf install
lefthook install
create_venv:
@echo "creating venv"
@ -77,5 +76,8 @@ sync *args:
dump *args:
hatch -v run default:dump {{ args }}
dump2 *args:
hatch -v run default:dump2 {{ args }}
validate *args:
hatch -v run default:validate {{ args }}

View file

@ -1,14 +0,0 @@
colors: true
no_tty: false
pre-commit:
commands:
01_ruff_check:
stage_fixed: true
glob: "*.py"
run: ruff check --fix-only --exit-zero --silent {all_files}
02_ruff_format:
stage_fixed: true
glob: "*.py"
run: ruff format {all_files}

View file

@ -1,5 +1,5 @@
[build-system]
requires = ["hatchling>=1.18", "hatch-regex-commit>=0.0.3"]
requires = ["hatchling>=1.24", "hatch-regex-commit>=0.0.3"]
build-backend = "hatchling.build"
[project]
@ -11,7 +11,7 @@ requires-python = ">=3.11"
dynamic = ["version"]
authors = [
{ name = "Jeffrey C. Ollie", email = "" },
{ name = "Ivan Schaller", email = "ivan@schaller.sh" }
{ name = "Ivan Schaller", email = "ivan@schaller.sh" },
]
classifiers = [
"License :: OSI Approved :: MIT License",
@ -19,10 +19,7 @@ classifiers = [
"Operating System :: OS Independent",
"Programming Language :: Python :: 3.11",
]
dependencies = [
"pynetbox>=7.2.0",
"dnspython>=2.4.2",
]
dependencies = ["pynetbox>=7.2.0", "dnspython>=2.4.2"]
[project.urls]
Homepage = "https://github.com/olofvndrhr/octodns-netbox-dns"
@ -48,9 +45,9 @@ packages = ["src/octodns_netbox_dns"]
[tool.hatch.envs.default]
python = "3.11"
dependencies = [
"pytest==7.4.4",
"coverage==7.4.2",
"octodns==1.5.0",
"pytest==8.2.2",
"coverage==7.5.3",
"octodns==1.9.1",
"octodns-spf==0.0.2",
]
@ -61,28 +58,23 @@ cov-report = ["- coverage combine", "coverage report", "coverage xml"]
cov = ["test-cov", "cov-report"]
sync = ["cd dev && octodns-sync --debug --config-file sync.yml --force {args}"]
dump = ["cd dev && octodns-dump --debug --config-file sync.yml --output-dir output {args} '*' netbox"]
dump = [
"cd dev && octodns-dump --debug --config-file sync.yml --output-dir output {args} '*' netbox",
]
dump2 = [
"cd dev && octodns-dump --debug --config-file sync2.yml --output-dir output {args} '*' netbox",
]
validate = ["cd dev && octodns-validate --debug --config-file sync.yml {args}"]
[tool.hatch.envs.lint]
python = "3.11"
detached = true
dependencies = [
"mypy==1.8.0",
"ruff==0.2.2",
]
dependencies = ["mypy==1.10.0", "ruff==0.4.8"]
[tool.hatch.envs.lint.scripts]
typing = "mypy --non-interactive --install-types {args:src/octodns_netbox_dns}"
style = [
"ruff check --diff {args:.}",
"ruff format --check --diff {args:.}"
]
fmt = [
"ruff check --fix {args:.}",
"ruff format {args:.}",
"style"
]
style = ["ruff check --diff {args:.}", "ruff format --check --diff {args:.}"]
fmt = ["ruff check --fix {args:.}", "ruff format {args:.}", "style"]
all = ["style", "typing"]
###
@ -112,7 +104,7 @@ exclude = [
"dist",
"node_modules",
"venv",
"dev"
"dev",
]
[tool.ruff.lint]
@ -143,8 +135,18 @@ select = [
"W",
"YTT",
]
ignore-init-module-imports = true
ignore = ["E501", "D103", "D100", "D102", "PLR2004", "D403", "ISC001", "FBT001", "FBT002", "FBT003"]
ignore = [
"E501",
"D103",
"D100",
"D102",
"PLR2004",
"D403",
"ISC001",
"FBT001",
"FBT002",
"FBT003",
]
unfixable = ["F401"]
[tool.ruff.format]
@ -231,7 +233,10 @@ parallel = true
omit = ["src/octodns_netbox_dns/__about__.py"]
[tool.coverage.paths]
octodns_netbox_dns = ["src/octodns_netbox_dns", "*/octodns-netbox-dns/src/octodns_netbox_dns"]
octodns_netbox_dns = [
"src/octodns_netbox_dns",
"*/octodns-netbox-dns/src/octodns_netbox_dns",
]
tests = ["tests", "*/octodns-netbox-dns/tests"]
[tool.coverage.report]

View file

@ -1 +1 @@
__version__ = "0.3.4"
__version__ = "0.3.7"

View file

@ -75,14 +75,18 @@ class NetBoxDNSProvider(octodns.provider.base.BaseProvider):
self.make_absolute = make_absolute
self.disable_ptr = disable_ptr
def _make_absolute(self, value: str) -> str:
def _make_absolute(self, value: str, force: bool = False) -> str:
"""return dns name with trailing dot to make it absolute
@param value: dns record value
@param force: when `True`, disregard configuration option `make_absolute`
@return: absolute dns record value
"""
if not self.make_absolute or value.endswith("."):
if value.endswith("."):
return value
if not (self.make_absolute or force):
return value
absolute_value = value + "."
@ -430,3 +434,14 @@ class NetBoxDNSProvider(octodns.provider.base.BaseProvider):
value=record,
disable_ptr=self.disable_ptr,
)
def list_zones(self) -> list[str]:
"""get all zones from netbox
@return: a list with all active zones
"""
query_params = {"status": "active", **self.nb_view}
zones = self.api.plugins.netbox_dns.zones.filter(**query_params)
absolute_zones = [self._make_absolute(z.name, True) for z in zones]
return sorted(absolute_zones)

View file

@ -11,7 +11,7 @@ DEFAULT_CONFIG = {
}
def test1():
def test_absolute():
nbdns = NetBoxDNSProvider(**DEFAULT_CONFIG)
rcd = "example.com"
absolute = nbdns._make_absolute(rcd)
@ -19,9 +19,27 @@ def test1():
assert absolute == "example.com."
def test2():
def test_noop():
nbdns = NetBoxDNSProvider(**DEFAULT_CONFIG)
rcd = "example.com."
absolute = nbdns._make_absolute(rcd)
assert absolute == "example.com."
def test_disabled():
args = {**DEFAULT_CONFIG, "make_absolute": False}
nbdns = NetBoxDNSProvider(**args)
rcd = "example.com"
relative = nbdns._make_absolute(rcd, force=False)
assert relative == "example.com"
def test_force():
args = {**DEFAULT_CONFIG, "make_absolute": False}
nbdns = NetBoxDNSProvider(**args)
rcd = "example.com"
absolute = nbdns._make_absolute(rcd, force=True)
assert absolute == "example.com."