netbox-plugin-dns 0.22.8__py3-none-any.whl → 1.0.0__py3-none-any.whl

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 (115) hide show
  1. netbox_dns/__init__.py +4 -15
  2. netbox_dns/api/nested_serializers.py +4 -60
  3. netbox_dns/api/serializers.py +8 -314
  4. netbox_dns/api/serializers_/__init__.py +0 -0
  5. netbox_dns/api/serializers_/contact.py +37 -0
  6. netbox_dns/api/serializers_/nameserver.py +39 -0
  7. netbox_dns/api/serializers_/record.py +90 -0
  8. netbox_dns/api/serializers_/registrar.py +31 -0
  9. netbox_dns/api/serializers_/view.py +34 -0
  10. netbox_dns/api/serializers_/zone.py +159 -0
  11. netbox_dns/api/views.py +13 -13
  12. netbox_dns/fields/network.py +21 -22
  13. netbox_dns/fields/rfc2317.py +3 -3
  14. netbox_dns/{filters → filtersets}/contact.py +2 -1
  15. netbox_dns/filtersets/nameserver.py +37 -0
  16. netbox_dns/{filters → filtersets}/record.py +51 -6
  17. netbox_dns/{filters → filtersets}/registrar.py +2 -1
  18. netbox_dns/{filters → filtersets}/view.py +2 -2
  19. netbox_dns/filtersets/zone.py +205 -0
  20. netbox_dns/forms/contact.py +61 -33
  21. netbox_dns/forms/nameserver.py +21 -8
  22. netbox_dns/forms/record.py +65 -38
  23. netbox_dns/forms/registrar.py +45 -15
  24. netbox_dns/forms/view.py +23 -9
  25. netbox_dns/forms/zone.py +182 -188
  26. netbox_dns/graphql/__init__.py +17 -27
  27. netbox_dns/graphql/filters.py +49 -0
  28. netbox_dns/graphql/schema.py +66 -7
  29. netbox_dns/graphql/types.py +143 -0
  30. netbox_dns/management/commands/cleanup_database.py +0 -4
  31. netbox_dns/management/commands/cleanup_rrset_ttl.py +3 -5
  32. netbox_dns/management/commands/setup_coupling.py +15 -15
  33. netbox_dns/management/commands/update_soa.py +1 -1
  34. netbox_dns/migrations/0001_squashed_netbox_dns_0_15.py +0 -27
  35. netbox_dns/migrations/0001_squashed_netbox_dns_0_22.py +558 -0
  36. netbox_dns/migrations/{0013_add_nameserver_zone_record_description.py → 0002_contact_description_registrar_description.py} +4 -9
  37. netbox_dns/migrations/0003_default_view.py +15 -0
  38. netbox_dns/migrations/0004_create_and_assign_default_view.py +26 -0
  39. netbox_dns/migrations/0005_alter_zone_view_not_null.py +18 -0
  40. netbox_dns/migrations/0020_netbox_3_4.py +1 -1
  41. netbox_dns/models/contact.py +6 -1
  42. netbox_dns/models/nameserver.py +5 -1
  43. netbox_dns/models/record.py +32 -34
  44. netbox_dns/models/registrar.py +5 -1
  45. netbox_dns/models/view.py +54 -1
  46. netbox_dns/models/zone.py +68 -54
  47. netbox_dns/navigation.py +1 -15
  48. netbox_dns/signals/ipam_coupling.py +3 -9
  49. netbox_dns/tables/contact.py +1 -0
  50. netbox_dns/tables/nameserver.py +0 -2
  51. netbox_dns/tables/registrar.py +1 -0
  52. netbox_dns/tables/view.py +9 -2
  53. netbox_dns/template_content.py +4 -8
  54. netbox_dns/templates/netbox_dns/contact.html +60 -56
  55. netbox_dns/templates/netbox_dns/nameserver.html +27 -27
  56. netbox_dns/templates/netbox_dns/record.html +92 -94
  57. netbox_dns/templates/netbox_dns/registrar.html +38 -36
  58. netbox_dns/templates/netbox_dns/view.html +25 -21
  59. netbox_dns/templates/netbox_dns/zone/base.html +5 -3
  60. netbox_dns/templates/netbox_dns/zone/child.html +3 -3
  61. netbox_dns/templates/netbox_dns/zone/managed_record.html +1 -1
  62. netbox_dns/templates/netbox_dns/zone/record.html +3 -3
  63. netbox_dns/templates/netbox_dns/zone/registration.html +26 -27
  64. netbox_dns/templates/netbox_dns/zone/rfc2317_child_zone.html +1 -1
  65. netbox_dns/templates/netbox_dns/zone.html +148 -149
  66. netbox_dns/urls/__init__.py +17 -0
  67. netbox_dns/urls/contact.py +51 -0
  68. netbox_dns/urls/nameserver.py +69 -0
  69. netbox_dns/urls/record.py +41 -0
  70. netbox_dns/urls/registrar.py +63 -0
  71. netbox_dns/urls/view.py +39 -0
  72. netbox_dns/urls/zone.py +57 -0
  73. netbox_dns/utilities/__init__.py +1 -6
  74. netbox_dns/utilities/ipam_coupling.py +2 -7
  75. netbox_dns/validators/dns_name.py +4 -9
  76. netbox_dns/validators/rfc2317.py +2 -2
  77. netbox_dns/views/contact.py +4 -4
  78. netbox_dns/views/nameserver.py +5 -5
  79. netbox_dns/views/record.py +14 -29
  80. netbox_dns/views/registrar.py +4 -4
  81. netbox_dns/views/view.py +4 -4
  82. netbox_dns/views/zone.py +7 -8
  83. {netbox_plugin_dns-0.22.8.dist-info → netbox_plugin_dns-1.0.0.dist-info}/METADATA +27 -13
  84. netbox_plugin_dns-1.0.0.dist-info/RECORD +112 -0
  85. netbox_dns/filters/nameserver.py +0 -18
  86. netbox_dns/filters/zone.py +0 -112
  87. netbox_dns/graphql/contact.py +0 -19
  88. netbox_dns/graphql/nameserver.py +0 -19
  89. netbox_dns/graphql/record.py +0 -19
  90. netbox_dns/graphql/registrar.py +0 -19
  91. netbox_dns/graphql/view.py +0 -19
  92. netbox_dns/graphql/zone.py +0 -19
  93. netbox_dns/migrations/0001_initial.py +0 -115
  94. netbox_dns/migrations/0002_zone_default_ttl.py +0 -18
  95. netbox_dns/migrations/0003_soa_managed_records.py +0 -112
  96. netbox_dns/migrations/0004_create_ptr_for_a_aaaa_records.py +0 -80
  97. netbox_dns/migrations/0005_update_ns_records.py +0 -41
  98. netbox_dns/migrations/0006_zone_soa_serial_auto.py +0 -29
  99. netbox_dns/migrations/0007_alter_zone_soa_serial_auto.py +0 -17
  100. netbox_dns/migrations/0008_zone_status_names.py +0 -21
  101. netbox_dns/migrations/0009_netbox32.py +0 -71
  102. netbox_dns/migrations/0010_update_soa_records.py +0 -58
  103. netbox_dns/migrations/0011_add_view_model.py +0 -70
  104. netbox_dns/migrations/0012_adjust_zone_and_record.py +0 -17
  105. netbox_dns/migrations/0014_add_view_description.py +0 -16
  106. netbox_dns/migrations/0015_add_record_status.py +0 -17
  107. netbox_dns/migrations/0016_cleanup_ptr_records.py +0 -38
  108. netbox_dns/migrations/0017_alter_record_ttl.py +0 -17
  109. netbox_dns/migrations/0018_zone_arpa_network.py +0 -51
  110. netbox_dns/migrations/0019_update_ns_ttl.py +0 -19
  111. netbox_dns/urls.py +0 -297
  112. netbox_plugin_dns-0.22.8.dist-info/RECORD +0 -117
  113. /netbox_dns/{filters → filtersets}/__init__.py +0 -0
  114. {netbox_plugin_dns-0.22.8.dist-info → netbox_plugin_dns-1.0.0.dist-info}/LICENSE +0 -0
  115. {netbox_plugin_dns-0.22.8.dist-info → netbox_plugin_dns-1.0.0.dist-info}/WHEEL +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: netbox-plugin-dns
