netbox-plugin-dns 1.1.0b4__tar.gz → 1.1.0b6__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.
Potentially problematic release.
This version of netbox-plugin-dns might be problematic. Click here for more details.
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/PKG-INFO +2 -1
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/README.md +1 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/__init__.py +2 -1
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/api/views.py +2 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/fields/ipam.py +0 -3
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/tables/record.py +36 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/utilities/ipam_dnssync.py +18 -5
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/views/record.py +5 -3
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/pyproject.toml +1 -1
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/LICENSE +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/api/nested_serializers.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/api/serializers.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/api/serializers_/__init__.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/api/serializers_/contact.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/api/serializers_/nameserver.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/api/serializers_/prefix.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/api/serializers_/record.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/api/serializers_/record_template.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/api/serializers_/registrar.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/api/serializers_/view.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/api/serializers_/zone.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/api/serializers_/zone_template.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/api/urls.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/apps.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/choices/__init__.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/choices/record.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/choices/zone.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/fields/__init__.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/fields/address.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/fields/network.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/fields/rfc2317.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/filtersets/__init__.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/filtersets/contact.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/filtersets/nameserver.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/filtersets/record.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/filtersets/record_template.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/filtersets/registrar.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/filtersets/view.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/filtersets/zone.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/filtersets/zone_template.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/forms/__init__.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/forms/contact.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/forms/nameserver.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/forms/record.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/forms/record_template.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/forms/registrar.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/forms/view.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/forms/zone.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/forms/zone_template.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/graphql/__init__.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/graphql/filters.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/graphql/schema.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/graphql/types.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/management/commands/cleanup_database.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/management/commands/cleanup_rrset_ttl.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/management/commands/setup_dnssync.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/management/commands/update_soa.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0001_squashed_netbox_dns_0_15.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0001_squashed_netbox_dns_0_22.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0002_contact_description_registrar_description.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0003_default_view.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0004_create_and_assign_default_view.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0005_alter_zone_view_not_null.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0006_templating.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0007_view_prefixes.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0020_netbox_3_4.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0021_record_ip_address.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0022_search.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0023_alter_record_value.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0024_tenancy.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0025_ipam_coupling_cf.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0026_domain_registration.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0027_alter_registrar_iana_id.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0028_rfc2317_fields.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0029_record_fqdn.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/__init__.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/mixins/__init__.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/mixins/object_modification.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/models/__init__.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/models/contact.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/models/nameserver.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/models/record.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/models/record_template.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/models/registrar.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/models/view.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/models/zone.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/models/zone_template.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/navigation.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/signals/__init__.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/signals/ipam_dnssync.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/tables/__init__.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/tables/contact.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/tables/ipam_dnssync.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/tables/nameserver.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/tables/record_template.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/tables/registrar.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/tables/view.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/tables/zone.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/tables/zone_template.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/template_content.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/contact.html +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/nameserver.html +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/record/managed.html +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/record/related.html +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/record.html +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/recordtemplate.html +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/registrar.html +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/view/button.html +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/view/prefix.html +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/view/related.html +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/view.html +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/zone/base.html +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/zone/child.html +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/zone/child_zone.html +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/zone/managed_record.html +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/zone/record.html +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/zone/registration.html +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/zone/rfc2317_child_zone.html +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/zone.html +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/zonetemplate.html +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/urls/__init__.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/urls/contact.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/urls/nameserver.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/urls/record.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/urls/record_template.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/urls/registrar.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/urls/view.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/urls/zone.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/urls/zone_template.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/utilities/__init__.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/utilities/conversions.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/validators/__init__.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/validators/dns_name.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/validators/dns_value.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/validators/rfc2317.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/views/__init__.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/views/contact.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/views/nameserver.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/views/record_template.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/views/registrar.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/views/view.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/views/zone.py +0 -0
- {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/views/zone_template.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: netbox-plugin-dns
|
|
3
|
-
Version: 1.1.
|
|
3
|
+
Version: 1.1.0b6
|
|
4
4
|
Summary: NetBox DNS is a NetBox plugin for managing DNS data.
|
|
5
5
|
Home-page: https://github.com/peteeckel/netbox-plugin-dns
|
|
6
6
|
License: MIT
|
|
@@ -48,6 +48,7 @@ The main focus of the plugin is to ensure the quality of the data stored in it.
|
|
|
48
48
|
* Validation of record types such as CNAME and singletons, to ensure DNS zone validity
|
|
49
49
|
* Support for [RFC 2317](https://datatracker.ietf.org/doc/html/rfc2317) delegation of PTR zones for IPv4 subnets longer than 24 bits
|
|
50
50
|
* Templating for zones and records enables faster creations of zones with given boilerplate object relations, such as name servers, tags, tenants or registration information, or records like standard SPF or MX records that are the same for a subset of zones
|
|
51
|
+
* IPAM DNSsync can be used to automatically create address and pointer records for IP addresses by assigning prefixes to DNS views. When an IP address has a DNS name assigned and there are zones with matching names in the DNS views linked to the IP address' prefix, a matching DNS record will be created in these zones
|
|
51
52
|
|
|
52
53
|
Other main features include:
|
|
53
54
|
|
|
@@ -28,6 +28,7 @@ The main focus of the plugin is to ensure the quality of the data stored in it.
|
|
|
28
28
|
* Validation of record types such as CNAME and singletons, to ensure DNS zone validity
|
|
29
29
|
* Support for [RFC 2317](https://datatracker.ietf.org/doc/html/rfc2317) delegation of PTR zones for IPv4 subnets longer than 24 bits
|
|
30
30
|
* Templating for zones and records enables faster creations of zones with given boilerplate object relations, such as name servers, tags, tenants or registration information, or records like standard SPF or MX records that are the same for a subset of zones
|
|
31
|
+
* IPAM DNSsync can be used to automatically create address and pointer records for IP addresses by assigning prefixes to DNS views. When an IP address has a DNS name assigned and there are zones with matching names in the DNS views linked to the IP address' prefix, a matching DNS record will be created in these zones
|
|
31
32
|
|
|
32
33
|
Other main features include:
|
|
33
34
|
|
|
@@ -5,7 +5,7 @@ from ipam.choices import IPAddressStatusChoices
|
|
|
5
5
|
|
|
6
6
|
from netbox_dns.choices import RecordTypeChoices
|
|
7
7
|
|
|
8
|
-
__version__ = "1.1.
|
|
8
|
+
__version__ = "1.1.0b6"
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class DNSConfig(PluginConfig):
|
|
@@ -32,6 +32,7 @@ class DNSConfig(PluginConfig):
|
|
|
32
32
|
IPAddressStatusChoices.STATUS_SLAAC,
|
|
33
33
|
],
|
|
34
34
|
"dnssync_conflict_deactivate": False,
|
|
35
|
+
"dnssync_minimum_zone_labels": 2,
|
|
35
36
|
"tolerate_characters_in_zone_labels": "",
|
|
36
37
|
"tolerate_underscores_in_labels": False,
|
|
37
38
|
"tolerate_underscores_in_hostnames": False, # Deprecated, will be removed in 1.2.0
|
|
@@ -4,6 +4,7 @@ from rest_framework.response import Response
|
|
|
4
4
|
from rest_framework.routers import APIRootView
|
|
5
5
|
|
|
6
6
|
from ipam.models import Prefix
|
|
7
|
+
from ipam.filtersets import PrefixFilterSet
|
|
7
8
|
|
|
8
9
|
from netbox.api.viewsets import NetBoxModelViewSet
|
|
9
10
|
|
|
@@ -160,3 +161,4 @@ class RecordTemplateViewSet(NetBoxModelViewSet):
|
|
|
160
161
|
class PrefixViewSet(NetBoxModelViewSet):
|
|
161
162
|
queryset = Prefix.objects.all()
|
|
162
163
|
serializer_class = PrefixSerializer
|
|
164
|
+
filterset_class = PrefixFilterSet
|
|
@@ -6,9 +6,6 @@ __all__ = ("PrefixDynamicModelMultipleChoiceField",)
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
class PrefixDynamicModelMultipleChoiceField(DynamicModelMultipleChoiceField):
|
|
9
|
-
def __init__(self, *args, **kwargs):
|
|
10
|
-
super().__init__(*args, **kwargs)
|
|
11
|
-
|
|
12
9
|
widget = APISelectMultiple(api_url="/api/plugins/netbox-dns/prefixes")
|
|
13
10
|
|
|
14
11
|
def label_from_instance(self, obj):
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import django_tables2 as tables
|
|
2
|
+
from django_tables2.utils import Accessor
|
|
3
|
+
from django.utils.html import format_html
|
|
4
|
+
|
|
2
5
|
|
|
3
6
|
from netbox.tables import (
|
|
4
7
|
NetBoxTable,
|
|
@@ -6,11 +9,16 @@ from netbox.tables import (
|
|
|
6
9
|
TagColumn,
|
|
7
10
|
ActionsColumn,
|
|
8
11
|
)
|
|
12
|
+
from ipam.lookups import Host, Inet
|
|
9
13
|
from tenancy.tables import TenancyColumnsMixin
|
|
10
14
|
|
|
11
15
|
from netbox_dns.models import Record
|
|
12
16
|
from netbox_dns.utilities import value_to_unicode
|
|
13
17
|
|
|
18
|
+
import logging
|
|
19
|
+
|
|
20
|
+
logger = logging.getLogger("netbox_dns")
|
|
21
|
+
|
|
14
22
|
|
|
15
23
|
__all__ = (
|
|
16
24
|
"RecordTable",
|
|
@@ -100,6 +108,11 @@ class ManagedRecordTable(RecordBaseTable):
|
|
|
100
108
|
verbose_name="IPAM IP Address",
|
|
101
109
|
linkify=True,
|
|
102
110
|
)
|
|
111
|
+
related_ip_address = tables.Column(
|
|
112
|
+
verbose_name="Related IP Address",
|
|
113
|
+
empty_values=(),
|
|
114
|
+
orderable=False,
|
|
115
|
+
)
|
|
103
116
|
actions = ActionsColumn(actions=("changelog",))
|
|
104
117
|
|
|
105
118
|
class Meta(NetBoxTable.Meta):
|
|
@@ -113,6 +126,7 @@ class ManagedRecordTable(RecordBaseTable):
|
|
|
113
126
|
"unicode_value",
|
|
114
127
|
"address_record",
|
|
115
128
|
"ipam_ip_address",
|
|
129
|
+
"related_ip_address",
|
|
116
130
|
"active",
|
|
117
131
|
)
|
|
118
132
|
default_columns = (
|
|
@@ -124,6 +138,28 @@ class ManagedRecordTable(RecordBaseTable):
|
|
|
124
138
|
"active",
|
|
125
139
|
)
|
|
126
140
|
|
|
141
|
+
def render_related_ip_address(self, record):
|
|
142
|
+
if record.ipam_ip_address is not None:
|
|
143
|
+
address = record.ipam_ip_address
|
|
144
|
+
elif (
|
|
145
|
+
hasattr(record, "address_record")
|
|
146
|
+
and record.address_record.ipam_ip_address is not None
|
|
147
|
+
):
|
|
148
|
+
address = record.address_record.ipam_ip_address
|
|
149
|
+
else:
|
|
150
|
+
return format_html("—")
|
|
151
|
+
|
|
152
|
+
return format_html(f"<a href='{address.get_absolute_url()}'>{address}</a>")
|
|
153
|
+
|
|
154
|
+
def value_related_ip_address(self, record):
|
|
155
|
+
if record.ipam_ip_address is not None:
|
|
156
|
+
return record.ipam_ip_address
|
|
157
|
+
elif (
|
|
158
|
+
hasattr(record, "address_record")
|
|
159
|
+
and record.address_record.ipam_ip_address is not None
|
|
160
|
+
):
|
|
161
|
+
return record.address_record.ipam_ip_address
|
|
162
|
+
|
|
127
163
|
|
|
128
164
|
class RelatedRecordTable(RecordBaseTable):
|
|
129
165
|
actions = ActionsColumn(actions=())
|
{netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/utilities/ipam_dnssync.py
RENAMED
|
@@ -44,7 +44,7 @@ def _get_assigned_views(ip_address):
|
|
|
44
44
|
|
|
45
45
|
def _get_record_status(ip_address):
|
|
46
46
|
return (
|
|
47
|
-
RecordStatusChoices.
|
|
47
|
+
RecordStatusChoices.STATUS_ACTIVE
|
|
48
48
|
if ip_address.status
|
|
49
49
|
in settings.PLUGINS_CONFIG["netbox_dns"].get(
|
|
50
50
|
"dnssync_ipaddress_active_status", []
|
|
@@ -68,9 +68,13 @@ def get_zones(ip_address, view=None, old_zone=None):
|
|
|
68
68
|
else:
|
|
69
69
|
views = [view]
|
|
70
70
|
|
|
71
|
+
min_labels = settings.PLUGINS_CONFIG["netbox_dns"].get(
|
|
72
|
+
"dnssync_minimum_zone_labels", 2
|
|
73
|
+
)
|
|
71
74
|
fqdn = dns_name.from_text(ip_address.dns_name)
|
|
72
75
|
zone_name_candidates = [
|
|
73
|
-
fqdn.split(i)[1].to_text().rstrip(".")
|
|
76
|
+
fqdn.split(i)[1].to_text().rstrip(".")
|
|
77
|
+
for i in range(min_labels + 1, len(fqdn.labels))
|
|
74
78
|
]
|
|
75
79
|
|
|
76
80
|
zones = _zone.Zone.objects.filter(
|
|
@@ -159,10 +163,17 @@ def update_dns_records(ip_address):
|
|
|
159
163
|
record.delete()
|
|
160
164
|
continue
|
|
161
165
|
|
|
166
|
+
cf_disable_ptr = ip_address.custom_field_data.get(
|
|
167
|
+
"ipaddress_dns_record_disable_ptr"
|
|
168
|
+
)
|
|
169
|
+
|
|
162
170
|
if (
|
|
163
|
-
record.fqdn != ip_address.dns_name
|
|
164
|
-
or record.value != ip_address.address.ip
|
|
171
|
+
record.fqdn.rstrip(".") != ip_address.dns_name.rstrip(".")
|
|
172
|
+
or record.value != str(ip_address.address.ip)
|
|
165
173
|
or record.status != _get_record_status(ip_address)
|
|
174
|
+
or record.ttl
|
|
175
|
+
!= ip_address.custom_field_data.get("ipaddress_dns_record_ttl")
|
|
176
|
+
or (cf_disable_ptr is not None and record.disable_ptr != cf_disable_ptr)
|
|
166
177
|
):
|
|
167
178
|
record.update_from_ip_address(ip_address)
|
|
168
179
|
|
|
@@ -217,7 +228,9 @@ def get_ip_addresses_by_prefix(prefix, check_view=True):
|
|
|
217
228
|
vrf=prefix.vrf, address__net_host_contained=prefix.prefix
|
|
218
229
|
)
|
|
219
230
|
|
|
220
|
-
for exclude_child in
|
|
231
|
+
for exclude_child in (
|
|
232
|
+
prefix.get_children().filter(netbox_dns_views__isnull=False).distinct()
|
|
233
|
+
):
|
|
221
234
|
queryset = queryset.exclude(
|
|
222
235
|
vrf=exclude_child.vrf,
|
|
223
236
|
address__net_host_contained=exclude_child.prefix,
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
from dns import name as dns_name
|
|
2
2
|
|
|
3
|
+
from django.db.models import F, Q, Case, When, OuterRef, Subquery
|
|
4
|
+
|
|
3
5
|
from netbox.views import generic
|
|
6
|
+
from ipam.fields import IPAddressField
|
|
7
|
+
from ipam.models import IPAddress
|
|
4
8
|
|
|
5
9
|
from netbox_dns.filtersets import RecordFilterSet
|
|
6
10
|
from netbox_dns.forms import (
|
|
@@ -37,9 +41,7 @@ class RecordListView(generic.ObjectListView):
|
|
|
37
41
|
|
|
38
42
|
|
|
39
43
|
class ManagedRecordListView(generic.ObjectListView):
|
|
40
|
-
queryset = Record.objects.
|
|
41
|
-
"zone", "address_record"
|
|
42
|
-
)
|
|
44
|
+
queryset = Record.objects.prefetch_related("ipam_ip_address", "address_record")
|
|
43
45
|
filterset = RecordFilterSet
|
|
44
46
|
filterset_form = RecordFilterForm
|
|
45
47
|
table = ManagedRecordTable
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "netbox-plugin-dns"
|
|
3
|
-
version = "1.1.
|
|
3
|
+
version = "1.1.0b6"
|
|
4
4
|
description = "NetBox DNS is a NetBox plugin for managing DNS data."
|
|
5
5
|
authors = ["Peter Eckel <pete@netbox-dns.org>"]
|
|
6
6
|
homepage = "https://github.com/peteeckel/netbox-plugin-dns"
|
|
File without changes
|
{netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/api/nested_serializers.py
RENAMED
|
File without changes
|
|
File without changes
|
{netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/api/serializers_/__init__.py
RENAMED
|
File without changes
|
{netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/api/serializers_/contact.py
RENAMED
|
File without changes
|
{netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/api/serializers_/nameserver.py
RENAMED
|
File without changes
|
{netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/api/serializers_/prefix.py
RENAMED
|
File without changes
|
{netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/api/serializers_/record.py
RENAMED
|
File without changes
|
|
File without changes
|
{netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/api/serializers_/registrar.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/api/serializers_/zone_template.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/filtersets/record_template.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/filtersets/zone_template.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/management/commands/update_soa.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0003_default_view.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0006_templating.py
RENAMED
|
File without changes
|
{netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0007_view_prefixes.py
RENAMED
|
File without changes
|
{netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0020_netbox_3_4.py
RENAMED
|
File without changes
|
|
File without changes
|
{netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0022_search.py
RENAMED
|
File without changes
|
|
File without changes
|
{netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0024_tenancy.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0028_rfc2317_fields.py
RENAMED
|
File without changes
|
{netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0029_record_fqdn.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/mixins/object_modification.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/models/record_template.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/tables/record_template.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/contact.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/record.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/view.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/zone.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|