nautobot-dns-models 0.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- nautobot_dns_models-0.2.0/LICENSE +15 -0
- nautobot_dns_models-0.2.0/PKG-INFO +77 -0
- nautobot_dns_models-0.2.0/README.md +52 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/__init__.py +32 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/api/__init__.py +1 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/api/serializers.py +126 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/api/urls.py +18 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/api/views.py +116 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/app-config-schema.json +1 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/filters.py +85 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/forms.py +409 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/migrations/0001_initial.py +460 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/migrations/__init__.py +0 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/models.py +273 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/navigation.py +24 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/404.html +1160 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/admin/compatibility_matrix.html +1275 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/admin/install.html +1431 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/admin/release_notes/index.html +1252 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/admin/release_notes/version_0.2.html +1339 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/admin/uninstall.html +1361 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/admin/upgrade.html +1319 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/_mkdocstrings.css +119 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/extra.css +166 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/favicon.ico +0 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/images/favicon.png +0 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/javascripts/bundle.471ce7a9.min.js +29 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/javascripts/bundle.471ce7a9.min.js.map +7 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/javascripts/lunr/min/lunr.ar.min.js +1 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/javascripts/lunr/min/lunr.da.min.js +18 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/javascripts/lunr/min/lunr.de.min.js +18 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/javascripts/lunr/min/lunr.du.min.js +18 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/javascripts/lunr/min/lunr.el.min.js +1 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/javascripts/lunr/min/lunr.es.min.js +18 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/javascripts/lunr/min/lunr.fi.min.js +18 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/javascripts/lunr/min/lunr.fr.min.js +18 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/javascripts/lunr/min/lunr.he.min.js +1 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/javascripts/lunr/min/lunr.hi.min.js +1 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/javascripts/lunr/min/lunr.hu.min.js +18 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/javascripts/lunr/min/lunr.hy.min.js +1 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/javascripts/lunr/min/lunr.it.min.js +18 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/javascripts/lunr/min/lunr.ja.min.js +1 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/javascripts/lunr/min/lunr.jp.min.js +1 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/javascripts/lunr/min/lunr.kn.min.js +1 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/javascripts/lunr/min/lunr.ko.min.js +1 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/javascripts/lunr/min/lunr.multi.min.js +1 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/javascripts/lunr/min/lunr.nl.min.js +18 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/javascripts/lunr/min/lunr.no.min.js +18 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/javascripts/lunr/min/lunr.pt.min.js +18 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/javascripts/lunr/min/lunr.ro.min.js +18 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/javascripts/lunr/min/lunr.ru.min.js +18 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/javascripts/lunr/min/lunr.sa.min.js +1 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/javascripts/lunr/min/lunr.stemmer.support.min.js +1 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/javascripts/lunr/min/lunr.sv.min.js +18 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/javascripts/lunr/min/lunr.ta.min.js +1 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/javascripts/lunr/min/lunr.te.min.js +1 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/javascripts/lunr/min/lunr.th.min.js +1 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/javascripts/lunr/min/lunr.tr.min.js +18 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/javascripts/lunr/min/lunr.vi.min.js +1 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/javascripts/lunr/min/lunr.zh.min.js +1 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/javascripts/lunr/tinyseg.js +206 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/javascripts/lunr/wordcut.js +6708 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/javascripts/workers/search.b8dbb3d2.min.js +42 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/javascripts/workers/search.b8dbb3d2.min.js.map +7 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/nautobot_logo.png +0 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/nautobot_logo.svg +131 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/networktocode_bw.png +0 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/overrides/partials/copyright.html +22 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/stylesheets/main.3cba04c6.min.css +1 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/stylesheets/main.3cba04c6.min.css.map +1 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/stylesheets/palette.06af60db.min.css +1 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/assets/stylesheets/palette.06af60db.min.css.map +1 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/dev/code_reference/api.html +3414 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/dev/code_reference/index.html +1252 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/dev/code_reference/package.html +1447 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/dev/contributing.html +1423 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/dev/dev_environment.html +2227 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/dev/extending.html +1335 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/dev/release_checklist.html +1714 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/images/getting_started-add-record-1.png +0 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/images/getting_started-add-record-2.png +0 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/images/getting_started-add-record-3.png +0 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/images/getting_started-add-zone-1.png +0 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/images/getting_started-add-zone-2.png +0 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/images/getting_started-add-zone-3.png +0 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/images/getting_started-dns-zone-nav-bar.png +0 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/images/icon-nautobot-dns-models.png +0 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/images/readme-1.png +0 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/index.html +1434 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/objects.inv +0 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/requirements.txt +7 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/search/search_index.json +1 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/sitemap.xml +98 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/sitemap.xml.gz +0 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/user/app_getting_started.html +1383 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/user/app_overview.html +1426 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/user/app_use_cases.html +1369 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/user/external_interactions.html +1425 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/static/nautobot_dns_models/docs/user/faq.html +1317 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/tables.py +323 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/tests/__init__.py +1 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/tests/fixtures.py +10 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/tests/test_api.py +394 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/tests/test_basic.py +37 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/tests/test_filters.py +374 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/tests/test_forms.py +323 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/tests/test_models.py +188 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/tests/test_views.py +407 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/urls.py +63 -0
- nautobot_dns_models-0.2.0/nautobot_dns_models/views.py +388 -0
- nautobot_dns_models-0.2.0/pyproject.toml +193 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
Apache Software License 2.0
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025, Network to Code, LLC
|
|
4
|
+
|
|
5
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
you may not use this file except in compliance with the License.
|
|
7
|
+
You may obtain a copy of the License at
|
|
8
|
+
|
|
9
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
|
|
11
|
+
Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
See the License for the specific language governing permissions and
|
|
15
|
+
limitations under the License.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
|
+
Name: nautobot-dns-models
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: Nautobot DNS Models
|
|
5
|
+
License: Apache-2.0
|
|
6
|
+
Keywords: nautobot,nautobot-app,nautobot-plugin
|
|
7
|
+
Author: Network to Code, LLC
|
|
8
|
+
Author-email: info@networktocode.com
|
|
9
|
+
Requires-Python: >=3.9,<3.13
|
|
10
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
11
|
+
Classifier: Intended Audience :: Developers
|
|
12
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Provides-Extra: all
|
|
19
|
+
Requires-Dist: nautobot (>=2.4.4,<3.0.0)
|
|
20
|
+
Project-URL: Documentation, https://docs.nautobot.com/projects/nautobot-dns-models/en/latest/
|
|
21
|
+
Project-URL: Homepage, https://github.com/nautobot/nautobot-app-dns-models
|
|
22
|
+
Project-URL: Repository, https://github.com/nautobot/nautobot-app-dns-models
|
|
23
|
+
Description-Content-Type: text/markdown
|
|
24
|
+
|
|
25
|
+
# Nautobot DNS Models
|
|
26
|
+
|
|
27
|
+
<p align="center">
|
|
28
|
+
<img src="https://raw.githubusercontent.com/nautobot/nautobot-app-dns-models/develop/docs/images/icon-nautobot-dns-models.png" class="logo" height="200px">
|
|
29
|
+
<br>
|
|
30
|
+
<a href="https://github.com/nautobot/nautobot-app-dns-models/actions"><img src="https://github.com/nautobot/nautobot-app-dns-models/actions/workflows/ci.yml/badge.svg?branch=main"></a>
|
|
31
|
+
<a href="https://docs.nautobot.com/projects/dns-models/en/latest"><img src="https://readthedocs.org/projects/nautobot-app-dns-models/badge/"></a>
|
|
32
|
+
<a href="https://pypi.org/project/nautobot-dns-models/"><img src="https://img.shields.io/pypi/v/nautobot-dns-models"></a>
|
|
33
|
+
<a href="https://pypi.org/project/nautobot-dns-models/"><img src="https://img.shields.io/pypi/dm/nautobot-dns-models"></a>
|
|
34
|
+
<br>
|
|
35
|
+
An <a href="https://www.networktocode.com/nautobot/apps/">App</a> for <a href="https://nautobot.com/">Nautobot</a>.
|
|
36
|
+
</p>
|
|
37
|
+
|
|
38
|
+
## Overview
|
|
39
|
+
|
|
40
|
+
The DNS models app adds specific DNS related models for managing DNS zones and records to Nautobot. The goal is to be able to manage a DNS configuration for a zone or sub-zone. These models can then be leveraged with 3rd party IPAM or DNS services in line with the rest of your network data.
|
|
41
|
+
|
|
42
|
+
### Screenshots
|
|
43
|
+
|
|
44
|
+
More screenshots can be found in the [Using the App](https://docs.nautobot.com/projects/dns-models/en/latest/user/app_use_cases/) page in the documentation. Here's a quick overview of some of the app's added functionality:
|
|
45
|
+
|
|
46
|
+

|
|
47
|
+
|
|
48
|
+

|
|
49
|
+
|
|
50
|
+
Adding a DNS Zone
|
|
51
|
+
|
|
52
|
+

|
|
53
|
+
|
|
54
|
+
The DNS Zone View
|
|
55
|
+
|
|
56
|
+
## Documentation
|
|
57
|
+
|
|
58
|
+
Full documentation for this App can be found over on the [Nautobot Docs](https://docs.nautobot.com) website:
|
|
59
|
+
|
|
60
|
+
- [User Guide](https://docs.nautobot.com/projects/dns-models/en/latest/user/app_overview/) - Overview, Using the App, Getting Started.
|
|
61
|
+
- [Administrator Guide](https://docs.nautobot.com/projects/dns-models/en/latest/admin/install/) - How to Install, Configure, Upgrade, or Uninstall the App.
|
|
62
|
+
- [Developer Guide](https://docs.nautobot.com/projects/dns-models/en/latest/dev/contributing/) - Extending the App, Code Reference, Contribution Guide.
|
|
63
|
+
- [Release Notes / Changelog](https://docs.nautobot.com/projects/dns-models/en/latest/admin/release_notes/).
|
|
64
|
+
- [Frequently Asked Questions](https://docs.nautobot.com/projects/dns-models/en/latest/user/faq/).
|
|
65
|
+
|
|
66
|
+
### Contributing to the Documentation
|
|
67
|
+
|
|
68
|
+
You can find all the Markdown source for the App documentation under the [`docs`](https://github.com/nautobot/nautobot-app-dns-models/tree/develop/docs) folder in this repository. For simple edits, a Markdown capable editor is sufficient: clone the repository and edit away.
|
|
69
|
+
|
|
70
|
+
If you need to view the fully-generated documentation site, you can build it with [MkDocs](https://www.mkdocs.org/). A container hosting the documentation can be started using the `invoke` commands (details in the [Development Environment Guide](https://docs.nautobot.com/projects/dns-models/en/latest/dev/dev_environment/#docker-development-environment)) on [http://localhost:8001](http://localhost:8001). Using this container, as your changes to the documentation are saved, they will be automatically rebuilt and any pages currently being viewed will be reloaded in your browser.
|
|
71
|
+
|
|
72
|
+
Any PRs with fixes or improvements are very welcome!
|
|
73
|
+
|
|
74
|
+
## Questions
|
|
75
|
+
|
|
76
|
+
For any questions or comments, please check the [FAQ](https://docs.nautobot.com/projects/dns-models/en/latest/user/faq/) first. Feel free to also swing by the [Network to Code Slack](https://networktocode.slack.com/) (channel `#nautobot`), sign up [here](http://slack.networktocode.com/) if you don't have an account.
|
|
77
|
+
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Nautobot DNS Models
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<img src="https://raw.githubusercontent.com/nautobot/nautobot-app-dns-models/develop/docs/images/icon-nautobot-dns-models.png" class="logo" height="200px">
|
|
5
|
+
<br>
|
|
6
|
+
<a href="https://github.com/nautobot/nautobot-app-dns-models/actions"><img src="https://github.com/nautobot/nautobot-app-dns-models/actions/workflows/ci.yml/badge.svg?branch=main"></a>
|
|
7
|
+
<a href="https://docs.nautobot.com/projects/dns-models/en/latest"><img src="https://readthedocs.org/projects/nautobot-app-dns-models/badge/"></a>
|
|
8
|
+
<a href="https://pypi.org/project/nautobot-dns-models/"><img src="https://img.shields.io/pypi/v/nautobot-dns-models"></a>
|
|
9
|
+
<a href="https://pypi.org/project/nautobot-dns-models/"><img src="https://img.shields.io/pypi/dm/nautobot-dns-models"></a>
|
|
10
|
+
<br>
|
|
11
|
+
An <a href="https://www.networktocode.com/nautobot/apps/">App</a> for <a href="https://nautobot.com/">Nautobot</a>.
|
|
12
|
+
</p>
|
|
13
|
+
|
|
14
|
+
## Overview
|
|
15
|
+
|
|
16
|
+
The DNS models app adds specific DNS related models for managing DNS zones and records to Nautobot. The goal is to be able to manage a DNS configuration for a zone or sub-zone. These models can then be leveraged with 3rd party IPAM or DNS services in line with the rest of your network data.
|
|
17
|
+
|
|
18
|
+
### Screenshots
|
|
19
|
+
|
|
20
|
+
More screenshots can be found in the [Using the App](https://docs.nautobot.com/projects/dns-models/en/latest/user/app_use_cases/) page in the documentation. Here's a quick overview of some of the app's added functionality:
|
|
21
|
+
|
|
22
|
+

|
|
23
|
+
|
|
24
|
+

|
|
25
|
+
|
|
26
|
+
Adding a DNS Zone
|
|
27
|
+
|
|
28
|
+

|
|
29
|
+
|
|
30
|
+
The DNS Zone View
|
|
31
|
+
|
|
32
|
+
## Documentation
|
|
33
|
+
|
|
34
|
+
Full documentation for this App can be found over on the [Nautobot Docs](https://docs.nautobot.com) website:
|
|
35
|
+
|
|
36
|
+
- [User Guide](https://docs.nautobot.com/projects/dns-models/en/latest/user/app_overview/) - Overview, Using the App, Getting Started.
|
|
37
|
+
- [Administrator Guide](https://docs.nautobot.com/projects/dns-models/en/latest/admin/install/) - How to Install, Configure, Upgrade, or Uninstall the App.
|
|
38
|
+
- [Developer Guide](https://docs.nautobot.com/projects/dns-models/en/latest/dev/contributing/) - Extending the App, Code Reference, Contribution Guide.
|
|
39
|
+
- [Release Notes / Changelog](https://docs.nautobot.com/projects/dns-models/en/latest/admin/release_notes/).
|
|
40
|
+
- [Frequently Asked Questions](https://docs.nautobot.com/projects/dns-models/en/latest/user/faq/).
|
|
41
|
+
|
|
42
|
+
### Contributing to the Documentation
|
|
43
|
+
|
|
44
|
+
You can find all the Markdown source for the App documentation under the [`docs`](https://github.com/nautobot/nautobot-app-dns-models/tree/develop/docs) folder in this repository. For simple edits, a Markdown capable editor is sufficient: clone the repository and edit away.
|
|
45
|
+
|
|
46
|
+
If you need to view the fully-generated documentation site, you can build it with [MkDocs](https://www.mkdocs.org/). A container hosting the documentation can be started using the `invoke` commands (details in the [Development Environment Guide](https://docs.nautobot.com/projects/dns-models/en/latest/dev/dev_environment/#docker-development-environment)) on [http://localhost:8001](http://localhost:8001). Using this container, as your changes to the documentation are saved, they will be automatically rebuilt and any pages currently being viewed will be reloaded in your browser.
|
|
47
|
+
|
|
48
|
+
Any PRs with fixes or improvements are very welcome!
|
|
49
|
+
|
|
50
|
+
## Questions
|
|
51
|
+
|
|
52
|
+
For any questions or comments, please check the [FAQ](https://docs.nautobot.com/projects/dns-models/en/latest/user/faq/) first. Feel free to also swing by the [Network to Code Slack](https://networktocode.slack.com/) (channel `#nautobot`), sign up [here](http://slack.networktocode.com/) if you don't have an account.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"""Plugin declaration for nautobot_dns_models."""
|
|
2
|
+
|
|
3
|
+
# Metadata is inherited from Nautobot. If not including Nautobot in the environment, this should be added
|
|
4
|
+
try:
|
|
5
|
+
from importlib import metadata
|
|
6
|
+
except ImportError:
|
|
7
|
+
# Python version < 3.8
|
|
8
|
+
import importlib_metadata as metadata
|
|
9
|
+
|
|
10
|
+
__version__ = metadata.version(__name__)
|
|
11
|
+
|
|
12
|
+
from nautobot.apps import NautobotAppConfig
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class NautobotDnsModelsConfig(NautobotAppConfig):
|
|
16
|
+
"""Plugin configuration for the nautobot_dns_models plugin."""
|
|
17
|
+
|
|
18
|
+
name = "nautobot_dns_models"
|
|
19
|
+
verbose_name = "Nautobot DNS Models"
|
|
20
|
+
version = __version__
|
|
21
|
+
author = "Network to Code, LLC"
|
|
22
|
+
description = "Nautobot DNS Models."
|
|
23
|
+
base_url = "dns"
|
|
24
|
+
required_settings = []
|
|
25
|
+
min_version = "2.4.0"
|
|
26
|
+
max_version = "2.9999"
|
|
27
|
+
default_settings = {}
|
|
28
|
+
caching_config = {}
|
|
29
|
+
docs_view_name = "plugins:nautobot_dns_models:docs"
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
config = NautobotDnsModelsConfig # pylint:disable=invalid-name
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""REST API module for nautobot_dns_models app."""
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"""API serializers for nautobot_dns_models."""
|
|
2
|
+
|
|
3
|
+
from nautobot.apps.api import NautobotModelSerializer
|
|
4
|
+
from rest_framework import serializers
|
|
5
|
+
|
|
6
|
+
from nautobot_dns_models import models
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class DNSZoneModelSerializer(NautobotModelSerializer): # pylint: disable=too-many-ancestors
|
|
10
|
+
"""DnsZoneModel Serializer."""
|
|
11
|
+
|
|
12
|
+
url = serializers.HyperlinkedIdentityField(view_name="plugins-api:nautobot_dns_models-api:dnszonemodel-detail")
|
|
13
|
+
|
|
14
|
+
class Meta:
|
|
15
|
+
"""Meta attributes."""
|
|
16
|
+
|
|
17
|
+
model = models.DNSZoneModel
|
|
18
|
+
fields = "__all__"
|
|
19
|
+
|
|
20
|
+
# Option for disabling write for certain fields:
|
|
21
|
+
# read_only_fields = []
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class NSRecordModelSerializer(NautobotModelSerializer): # pylint: disable=too-many-ancestors
|
|
25
|
+
"""NSRecordModel Serializer."""
|
|
26
|
+
|
|
27
|
+
url = serializers.HyperlinkedIdentityField(view_name="plugins-api:nautobot_dns_models-api:nsrecordmodel-detail")
|
|
28
|
+
|
|
29
|
+
class Meta:
|
|
30
|
+
"""Meta attributes."""
|
|
31
|
+
|
|
32
|
+
model = models.NSRecordModel
|
|
33
|
+
fields = "__all__"
|
|
34
|
+
|
|
35
|
+
# Option for disabling write for certain fields:
|
|
36
|
+
# read_only_fields = []
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class ARecordModelSerializer(NautobotModelSerializer): # pylint: disable=too-many-ancestors
|
|
40
|
+
"""ARecordModel Serializer."""
|
|
41
|
+
|
|
42
|
+
url = serializers.HyperlinkedIdentityField(view_name="plugins-api:nautobot_dns_models-api:arecordmodel-detail")
|
|
43
|
+
|
|
44
|
+
class Meta:
|
|
45
|
+
"""Meta attributes."""
|
|
46
|
+
|
|
47
|
+
model = models.ARecordModel
|
|
48
|
+
fields = "__all__"
|
|
49
|
+
|
|
50
|
+
# Option for disabling write for certain fields:
|
|
51
|
+
# read_only_fields = []
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
class AAAARecordModelSerializer(NautobotModelSerializer): # pylint: disable=too-many-ancestors
|
|
55
|
+
"""AAAARecordModel Serializer."""
|
|
56
|
+
|
|
57
|
+
url = serializers.HyperlinkedIdentityField(view_name="plugins-api:nautobot_dns_models-api:aaaarecordmodel-detail")
|
|
58
|
+
|
|
59
|
+
class Meta:
|
|
60
|
+
"""Meta attributes."""
|
|
61
|
+
|
|
62
|
+
model = models.AAAARecordModel
|
|
63
|
+
fields = "__all__"
|
|
64
|
+
|
|
65
|
+
# Option for disabling write for certain fields:
|
|
66
|
+
# read_only_fields = []
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
class CNAMERecordModelSerializer(NautobotModelSerializer): # pylint: disable=too-many-ancestors
|
|
70
|
+
"""CNAMERecordModel Serializer."""
|
|
71
|
+
|
|
72
|
+
url = serializers.HyperlinkedIdentityField(view_name="plugins-api:nautobot_dns_models-api:cnamerecordmodel-detail")
|
|
73
|
+
|
|
74
|
+
class Meta:
|
|
75
|
+
"""Meta attributes."""
|
|
76
|
+
|
|
77
|
+
model = models.CNAMERecordModel
|
|
78
|
+
fields = "__all__"
|
|
79
|
+
|
|
80
|
+
# Option for disabling write for certain fields:
|
|
81
|
+
# read_only_fields = []
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
class MXRecordModelSerializer(NautobotModelSerializer): # pylint: disable=too-many-ancestors
|
|
85
|
+
"""MXRecordModel Serializer."""
|
|
86
|
+
|
|
87
|
+
url = serializers.HyperlinkedIdentityField(view_name="plugins-api:nautobot_dns_models-api:mxrecordmodel-detail")
|
|
88
|
+
|
|
89
|
+
class Meta:
|
|
90
|
+
"""Meta attributes."""
|
|
91
|
+
|
|
92
|
+
model = models.MXRecordModel
|
|
93
|
+
fields = "__all__"
|
|
94
|
+
|
|
95
|
+
# Option for disabling write for certain fields:
|
|
96
|
+
# read_only_fields = []
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
class TXTRecordModelSerializer(NautobotModelSerializer): # pylint: disable=too-many-ancestors
|
|
100
|
+
"""TXTRecordModel Serializer."""
|
|
101
|
+
|
|
102
|
+
url = serializers.HyperlinkedIdentityField(view_name="plugins-api:nautobot_dns_models-api:txtrecordmodel-detail")
|
|
103
|
+
|
|
104
|
+
class Meta:
|
|
105
|
+
"""Meta attributes."""
|
|
106
|
+
|
|
107
|
+
model = models.TXTRecordModel
|
|
108
|
+
fields = "__all__"
|
|
109
|
+
|
|
110
|
+
# Option for disabling write for certain fields:
|
|
111
|
+
# read_only_fields = []
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
class PTRRecordModelSerializer(NautobotModelSerializer): # pylint: disable=too-many-ancestors
|
|
115
|
+
"""PTRRecordModel Serializer."""
|
|
116
|
+
|
|
117
|
+
url = serializers.HyperlinkedIdentityField(view_name="plugins-api:nautobot_dns_models-api:ptrrecordmodel-detail")
|
|
118
|
+
|
|
119
|
+
class Meta:
|
|
120
|
+
"""Meta attributes."""
|
|
121
|
+
|
|
122
|
+
model = models.PTRRecordModel
|
|
123
|
+
fields = "__all__"
|
|
124
|
+
|
|
125
|
+
# Option for disabling write for certain fields:
|
|
126
|
+
# read_only_fields = []
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"""Django API urlpatterns declaration for nautobot_dns_models plugin."""
|
|
2
|
+
|
|
3
|
+
from nautobot.apps.api import OrderedDefaultRouter
|
|
4
|
+
|
|
5
|
+
from nautobot_dns_models.api import views
|
|
6
|
+
|
|
7
|
+
router = OrderedDefaultRouter()
|
|
8
|
+
# add the name of your api endpoint, usually hyphenated model name in plural, e.g. "my-model-classes"
|
|
9
|
+
router.register("dns-zones", views.DNSZoneModelViewSet)
|
|
10
|
+
router.register("ns-records", views.NSRecordModelViewSet)
|
|
11
|
+
router.register("a-records", views.ARecordModelViewSet)
|
|
12
|
+
router.register("aaaa-records", views.AAAARecordModelViewSet)
|
|
13
|
+
router.register("cname-records", views.CNameRecordModelViewSet)
|
|
14
|
+
router.register("mx-records", views.MXRecordModelViewSet)
|
|
15
|
+
router.register("txt-records", views.TXTRecordModelViewSet)
|
|
16
|
+
router.register("ptr-records", views.PTRRecordModelViewSet)
|
|
17
|
+
|
|
18
|
+
urlpatterns = router.urls
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"""API views for nautobot_dns_models."""
|
|
2
|
+
|
|
3
|
+
from nautobot.apps.api import NautobotModelViewSet
|
|
4
|
+
|
|
5
|
+
from nautobot_dns_models.api.serializers import (
|
|
6
|
+
AAAARecordModelSerializer,
|
|
7
|
+
ARecordModelSerializer,
|
|
8
|
+
CNAMERecordModelSerializer,
|
|
9
|
+
DNSZoneModelSerializer,
|
|
10
|
+
MXRecordModelSerializer,
|
|
11
|
+
NSRecordModelSerializer,
|
|
12
|
+
PTRRecordModelSerializer,
|
|
13
|
+
TXTRecordModelSerializer,
|
|
14
|
+
)
|
|
15
|
+
from nautobot_dns_models.filters import (
|
|
16
|
+
AAAARecordModelFilterSet,
|
|
17
|
+
ARecordModelFilterSet,
|
|
18
|
+
CNAMERecordModelFilterSet,
|
|
19
|
+
DNSZoneModelFilterSet,
|
|
20
|
+
MXRecordModelFilterSet,
|
|
21
|
+
NSRecordModelFilterSet,
|
|
22
|
+
PTRRecordModelFilterSet,
|
|
23
|
+
TXTRecordModelFilterSet,
|
|
24
|
+
)
|
|
25
|
+
from nautobot_dns_models.models import (
|
|
26
|
+
AAAARecordModel,
|
|
27
|
+
ARecordModel,
|
|
28
|
+
CNAMERecordModel,
|
|
29
|
+
DNSZoneModel,
|
|
30
|
+
MXRecordModel,
|
|
31
|
+
NSRecordModel,
|
|
32
|
+
PTRRecordModel,
|
|
33
|
+
TXTRecordModel,
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
class DNSZoneModelViewSet(NautobotModelViewSet): # pylint: disable=too-many-ancestors
|
|
38
|
+
"""DnsZoneModel API ViewSet."""
|
|
39
|
+
|
|
40
|
+
queryset = DNSZoneModel.objects.all()
|
|
41
|
+
serializer_class = DNSZoneModelSerializer
|
|
42
|
+
filterset_class = DNSZoneModelFilterSet
|
|
43
|
+
|
|
44
|
+
lookup_field = "pk"
|
|
45
|
+
# Option for modifying the default HTTP methods:
|
|
46
|
+
# http_method_names = ["get", "post", "put", "patch", "delete", "head", "options", "trace"]
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
class NSRecordModelViewSet(NautobotModelViewSet): # pylint: disable=too-many-ancestors
|
|
50
|
+
"""NSRecordModel API ViewSet."""
|
|
51
|
+
|
|
52
|
+
queryset = NSRecordModel.objects.all()
|
|
53
|
+
serializer_class = NSRecordModelSerializer
|
|
54
|
+
filterset_class = NSRecordModelFilterSet
|
|
55
|
+
|
|
56
|
+
lookup_field = "pk"
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
class ARecordModelViewSet(NautobotModelViewSet): # pylint: disable=too-many-ancestors
|
|
60
|
+
"""ARecordModel API ViewSet."""
|
|
61
|
+
|
|
62
|
+
queryset = ARecordModel.objects.all()
|
|
63
|
+
serializer_class = ARecordModelSerializer
|
|
64
|
+
filterset_class = ARecordModelFilterSet
|
|
65
|
+
|
|
66
|
+
lookup_field = "pk"
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
class AAAARecordModelViewSet(NautobotModelViewSet): # pylint: disable=too-many-ancestors
|
|
70
|
+
"""AAAARecordModel API ViewSet."""
|
|
71
|
+
|
|
72
|
+
queryset = AAAARecordModel.objects.all()
|
|
73
|
+
serializer_class = AAAARecordModelSerializer
|
|
74
|
+
filterset_class = AAAARecordModelFilterSet
|
|
75
|
+
|
|
76
|
+
lookup_field = "pk"
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
class CNameRecordModelViewSet(NautobotModelViewSet): # pylint: disable=too-many-ancestors
|
|
80
|
+
"""CNameRecordModel API ViewSet."""
|
|
81
|
+
|
|
82
|
+
queryset = CNAMERecordModel.objects.all()
|
|
83
|
+
serializer_class = CNAMERecordModelSerializer
|
|
84
|
+
filterset_class = CNAMERecordModelFilterSet
|
|
85
|
+
|
|
86
|
+
lookup_field = "pk"
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
class MXRecordModelViewSet(NautobotModelViewSet): # pylint: disable=too-many-ancestors
|
|
90
|
+
"""MXRecordModel API ViewSet."""
|
|
91
|
+
|
|
92
|
+
queryset = MXRecordModel.objects.all()
|
|
93
|
+
serializer_class = MXRecordModelSerializer
|
|
94
|
+
filterset_class = MXRecordModelFilterSet
|
|
95
|
+
|
|
96
|
+
lookup_field = "pk"
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
class TXTRecordModelViewSet(NautobotModelViewSet): # pylint: disable=too-many-ancestors
|
|
100
|
+
"""TXTRecordModel API ViewSet."""
|
|
101
|
+
|
|
102
|
+
queryset = TXTRecordModel.objects.all()
|
|
103
|
+
serializer_class = TXTRecordModelSerializer
|
|
104
|
+
filterset_class = TXTRecordModelFilterSet
|
|
105
|
+
|
|
106
|
+
lookup_field = "pk"
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
class PTRRecordModelViewSet(NautobotModelViewSet): # pylint: disable=too-many-ancestors
|
|
110
|
+
"""PTRRecordModel API ViewSet."""
|
|
111
|
+
|
|
112
|
+
queryset = PTRRecordModel.objects.all()
|
|
113
|
+
serializer_class = PTRRecordModelSerializer
|
|
114
|
+
filterset_class = PTRRecordModelFilterSet
|
|
115
|
+
|
|
116
|
+
lookup_field = "pk"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
true
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"""Filtering for nautobot_dns_models."""
|
|
2
|
+
|
|
3
|
+
from nautobot.extras.filters import NautobotFilterSet
|
|
4
|
+
|
|
5
|
+
from nautobot_dns_models import models
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class DNSZoneModelFilterSet(NautobotFilterSet):
|
|
9
|
+
"""Filter for DNSZoneModel."""
|
|
10
|
+
|
|
11
|
+
class Meta:
|
|
12
|
+
"""Meta attributes for filter."""
|
|
13
|
+
|
|
14
|
+
model = models.DNSZoneModel
|
|
15
|
+
fields = "__all__"
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class NSRecordModelFilterSet(NautobotFilterSet):
|
|
19
|
+
"""Filter for NSRecordModel."""
|
|
20
|
+
|
|
21
|
+
class Meta:
|
|
22
|
+
"""Meta attributes for filter."""
|
|
23
|
+
|
|
24
|
+
model = models.NSRecordModel
|
|
25
|
+
fields = "__all__"
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class ARecordModelFilterSet(NautobotFilterSet):
|
|
29
|
+
"""Filter for ARecordModel."""
|
|
30
|
+
|
|
31
|
+
class Meta:
|
|
32
|
+
"""Meta attributes for filter."""
|
|
33
|
+
|
|
34
|
+
model = models.ARecordModel
|
|
35
|
+
fields = "__all__"
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
class AAAARecordModelFilterSet(NautobotFilterSet):
|
|
39
|
+
"""Filter for AAAARecordModel."""
|
|
40
|
+
|
|
41
|
+
class Meta:
|
|
42
|
+
"""Meta attributes for filter."""
|
|
43
|
+
|
|
44
|
+
model = models.AAAARecordModel
|
|
45
|
+
fields = "__all__"
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
class CNAMERecordModelFilterSet(NautobotFilterSet):
|
|
49
|
+
"""Filter for CNAMERecordModel."""
|
|
50
|
+
|
|
51
|
+
class Meta:
|
|
52
|
+
"""Meta attributes for filter."""
|
|
53
|
+
|
|
54
|
+
model = models.CNAMERecordModel
|
|
55
|
+
fields = "__all__"
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
class MXRecordModelFilterSet(NautobotFilterSet):
|
|
59
|
+
"""Filter for MXRecordModel."""
|
|
60
|
+
|
|
61
|
+
class Meta:
|
|
62
|
+
"""Meta attributes for filter."""
|
|
63
|
+
|
|
64
|
+
model = models.MXRecordModel
|
|
65
|
+
fields = "__all__"
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
class TXTRecordModelFilterSet(NautobotFilterSet):
|
|
69
|
+
"""Filter for TXTRecordModel."""
|
|
70
|
+
|
|
71
|
+
class Meta:
|
|
72
|
+
"""Meta attributes for filter."""
|
|
73
|
+
|
|
74
|
+
model = models.TXTRecordModel
|
|
75
|
+
fields = "__all__"
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
class PTRRecordModelFilterSet(NautobotFilterSet):
|
|
79
|
+
"""Filter for PTRRecordModel."""
|
|
80
|
+
|
|
81
|
+
class Meta:
|
|
82
|
+
"""Meta attributes for filter."""
|
|
83
|
+
|
|
84
|
+
model = models.PTRRecordModel
|
|
85
|
+
fields = "__all__"
|