3
- Version: 0.22.8
3
+ Version: 1.0.0
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
@@ -21,7 +21,7 @@ Project-URL: Repository, https://github.com/peteeckel/netbox-plugin-dns
21
21
  Description-Content-Type: text/markdown
22
22
 
23
23
  # NetBox DNS
24
- The NetBox DNS plugin enables NetBox to manage operational DNS data such as name servers, zones, records and views, as well as registration data for domains. It can automate tasks like creating PTR records, generating zone serial numbers, NS and SOA records, as well as validate names and values values for resource records to ensure zone data is consistent, current and conforming to the relevant RFCs.
24
+ The NetBox DNS plugin enables NetBox to manage operational DNS data such as name servers, zones, records and views, as well as registration data for domains. It can automate tasks like creating PTR records, generating zone serial numbers, NS and SOA records, as well as validate names and values values for resource records to ensure zone data is consistent, up-to-date and compliant with to the relevant RFCs.
25
25
 
26
26
  <div align="center">
27
27
  <a href="https://pypi.org/project/netbox-plugin-dns/"><img src="https://img.shields.io/pypi/v/netbox-plugin-dns" alt="PyPi"/></a>
@@ -36,21 +36,35 @@ The NetBox DNS plugin enables NetBox to manage operational DNS data such as name
36
36
  <a href="https://pepy.tech/project/netbox-plugin-dns"><img alt="Downloads/Month" src="https://static.pepy.tech/badge/netbox-plugin-dns/week"></a>
37
37
  </div>
38
38
 
39
- ## Features
39
+ ## Objectives
40
+ NetBox DNS is designed to be the 'DNS Source of Truth' analogous to NetBox being the 'Network Source of Truth'.
40
41
 
41
- * Manage name servers, zones and records
42
- * Automatically generate SOA and NS records for zones
43
- * Automatically create and update PTR records for IPv4 and IPv6 address records
44
- * Organize DNS zones in views for split horizon DNS and multi-site deployments
45
- * Manage domain registrar and registrant information for domains related to zones
46
- * Manage RFC2317 reverse zones for IPv4 prefixes with a network mask length longer than 24 bits
42
+ The plugin stores information about DNS name servers, DNS views and zones, and DNS records, making it a data source for automatic provisioning of DNS instances. Registration information about DNS registrars and contacts for DNS domains can also be stored and associated with zones.
47
43
 
