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.

Files changed (143) hide show
  1. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/PKG-INFO +2 -1
  2. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/README.md +1 -0
  3. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/__init__.py +2 -1
  4. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/api/views.py +2 -0
  5. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/fields/ipam.py +0 -3
  6. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/tables/record.py +36 -0
  7. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/utilities/ipam_dnssync.py +18 -5
  8. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/views/record.py +5 -3
  9. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/pyproject.toml +1 -1
  10. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/LICENSE +0 -0
  11. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/api/nested_serializers.py +0 -0
  12. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/api/serializers.py +0 -0
  13. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/api/serializers_/__init__.py +0 -0
  14. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/api/serializers_/contact.py +0 -0
  15. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/api/serializers_/nameserver.py +0 -0
  16. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/api/serializers_/prefix.py +0 -0
  17. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/api/serializers_/record.py +0 -0
  18. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/api/serializers_/record_template.py +0 -0
  19. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/api/serializers_/registrar.py +0 -0
  20. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/api/serializers_/view.py +0 -0
  21. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/api/serializers_/zone.py +0 -0
  22. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/api/serializers_/zone_template.py +0 -0
  23. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/api/urls.py +0 -0
  24. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/apps.py +0 -0
  25. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/choices/__init__.py +0 -0
  26. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/choices/record.py +0 -0
  27. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/choices/zone.py +0 -0
  28. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/fields/__init__.py +0 -0
  29. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/fields/address.py +0 -0
  30. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/fields/network.py +0 -0
  31. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/fields/rfc2317.py +0 -0
  32. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/filtersets/__init__.py +0 -0
  33. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/filtersets/contact.py +0 -0
  34. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/filtersets/nameserver.py +0 -0
  35. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/filtersets/record.py +0 -0
  36. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/filtersets/record_template.py +0 -0
  37. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/filtersets/registrar.py +0 -0
  38. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/filtersets/view.py +0 -0
  39. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/filtersets/zone.py +0 -0
  40. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/filtersets/zone_template.py +0 -0
  41. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/forms/__init__.py +0 -0
  42. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/forms/contact.py +0 -0
  43. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/forms/nameserver.py +0 -0
  44. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/forms/record.py +0 -0
  45. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/forms/record_template.py +0 -0
  46. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/forms/registrar.py +0 -0
  47. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/forms/view.py +0 -0
  48. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/forms/zone.py +0 -0
  49. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/forms/zone_template.py +0 -0
  50. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/graphql/__init__.py +0 -0
  51. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/graphql/filters.py +0 -0
  52. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/graphql/schema.py +0 -0
  53. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/graphql/types.py +0 -0
  54. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/management/commands/cleanup_database.py +0 -0
  55. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/management/commands/cleanup_rrset_ttl.py +0 -0
  56. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/management/commands/setup_dnssync.py +0 -0
  57. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/management/commands/update_soa.py +0 -0
  58. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0001_squashed_netbox_dns_0_15.py +0 -0
  59. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0001_squashed_netbox_dns_0_22.py +0 -0
  60. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0002_contact_description_registrar_description.py +0 -0
  61. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0003_default_view.py +0 -0
  62. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0004_create_and_assign_default_view.py +0 -0
  63. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0005_alter_zone_view_not_null.py +0 -0
  64. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0006_templating.py +0 -0
  65. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0007_view_prefixes.py +0 -0
  66. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0020_netbox_3_4.py +0 -0
  67. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0021_record_ip_address.py +0 -0
  68. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0022_search.py +0 -0
  69. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0023_alter_record_value.py +0 -0
  70. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0024_tenancy.py +0 -0
  71. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0025_ipam_coupling_cf.py +0 -0
  72. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0026_domain_registration.py +0 -0
  73. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0027_alter_registrar_iana_id.py +0 -0
  74. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0028_rfc2317_fields.py +0 -0
  75. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/0029_record_fqdn.py +0 -0
  76. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/migrations/__init__.py +0 -0
  77. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/mixins/__init__.py +0 -0
  78. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/mixins/object_modification.py +0 -0
  79. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/models/__init__.py +0 -0
  80. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/models/contact.py +0 -0
  81. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/models/nameserver.py +0 -0
  82. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/models/record.py +0 -0
  83. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/models/record_template.py +0 -0
  84. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/models/registrar.py +0 -0
  85. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/models/view.py +0 -0
  86. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/models/zone.py +0 -0
  87. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/models/zone_template.py +0 -0
  88. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/navigation.py +0 -0
  89. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/signals/__init__.py +0 -0
  90. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/signals/ipam_dnssync.py +0 -0
  91. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/tables/__init__.py +0 -0
  92. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/tables/contact.py +0 -0
  93. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/tables/ipam_dnssync.py +0 -0
  94. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/tables/nameserver.py +0 -0
  95. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/tables/record_template.py +0 -0
  96. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/tables/registrar.py +0 -0
  97. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/tables/view.py +0 -0
  98. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/tables/zone.py +0 -0
  99. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/tables/zone_template.py +0 -0
  100. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/template_content.py +0 -0
  101. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/contact.html +0 -0
  102. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/nameserver.html +0 -0
  103. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/record/managed.html +0 -0
  104. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/record/related.html +0 -0
  105. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/record.html +0 -0
  106. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/recordtemplate.html +0 -0
  107. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/registrar.html +0 -0
  108. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/view/button.html +0 -0
  109. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/view/prefix.html +0 -0
  110. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/view/related.html +0 -0
  111. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/view.html +0 -0
  112. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/zone/base.html +0 -0
  113. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/zone/child.html +0 -0
  114. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/zone/child_zone.html +0 -0
  115. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/zone/managed_record.html +0 -0
  116. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/zone/record.html +0 -0
  117. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/zone/registration.html +0 -0
  118. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/zone/rfc2317_child_zone.html +0 -0
  119. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/zone.html +0 -0
  120. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/templates/netbox_dns/zonetemplate.html +0 -0
  121. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/urls/__init__.py +0 -0
  122. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/urls/contact.py +0 -0
  123. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/urls/nameserver.py +0 -0
  124. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/urls/record.py +0 -0
  125. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/urls/record_template.py +0 -0
  126. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/urls/registrar.py +0 -0
  127. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/urls/view.py +0 -0
  128. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/urls/zone.py +0 -0
  129. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/urls/zone_template.py +0 -0
  130. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/utilities/__init__.py +0 -0
  131. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/utilities/conversions.py +0 -0
  132. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/validators/__init__.py +0 -0
  133. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/validators/dns_name.py +0 -0
  134. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/validators/dns_value.py +0 -0
  135. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/validators/rfc2317.py +0 -0
  136. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/views/__init__.py +0 -0
  137. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/views/contact.py +0 -0
  138. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/views/nameserver.py +0 -0
  139. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/views/record_template.py +0 -0
  140. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/views/registrar.py +0 -0
  141. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/views/view.py +0 -0
  142. {netbox_plugin_dns-1.1.0b4 → netbox_plugin_dns-1.1.0b6}/netbox_dns/views/zone.py +0 -0
  143. {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.0b4
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.0b4"
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=())
@@ -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.STATE_ACTIVE
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(".") for i in range(3, len(fqdn.labels))
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 prefix.get_children().filter(netbox_dns_views__isnull=False):
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.filter(managed=True).prefetch_related(
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.0b4"
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"