48
- NetBox DNS is using the standardized NetBox plugin interface, so it also takes advantage of the NetBox tagging and change log features.
44
+ The main focus of the plugin is to ensure the quality of the data stored in it. To achieve this, there are many validation and automation mechanisms in place:
45
+
46
+ * Validation of record names and values
47
+ * Automatic maintenance of PTR records for IPv6 and IPv4 address records
48
+ * Automatic generation of SOA records, optionally including the serial number of the zone data
49
+ * Validation of record types such as CNAME and singletons, to ensure DNS zone validity
50
+ * Support for [RFC 2317](https://datatracker.ietf.org/doc/html/rfc2317) delegation of PTR zones for IPv4 subnets longer than 24 bits
51
+
52
+ Other main features include:
53
+
54
+ * Support for BIND views, providing lightweight namespaces for zones
55
+ * Support for IDN, including the validation of punycode names
56
+ * Full support for the NetBox REST and GraphQL APIs
57
+ * Support for all major NetBox features such as global search, tenancy, change logs, tagging, journaling etc.
58
+
59
+ ## Non-objectives
60
+ In the same way as NetBox is not a network management application, NetBox DNS does not provide any functionality to manage specific name servers or DNS service providers or to generate input such as configuration and zone files for them. The focus is on the completeness and integrity of the data needed to run DNS zones, not on the peculiarities of a plethora of servers and services that actually use the data. This functionality is left to specialized integration tools, or in many cases it can be easily implemented using Ansible or similar tools based on NetBox DNS data. Example code for some simple use cases is provided.
61
+
62
+ For integration with a large number of DNS server implementations integration tools like [octodns-netbox-dns](https://pypi.org/project/octodns-netbox-dns/) are available.
49
63
 
50
64
  ## Requirements
51
65
 
52
- * NetBox 3.5.0 or higher
53
- * Python 3.8 or higher
66
+ * NetBox 4.0.0 or higher
67
+ * Python 3.10 or higher
54
68
 
55
69
  ## Installation & Configuration
56
70
 
@@ -87,7 +101,7 @@ Full documentation on using plugins with NetBox: [Using Plugins - NetBox Documen
87
101
 
88
102
  ## Contribute
89
103
 
90
- Contributions are always welcome! Please see: [contributing guide](CONTRIBUTING.md)
104
+ Contributions are always welcome! Please see the [Contribution Guidelines](CONTRIBUTING.md)
91
105
 
92
106
  ## Documentation
93
107
 
@@ -0,0 +1,112 @@
1
+ netbox_dns/__init__.py,sha256=NuZ3it4mOdu2b6ecFDzae6j3_dMpYkSXdesT65arl2E,1038
2
+ netbox_dns/api/nested_serializers.py,sha256=kkTU4Hylkbam9-lIniv8E0nTQwE1bz8D_GzIEOUy0Mw,2145
3
+ netbox_dns/api/serializers.py,sha256=C4-TP1luq9QjEHjPS5cW7u2flAEdIFjghpVd_sa5S_Y,249
4
+ netbox_dns/api/serializers_/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
+ netbox_dns/api/serializers_/contact.py,sha256=dH4rSmJQWy3B2GcZhF86OtaUxJRl_pF7eVRXw_TdU3E,929
6
+ netbox_dns/api/serializers_/nameserver.py,sha256=Y1Ou6wAFddL28bIR10kYdHMHucbFGD7Q1M71L1z-gzY,1093
7
+ netbox_dns/api/serializers_/record.py,sha256=USnaNU5Mj6Uxo-qqOtBn_y1hj6UO1UcdCbj_9emDHfQ,2284
8
+ netbox_dns/api/serializers_/registrar.py,sha256=hnd6yzxd3wtIaUFkaeVyJ9q63M3IFdq_JftJj8KMIEQ,805
9
+ netbox_dns/api/serializers_/view.py,sha256=wSUQ9Sq181n51hzhMEddhPMZOjKEL_CUnvikAaCfTSI,918
10
+ netbox_dns/api/serializers_/zone.py,sha256=Px6FCLtApAEptkLpVo2bsNAzhRdeyOq_XoTqjqZQQSE,4351
11
+ netbox_dns/api/urls.py,sha256=R9VmmWtdrjvr35i5d_SfZK2lGn6JzmPuWEKTQlZ8MJo,575
12
+ netbox_dns/api/views.py,sha256=NI6ge3aCum394G0YN3mVSTQdFPB5kMOPdWRMR05aDO8,3566
13
+ netbox_dns/apps.py,sha256=JCW5eS-AQBUubDJve1DjP-IRFKTFGQh1NLGWzJpC5MI,151
14
+ netbox_dns/fields/__init__.py,sha256=egA6gLQ4SPYacECcYU4Vl_P7TbzLOMRfaX6rw3k26YA,69
15
+ netbox_dns/fields/address.py,sha256=qklRDbZJVK20t2OIxGBoo9VVeuVTWvWkf2gHaZMnoAI,1494
16
+ netbox_dns/fields/network.py,sha256=L9dm_zc6hBn7PM0cPNfkcKLr28BjhVmd1zJAMDMXTYI,3652
17
+ netbox_dns/fields/rfc2317.py,sha256=sp-G37GWDzyQzNzArEG291mwHLcizz--Mpa8O81nSDc,2497
18
+ netbox_dns/filtersets/__init__.py,sha256=Aw8HrCTjaJfu5JSwJsQRHfOUz4zKwAmZNByT9q6BrFU,136
19
+ netbox_dns/filtersets/contact.py,sha256=OHwaV0nUhOchNN4etXviqo6eJVnXs0o8W0rwXBhRpx8,1057
20
+ netbox_dns/filtersets/nameserver.py,sha256=mX-0iCndZZo-_YiYqMT89JY7lYRvrdB2CMo5kIXXJWg,1110
21
+ netbox_dns/filtersets/record.py,sha256=Xop2yRT_UJcLvnk9DmKSekOt2a3NTFcCaIAKLskPx4M,3687
22
+ netbox_dns/filtersets/registrar.py,sha256=CzugumDLbFtkMaURLupMciKgV6VWHCzr1duXWQUGUKA,941
23
+ netbox_dns/filtersets/view.py,sha256=QOnPLDcgwvuYxNXtXL4rfjAx_nsOeqkXno3bo7LB2-k,521
24
+ netbox_dns/filtersets/zone.py,sha256=zBoeHftcyXPLn7j3rnsYmK9z9fnbclBv2p1-DWb33mU,6562
25
+ netbox_dns/forms/__init__.py,sha256=Aw8HrCTjaJfu5JSwJsQRHfOUz4zKwAmZNByT9q6BrFU,136
26
+ netbox_dns/forms/contact.py,sha256=zC6DY5x05RmuIkURlnL3QwdmVeWLSbw5XqQ568RVUOM,5220
27
+ netbox_dns/forms/nameserver.py,sha256=x3vmPQfiGLvIayOhTq--wC7pp24pOuVLArosUZOXpc4,2361
28
+ netbox_dns/forms/record.py,sha256=izHchLyREY6pZi0vbT17TD5P4p6GDiT6syFMnM5Wu0c,7031
29
+ netbox_dns/forms/registrar.py,sha256=Z1V03Vk5k1KeMioQeNbBIo3LbFlh4LYiHIw72I4hN34,3638
30
+ netbox_dns/forms/view.py,sha256=ohV8Vtd57w2eNU2m-YXYxbBdGvfZWj2ZldxiXcsv3H8,2053
31
+ netbox_dns/forms/zone.py,sha256=ChTbnDMwO3vxXmhJCLUsFuIyZ3H57L-wwtS9l29Rz3c,21118
32
+ netbox_dns/graphql/__init__.py,sha256=B9FHsY2Nntz4Vg9EtKbYB_gyzPCIM76CMQSGbf0Q9ek,358
33
+ netbox_dns/graphql/filters.py,sha256=Kwjrn0SaxaeqhxzjFb6isXYVvL_IXOwUpNsQd_c-ffY,1257
34
+ netbox_dns/graphql/schema.py,sha256=2CHe93vQQgFhl5cQTYCJp3JikK_QnBok8xi5UFvPmac,1915
35
+ netbox_dns/graphql/types.py,sha256=_ZJHskaEIrzU1Gr6gLlAQkDY1RlL0C7w6mkwkONKTlA,4176
36
+ netbox_dns/management/commands/cleanup_database.py,sha256=HbfhYONCv1xlAbGP4e4Yv9IIoB0U-R8wAnyOjYMvxM0,5960
37
+ netbox_dns/management/commands/cleanup_rrset_ttl.py,sha256=WJb_K95GbyszAS4HWEf8UMzpqKA1fIsLkLon0ytSog8,2029
38
+ netbox_dns/management/commands/setup_coupling.py,sha256=1cUxDvHoX1UebgyCsbrLqIccuXhE8tkvyhW8dofIyr4,4556
39
+ netbox_dns/management/commands/update_soa.py,sha256=Rj_Xk-qpwkAVRubVnM5OqSTwgzi93E0PqjwGb3rYjf0,660
40
+ netbox_dns/migrations/0001_squashed_netbox_dns_0_15.py,sha256=3U0810NWSHPu2dTSHpfzlleDgwMS04FhJ_CkO76SDaw,10283
41
+ netbox_dns/migrations/0001_squashed_netbox_dns_0_22.py,sha256=Hy-pTB8EkK742cz6M2yhgi-v-nDBLPZ1XUDwOtAGswY,20279
42
+ netbox_dns/migrations/0002_contact_description_registrar_description.py,sha256=ZrI-L3jJ5GzdVx21pomgM4waE-njixHQjl_grjsGr0I,583
43
+ netbox_dns/migrations/0003_default_view.py,sha256=NByVlAyiiK6WCfJ014BiFPkoNcHeqr1IpkgNdHiwbWw,367
44
+ netbox_dns/migrations/0004_create_and_assign_default_view.py,sha256=npBFxWuJCZeMhbZLEH9C_sZcQZRaa3IOlyn4p_GULyk,627
45
+ netbox_dns/migrations/0005_alter_zone_view_not_null.py,sha256=vUfCFD-qeh5M1WCqtE1eYHXZwQVCcf841Z2-0CdcMRI,463
46
+ netbox_dns/migrations/0020_netbox_3_4.py,sha256=UMcHdn8ZAuQjUaM_3rEGpktYrM0TuvhccD7Jt7WQnPs,1271
47
+ netbox_dns/migrations/0021_record_ip_address.py,sha256=k72KACwnaCkgXLMgrex_lZCB1xd614llxRBeBBuJTYU,3243
48
+ netbox_dns/migrations/0022_search.py,sha256=KW1ffEZ4-0dppGQ_KD1EN7iw8eQJOnDco-xfJFRZqKQ,172
49
+ netbox_dns/migrations/0023_alter_record_value.py,sha256=4_4v8YZzU8_jadJqIUUjH6SIhNTeALWhclozTqYDmv0,378
50
+ netbox_dns/migrations/0024_tenancy.py,sha256=3kc5l5_AyfhOI6g6mbCfReUAbSgb2DAv0MDMZqJ-3YQ,1745
51
+ netbox_dns/migrations/0025_ipam_coupling_cf.py,sha256=7uHujclWrsYw5QMLWft0Po78Ow5Q8MjPuU7moKyQ2qs,620
52
+ netbox_dns/migrations/0026_domain_registration.py,sha256=qUJ1oUGHIGGNWD7QRLnxElbM5eNp7dYNNn_OYIw8Xvo,5796
53
+ netbox_dns/migrations/0027_alter_registrar_iana_id.py,sha256=QUtRIrqqfkraFmzzeJFZWAEv4PfrOouoHtrV6FRn8Kc,404
54
+ netbox_dns/migrations/0028_rfc2317_fields.py,sha256=D8r43xxBjYXiL6ycmX8RY5_WG7tRYEDjutOeYM1H56I,1364
55
+ netbox_dns/migrations/0029_record_fqdn.py,sha256=UAAU38ekKQyiYDOJlcrz6Qbk4bqZfSHZyAHUZFFQrOw,808
56
+ netbox_dns/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
+ netbox_dns/models/__init__.py,sha256=Q7UIEe2vGh18AZN4er6CykciwXPQGgUq0L-9718wZqU,182
58
+ netbox_dns/models/contact.py,sha256=xXmNGuM6k1U98jO3mMmp93PXamh1YZQ270JOcy0FFnE,2958
59
+ netbox_dns/models/nameserver.py,sha256=DD1cp7uxSQFOS6gzMl65XCbNhcX3iDlVapeEYqI-1lo,3078
60
+ netbox_dns/models/record.py,sha256=rg4eWSt98p-fjhLNQtymOUxOW5FRQcD9cgcX0B7xuzg,23753
61
+ netbox_dns/models/registrar.py,sha256=yidjVCq7WPECsHLKQRRCSzGbvG2jIXu8lqAKox0SU5Q,1502
62
+ netbox_dns/models/view.py,sha256=PykIODa9lc5duYoXF2ZM7mRnvk5aOh-2LZy7XbJdo0g,2633
63
+ netbox_dns/models/zone.py,sha256=OO1Fho4QSRDqxIAYM4hTKD-xFj8VCZRffMgefQIGWyk,27354
64
+ netbox_dns/navigation.py,sha256=ykZJE5X-sqlnaTIU_pRzsio8Ux8zZVLH-iNsC2QqIxs,4062
65
+ netbox_dns/signals/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
66
+ netbox_dns/signals/ipam_coupling.py,sha256=kJUKHUgq5XgWMhxB-312SPaZAYTLIYGgKO0lz2-z_rg,5594
67
+ netbox_dns/tables/__init__.py,sha256=Aw8HrCTjaJfu5JSwJsQRHfOUz4zKwAmZNByT9q6BrFU,136
68
+ netbox_dns/tables/contact.py,sha256=guT_wC3NJMYbVbXeMOg6nqmmmDcnjfbRI-SkjFDEYdU,774
69
+ netbox_dns/tables/nameserver.py,sha256=8BfXzDXNuhZHEyHjGlL4EA1LYx7XU3EPGHlby0k33II,767
70
+ netbox_dns/tables/record.py,sha256=VwBWMiZN_Lkl9SXfJLzd8-7TM1CKetwE7azhScF4r7I,3162
71
+ netbox_dns/tables/registrar.py,sha256=6C8XpxvR9O7IoVK0RD5RoZgXjkm-ORSBeKP6KbwcjHA,648
72
+ netbox_dns/tables/view.py,sha256=p4f7Ey3j8TKGdhlsziR8yp7bHUldIabDW-rLr47PV8o,615
73
+ netbox_dns/tables/zone.py,sha256=4TlTB7lVsztZJ41aetkqr6PWosjZP-xc2sB9gDnw0z8,1886
74
+ netbox_dns/template_content.py,sha256=NmtfseYrYcU3RxzCI5okwCpMTfTEs4d8aJnDYwo4MO8,3801
75
+ netbox_dns/templates/netbox_dns/contact.html,sha256=fMHAQyLXIxohKoCTxFEnKetl9UVXeQgjasfpv_JONaw,2855
76
+ netbox_dns/templates/netbox_dns/nameserver.html,sha256=DpTdetQVV_jKThDbi62LvbhiCay-1QxR-yiJEiPFm4w,1554
77
+ netbox_dns/templates/netbox_dns/record/managed.html,sha256=G6LPG1koUGuzUiwYdv1okdVa4sKaofiQegDBnsFL0kA,89
78
+ netbox_dns/templates/netbox_dns/record/related.html,sha256=Aqor8uGcuHQTHjlX-Xmni2Yp4N7lOBrMOqQiszrQOC0,742
79
+ netbox_dns/templates/netbox_dns/record.html,sha256=Ns0HkAvxt8uuWZsTzo6qmZHkkvWegcZ8oDF4bo11qd0,5476
80
+ netbox_dns/templates/netbox_dns/registrar.html,sha256=O5veGmW59Pf5yN25ihPLvRIkA2P7xmSGv0G3NrRG8vI,2152
81
+ netbox_dns/templates/netbox_dns/related_dns_objects.html,sha256=KSzlnw1cStrJa3poKkwrt_ycIH0oH0STWIHRNy3ks4g,806
82
+ netbox_dns/templates/netbox_dns/view.html,sha256=XCa7Sg8fjSkhVqjLvw652FINQdWURLWdQqw8is82iaI,1499
83
+ netbox_dns/templates/netbox_dns/zone/base.html,sha256=n_E4aVYdGeZZl-ARE8sb4DgAAgPs92X1UEFepX3xIlM,495
84
+ netbox_dns/templates/netbox_dns/zone/child.html,sha256=kH56PJFBGCjiRdIh7zCtClnZdfOChqN_sYslsyoz5gU,2147
85
+ netbox_dns/templates/netbox_dns/zone/managed_record.html,sha256=LOchMAJyfMZIICE6q0pX1eorRbtgUtOQ1u0VvJKCDZ8,514
86
+ netbox_dns/templates/netbox_dns/zone/record.html,sha256=tu5RFm2eYJ3fjeUxZYDJqJ9qK8tGslXl1iGs60DlRyM,2194
87
+ netbox_dns/templates/netbox_dns/zone/registration.html,sha256=de2Kph-G8Gv5LD_Wf294SLfO0UKPS9NmHeQYRfJf-Ck,1151
88
+ netbox_dns/templates/netbox_dns/zone/rfc2317_child_zone.html,sha256=rWlmb3zRQbLYQ_1dsa0twwu6y1dRj2tfFVEERH07p-s,517
89
+ netbox_dns/templates/netbox_dns/zone.html,sha256=K-jNmluO_TqOhv_DPBkJ8y0JF5zu9N574gkWCvVWruE,6633
90
+ netbox_dns/urls/__init__.py,sha256=ky-ertisnz10vB18bi7JGwZwkvbRAeDErAqn621Xmbc,438
91
+ netbox_dns/urls/contact.py,sha256=OSQO-AkAhTaBruAdzVgcC7ip_OuiacvFI_ozgkWlNFU,1549
92
+ netbox_dns/urls/nameserver.py,sha256=BBbY-wqPqCquvLLv1_JhqToj7oDHhPNGCWHt0IfjBNM,1941
93
+ netbox_dns/urls/record.py,sha256=bDprohTso1N0GtPXH4X3TNHnkxopiOSQFXWItifEZ_k,1432
94
+ netbox_dns/urls/registrar.py,sha256=u6B0zGGYNUJIKTo9uGiUeZLPD0QMGaQOAPShGEy4NaA,1728
95
+ netbox_dns/urls/view.py,sha256=8AeBnOHWusXXQs4JXpNfMSHqszXAY1GDXGWmNsMulQ8,1327
96
+ netbox_dns/urls/zone.py,sha256=wYRAhtq695K0QSrvNj6gdFaf1gExEN5vwmYXLAA9FrU,1849
97
+ netbox_dns/utilities/__init__.py,sha256=dVPi1gAGaRum-aQYi0oLgagRYrTVQNY5bmi2Ig02cOo,1835
98
+ netbox_dns/utilities/ipam_coupling.py,sha256=6z1Fx8fhesf15gLTHYc0KVqE3_YhJbNPAjqFOvWlqK8,3441
99
+ netbox_dns/validators/__init__.py,sha256=5W8s31R1aT5B_mKJjTRwogEKj-Xun05iCyvRuYVGkdM,47
100
+ netbox_dns/validators/dns_name.py,sha256=bGThrQ7wBdPwwPmx4bHD2OEHBNnZ8XXFKCOLI_u5QW4,2097
101
+ netbox_dns/validators/rfc2317.py,sha256=L2Z-z5ghktFyWMLVZPeK8OEVGnQzbXD11fha2xGHM5E,501
102
+ netbox_dns/views/__init__.py,sha256=Aw8HrCTjaJfu5JSwJsQRHfOUz4zKwAmZNByT9q6BrFU,136
103
+ netbox_dns/views/contact.py,sha256=mBWM92UVjoz90JCUGO7kaFUI0_yA7tH4lSHxOZQB3MQ,2253
104
+ netbox_dns/views/nameserver.py,sha256=Sxl1h8v1W-uP0Qxz-Re0Ei1LgnWJuQGjI7ZaHS7qLeE,3011
105
+ netbox_dns/views/record.py,sha256=DDHbxQ33P_mduoPquvyXrdrqNT6r79qShLg1uJzU4Ic,4347
106
+ netbox_dns/views/registrar.py,sha256=NK6jTYRwRjaVjYmI7T4Phh_gjXg9yPrxl-7vciZ9doc,2090
107
+ netbox_dns/views/view.py,sha256=a3l6pybhqGb_RMxrRgFT1Gia9tRq8EmXFxPv9WUId0U,1913
108
+ netbox_dns/views/zone.py,sha256=EqkjXuX1xhkjDgaSNgFBvnA74IhuK_zDWlHPb3_4YKQ,4591
109
+ netbox_plugin_dns-1.0.0.dist-info/LICENSE,sha256=tziMJKpkMbySr09L6bIwsu7Ca9ICoqpMO3yAXgEMQA4,1076
110
+ netbox_plugin_dns-1.0.0.dist-info/METADATA,sha256=LDyrtGoxxhmscj5u7GGlcCIV0Xc2xhfCo9-MxFGXqR0,6147
111
+ netbox_plugin_dns-1.0.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
112
+ netbox_plugin_dns-1.0.0.dist-info/RECORD,,
@@ -1,18 +0,0 @@
1
- from django.db.models import Q
2
-
3
- from netbox.filtersets import NetBoxModelFilterSet
4
- from tenancy.filtersets import TenancyFilterSet
5
-
6
- from netbox_dns.models import NameServer
7
-
8
-
9
- class NameServerFilter(TenancyFilterSet, NetBoxModelFilterSet):
10
- class Meta:
11
- model = NameServer
12
- fields = ("id", "name", "tenant", "tag")
13
-
14
- def search(self, queryset, name, value):
15
- if not value.strip():
16
- return queryset
17
- qs_filter = Q(name__icontains=value)
18
- return queryset.filter(qs_filter)
@@ -1,112 +0,0 @@
1
- import django_filters
2
- from django.db.models import Q
3
-
4
- from netbox.filtersets import NetBoxModelFilterSet
5
- from tenancy.filtersets import TenancyFilterSet
6
-
7
- from netbox_dns.models import View, Zone, ZoneStatusChoices, Registrar, Contact
8
-
9
-
10
- class ZoneFilter(TenancyFilterSet, NetBoxModelFilterSet):
11
- status = django_filters.MultipleChoiceFilter(
12
- choices=ZoneStatusChoices,
13
- )
14
- view_id = django_filters.ModelMultipleChoiceFilter(
15
- queryset=View.objects.all(),
16
- label="View ID",
17
- )
18
- view = django_filters.ModelMultipleChoiceFilter(
19
- queryset=View.objects.all(),
20
- field_name="view__name",
21
- to_field_name="name",
22
- label="View",
23
- )
24
- registrar_id = django_filters.ModelMultipleChoiceFilter(
25
- queryset=Registrar.objects.all(),
26
- label="Registrar ID",
27
- )
28
- registrar = django_filters.ModelMultipleChoiceFilter(
29
- queryset=Registrar.objects.all(),
30
- field_name="registrar__name",
31
- to_field_name="name",
32
- label="Registrar",
33
- )
34
- registrant_id = django_filters.ModelMultipleChoiceFilter(
35
- queryset=Contact.objects.all(),
36
- label="Registrant ID",
37
- )
38
- registrant = django_filters.ModelMultipleChoiceFilter(
39
- queryset=Contact.objects.all(),
40
- field_name="registrant__contact_id",
41
- to_field_name="contact_id",
42
- label="Registrant",
43
- )
44
- admin_c_id = django_filters.ModelMultipleChoiceFilter(
45
- queryset=Contact.objects.all(),
46
- label="Administrative Contact ID",
47
- )
48
- admin_c = django_filters.ModelMultipleChoiceFilter(
49
- queryset=Contact.objects.all(),
50
- field_name="admin_c__contact_id",
51
- to_field_name="contact_id",
52
- label="Administrative Contact",
53
- )
54
- tech_c_id = django_filters.ModelMultipleChoiceFilter(
55
- queryset=Contact.objects.all(),
56
- label="Technical Contact ID",
57
- )
58
- tech_c = django_filters.ModelMultipleChoiceFilter(
59
- queryset=Contact.objects.all(),
60
- field_name="tech_c__contact_id",
61
- to_field_name="contact_id",
62
- label="Technical Contact",
63
- )
64
- billing_c_id = django_filters.ModelMultipleChoiceFilter(
65
- queryset=Contact.objects.all(),
66
- label="Billing Contact ID",
67
- )
68
- billing_c = django_filters.ModelMultipleChoiceFilter(
69
- queryset=Contact.objects.all(),
70
- field_name="billing_c__contact_id",
71
- to_field_name="contact_id",
72
- label="Billing Contact",
73
- )
74
-
75
- active = django_filters.BooleanFilter(
76
- label="Zone is active",
77
- )
78
-
79
- class Meta:
80
- model = Zone
81
- fields = (
82
- "id",
83
- "name",
84
- "view",
85
- "status",
86
- "nameservers",
87
- "registrar",
88
- "registry_domain_id",
89
- "registrant",
90
- "admin_c",
91
- "tech_c",
92
- "billing_c",
93
- "active",
94
- "tenant",
95
- )
96
-
97
- def search(self, queryset, name, value):
98
- """Perform the filtered search."""
99
- if not value.strip():
100
- return queryset
101
- qs_filter = (
102
- Q(name__icontains=value)
103
- | Q(status__icontains=value)
104
- | Q(view__name__icontains=value)
105
- | Q(registrar__name__icontains=value)
106
- | Q(registry_domain_id__icontains=value)
107
- | Q(registrant__name__icontains=value)
108
- | Q(admin_c__name__icontains=value)
109
- | Q(tech_c__name__icontains=value)
110
- | Q(billing_c__name__icontains=value)
111
- )
112
- return queryset.filter(qs_filter)
@@ -1,19 +0,0 @@
1
- from graphene import ObjectType
2
-
3
- from netbox.graphql.fields import ObjectField, ObjectListField
4
- from netbox.graphql.types import NetBoxObjectType
5
-
6
- from netbox_dns.models import Contact
7
- from netbox_dns.filters import ContactFilter
8
-
9
-
10
- class ContactType(NetBoxObjectType):
11
- class Meta:
12
- model = Contact
13
- fields = "__all__"
14
- filterset_class = ContactFilter
15
-
16
-
17
- class ContactQuery(ObjectType):
18
- contact = ObjectField(ContactType)
19
- contact_list = ObjectListField(ContactType)
@@ -1,19 +0,0 @@
1
- from graphene import ObjectType
2
-
3
- from netbox.graphql.fields import ObjectField, ObjectListField
4
- from netbox.graphql.types import NetBoxObjectType
5
-
6
- from netbox_dns.models import NameServer
7
- from netbox_dns.filters import NameServerFilter
8
-
9
-
10
- class NameServerType(NetBoxObjectType):
11
- class Meta:
12
- model = NameServer
13
- fields = "__all__"
14
- filterset_class = NameServerFilter
15
-
16
-
17
- class NameServerQuery(ObjectType):
18
- nameserver = ObjectField(NameServerType)
19
- nameserver_list = ObjectListField(NameServerType)
@@ -1,19 +0,0 @@
1
- from graphene import ObjectType
2
-
3
- from netbox.graphql.fields import ObjectField, ObjectListField
4
- from netbox.graphql.types import NetBoxObjectType
5
-
6
- from netbox_dns.models import Record
7
- from netbox_dns.filters import RecordFilter
8
-
9
-
10
- class RecordType(NetBoxObjectType):
11
- class Meta:
12
- model = Record
13
- fields = "__all__"
14
- filterset_class = RecordFilter
15
-
16
-
17
- class RecordQuery(ObjectType):
18
- record = ObjectField(RecordType)
19
- record_list = ObjectListField(RecordType)
@@ -1,19 +0,0 @@
1
- from graphene import ObjectType
2
-
3
- from netbox.graphql.fields import ObjectField, ObjectListField
4
- from netbox.graphql.types import NetBoxObjectType
5
-
6
- from netbox_dns.models import Registrar
7
- from netbox_dns.filters import RegistrarFilter
8
-
9
-
10
- class RegistrarType(NetBoxObjectType):
11
- class Meta:
12
- model = Registrar
13
- fields = "__all__"
14
- filterset_class = RegistrarFilter
15
-
16
-
17
- class RegistrarQuery(ObjectType):
18
- registrar = ObjectField(RegistrarType)
19
- registrar_list = ObjectListField(RegistrarType)
@@ -1,19 +0,0 @@
1
- from graphene import ObjectType
2
-
3
- from netbox.graphql.fields import ObjectField, ObjectListField
4
- from netbox.graphql.types import NetBoxObjectType
5
-
6
- from netbox_dns.models import View
7
- from netbox_dns.filters import ViewFilter
8
-
9
-
10
- class ViewType(NetBoxObjectType):
11
- class Meta:
12
- model = View
13
- fields = "__all__"
14
- filterset_class = ViewFilter
15
-
16
-
17
- class ViewQuery(ObjectType):
18
- view = ObjectField(ViewType)
19
- view_list = ObjectListField(ViewType)
@@ -1,19 +0,0 @@
1
- from graphene import ObjectType
2
-
3
- from netbox.graphql.fields import ObjectField, ObjectListField
4
- from netbox.graphql.types import NetBoxObjectType
5
-
6
- from netbox_dns.models import Zone
7
- from netbox_dns.filters import ZoneFilter
8
-
9
-
10
- class ZoneType(NetBoxObjectType):
11
- class Meta:
12
- model = Zone
13
- fields = "__all__"
14
- filterset_class = ZoneFilter
15
-
16
-
17
- class ZoneQuery(ObjectType):
18
- zone = ObjectField(ZoneType)
19
- zone_list = ObjectListField(ZoneType)
@@ -1,115 +0,0 @@
1
- # Generated by Django 3.2.5 on 2021-08-13 14:44
2
-
3
- import django.core.serializers.json
4
- from django.db import migrations, models
5
- import django.db.models.deletion
6
- import taggit.managers
7
-
8
-
9
- class Migration(migrations.Migration):
10
- initial = True
11
-
12
- dependencies = [
13
- ("extras", "0059_exporttemplate_as_attachment"),
14
- ]
15
-
16
- operations = [
17
- migrations.CreateModel(
18
- name="NameServer",
19
- fields=[
20
- ("created", models.DateField(auto_now_add=True, null=True)),
21
- ("last_updated", models.DateTimeField(auto_now=True, null=True)),
22
- (
23
- "custom_field_data",
24
- models.JSONField(
25
- blank=True,
26
- default=dict,
27
- encoder=django.core.serializers.json.DjangoJSONEncoder,
28
- ),
29
- ),
30
- ("id", models.BigAutoField(primary_key=True, serialize=False)),
31
- ("name", models.CharField(max_length=255, unique=True)),
32
- (
33
- "tags",
34
- taggit.managers.TaggableManager(
35
- through="extras.TaggedItem", to="extras.Tag"
36
- ),
37
- ),
38
- ],
39
- options={
40
- "ordering": ("name", "id"),
41
- },
42
- ),
43
- migrations.CreateModel(
44
- name="Zone",
45
- fields=[
46
- ("created", models.DateField(auto_now_add=True, null=True)),
47
- ("last_updated", models.DateTimeField(auto_now=True, null=True)),
48
- (
49
- "custom_field_data",
50
- models.JSONField(
51
- blank=True,
52
- default=dict,
53
- encoder=django.core.serializers.json.DjangoJSONEncoder,
54
- ),
55
- ),
56
- ("id", models.BigAutoField(primary_key=True, serialize=False)),
57
- ("name", models.CharField(max_length=255, unique=True)),
58
- (
59
- "status",
60
- models.CharField(blank=True, default="active", max_length=50),
61
- ),
62
- (
63
- "nameservers",
64
- models.ManyToManyField(
65
- blank=True, related_name="zones", to="netbox_dns.NameServer"
66
- ),
67
- ),
68
- (
69
- "tags",
70
- taggit.managers.TaggableManager(
71
- blank=True, through="extras.TaggedItem", to="extras.Tag"
72
- ),
73
- ),
74
- ],
75
- options={
76
- "ordering": ("name", "id"),
77
- },
78
- ),
79
- migrations.CreateModel(
80
- name="Record",
81
- fields=[
82
- ("created", models.DateField(auto_now_add=True, null=True)),
83
- ("last_updated", models.DateTimeField(auto_now=True, null=True)),
84
- (
85
- "custom_field_data",
86
- models.JSONField(
87
- blank=True,
88
- default=dict,
89
- encoder=django.core.serializers.json.DjangoJSONEncoder,
90
- ),
91
- ),
92
- ("id", models.BigAutoField(primary_key=True, serialize=False)),
93
- ("type", models.CharField(max_length=10)),
94
- ("name", models.CharField(max_length=255)),
95
- ("value", models.CharField(max_length=1000)),
96
- ("ttl", models.PositiveIntegerField()),
97
- (
98
- "tags",
99
- taggit.managers.TaggableManager(
100
- through="extras.TaggedItem", to="extras.Tag"
101
- ),
102
- ),
103
- (
104
- "zone",
105
- models.ForeignKey(
106
- on_delete=django.db.models.deletion.CASCADE,
107
- to="netbox_dns.zone",
108
- ),
109
- ),
110
- ],
111
- options={
112
- "ordering": ("name", "id"),
113
- },
114
- ),
115
- ]
@@ -1,18 +0,0 @@
1
- # Generated by Django 3.2.8 on 2021-10-20 11:06
2
-
3
- from django.db import migrations, models
4
-
5
-
6
- class Migration(migrations.Migration):
7
- dependencies = [
8
- ("netbox_dns", "0001_initial"),
9
- ]
10
-
11
- operations = [
12
- migrations.AddField(
13
- model_name="zone",
14
- name="default_ttl",
15
- field=models.PositiveIntegerField(blank=True, default=86400),
16
- preserve_default=False,
17
- ),
18
- ]