netbox-plugin-dns 0.21.4__py3-none-any.whl → 1.4.7__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.
Files changed (232) hide show
  1. netbox_dns/__init__.py +106 -41
  2. netbox_dns/api/field_serializers.py +25 -0
  3. netbox_dns/api/nested_serializers.py +95 -52
  4. netbox_dns/api/serializers.py +14 -296
  5. netbox_dns/api/serializers_/__init__.py +0 -0
  6. netbox_dns/api/serializers_/dnssec_key_template.py +69 -0
  7. netbox_dns/api/serializers_/dnssec_policy.py +165 -0
  8. netbox_dns/api/serializers_/nameserver.py +56 -0
  9. netbox_dns/api/serializers_/prefix.py +18 -0
  10. netbox_dns/api/serializers_/record.py +105 -0
  11. netbox_dns/api/serializers_/record_template.py +71 -0
  12. netbox_dns/api/serializers_/registrar.py +45 -0
  13. netbox_dns/api/serializers_/registration_contact.py +50 -0
  14. netbox_dns/api/serializers_/view.py +81 -0
  15. netbox_dns/api/serializers_/zone.py +247 -0
  16. netbox_dns/api/serializers_/zone_template.py +157 -0
  17. netbox_dns/api/urls.py +13 -2
  18. netbox_dns/api/views.py +96 -58
  19. netbox_dns/choices/__init__.py +4 -0
  20. netbox_dns/choices/dnssec_key_template.py +67 -0
  21. netbox_dns/choices/dnssec_policy.py +40 -0
  22. netbox_dns/choices/record.py +104 -0
  23. netbox_dns/choices/utilities.py +4 -0
  24. netbox_dns/choices/zone.py +119 -0
  25. netbox_dns/fields/__init__.py +4 -0
  26. netbox_dns/fields/address.py +22 -16
  27. netbox_dns/fields/choice_array.py +33 -0
  28. netbox_dns/fields/ipam.py +15 -0
  29. netbox_dns/fields/network.py +42 -18
  30. netbox_dns/fields/rfc2317.py +97 -0
  31. netbox_dns/fields/timeperiod.py +33 -0
  32. netbox_dns/filters.py +7 -0
  33. netbox_dns/filtersets/__init__.py +12 -0
  34. netbox_dns/filtersets/dnssec_key_template.py +57 -0
  35. netbox_dns/filtersets/dnssec_policy.py +101 -0
  36. netbox_dns/filtersets/nameserver.py +46 -0
  37. netbox_dns/filtersets/record.py +135 -0
  38. netbox_dns/filtersets/record_template.py +59 -0
  39. netbox_dns/{filters → filtersets}/registrar.py +8 -1
  40. netbox_dns/{filters/contact.py → filtersets/registration_contact.py} +9 -3
  41. netbox_dns/filtersets/view.py +45 -0
  42. netbox_dns/filtersets/zone.py +254 -0
  43. netbox_dns/filtersets/zone_template.py +165 -0
  44. netbox_dns/forms/__init__.py +5 -1
  45. netbox_dns/forms/dnssec_key_template.py +250 -0
  46. netbox_dns/forms/dnssec_policy.py +654 -0
  47. netbox_dns/forms/nameserver.py +121 -27
  48. netbox_dns/forms/record.py +215 -104
  49. netbox_dns/forms/record_template.py +285 -0
  50. netbox_dns/forms/registrar.py +108 -31
  51. netbox_dns/forms/registration_contact.py +282 -0
  52. netbox_dns/forms/view.py +331 -20
  53. netbox_dns/forms/zone.py +769 -373
  54. netbox_dns/forms/zone_template.py +463 -0
  55. netbox_dns/graphql/__init__.py +25 -22
  56. netbox_dns/graphql/enums.py +41 -0
  57. netbox_dns/graphql/filter_lookups.py +13 -0
  58. netbox_dns/graphql/filters/__init__.py +12 -0
  59. netbox_dns/graphql/filters/dnssec_key_template.py +63 -0
  60. netbox_dns/graphql/filters/dnssec_policy.py +124 -0
  61. netbox_dns/graphql/filters/nameserver.py +32 -0
  62. netbox_dns/graphql/filters/record.py +89 -0
  63. netbox_dns/graphql/filters/record_template.py +55 -0
  64. netbox_dns/graphql/filters/registrar.py +30 -0
  65. netbox_dns/graphql/filters/registration_contact.py +27 -0
  66. netbox_dns/graphql/filters/view.py +28 -0
  67. netbox_dns/graphql/filters/zone.py +147 -0
  68. netbox_dns/graphql/filters/zone_template.py +97 -0
  69. netbox_dns/graphql/schema.py +89 -7
  70. netbox_dns/graphql/types.py +355 -0
  71. netbox_dns/locale/de/LC_MESSAGES/django.mo +0 -0
  72. netbox_dns/locale/en/LC_MESSAGES/django.mo +0 -0
  73. netbox_dns/locale/fr/LC_MESSAGES/django.mo +0 -0
  74. netbox_dns/management/commands/cleanup_database.py +175 -156
  75. netbox_dns/management/commands/cleanup_rrset_ttl.py +64 -0
  76. netbox_dns/management/commands/rebuild_dnssync.py +23 -0
  77. netbox_dns/management/commands/setup_dnssync.py +140 -0
  78. netbox_dns/migrations/0001_squashed_netbox_dns_0_15.py +0 -27
  79. netbox_dns/migrations/0001_squashed_netbox_dns_0_22.py +557 -0
  80. netbox_dns/migrations/{0013_add_nameserver_zone_record_description.py → 0002_contact_description_registrar_description.py} +4 -9
  81. netbox_dns/migrations/0003_default_view.py +15 -0
  82. netbox_dns/migrations/0004_create_and_assign_default_view.py +26 -0
  83. netbox_dns/migrations/0005_alter_zone_view_not_null.py +18 -0
  84. netbox_dns/migrations/0006_templating.py +172 -0
  85. netbox_dns/migrations/0007_alter_ordering_options.py +25 -0
  86. netbox_dns/migrations/0008_view_prefixes.py +18 -0
  87. netbox_dns/migrations/0009_rename_contact_registrationcontact.py +36 -0
  88. netbox_dns/migrations/0010_view_ip_address_filter.py +18 -0
  89. netbox_dns/migrations/0011_rename_related_fields.py +63 -0
  90. netbox_dns/migrations/0012_natural_ordering.py +88 -0
  91. netbox_dns/migrations/0013_zonetemplate_soa_mname_zonetemplate_soa_rname.py +30 -0
  92. netbox_dns/migrations/0014_alter_unique_constraints_lowercase.py +42 -0
  93. netbox_dns/migrations/0015_dnssec.py +168 -0
  94. netbox_dns/migrations/{0015_add_record_status.py → 0016_dnssec_policy_status.py} +5 -4
  95. netbox_dns/migrations/0017_dnssec_policy_zone_zone_template.py +41 -0
  96. netbox_dns/migrations/0018_zone_domain_status_zone_expiration_date.py +23 -0
  97. netbox_dns/migrations/0019_dnssecpolicy_parental_agents.py +25 -0
  98. netbox_dns/migrations/0020_netbox_3_4.py +1 -1
  99. netbox_dns/migrations/0020_remove_dnssecpolicy_parental_agents_and_more.py +29 -0
  100. netbox_dns/migrations/0021_alter_record_ptr_record.py +25 -0
  101. netbox_dns/migrations/0021_record_ip_address.py +1 -1
  102. netbox_dns/migrations/0022_alter_record_ipam_ip_address.py +26 -0
  103. netbox_dns/migrations/0023_disable_ptr_false.py +27 -0
  104. netbox_dns/migrations/0024_zonetemplate_parental_agents.py +25 -0
  105. netbox_dns/migrations/0025_remove_zone_inline_signing_and_more.py +22 -0
  106. netbox_dns/migrations/0026_alter_dnssecpolicy_nsec3_opt_out.py +18 -0
  107. netbox_dns/migrations/0026_domain_registration.py +1 -1
  108. netbox_dns/migrations/0027_zone_comments.py +18 -0
  109. netbox_dns/migrations/0028_alter_zone_default_ttl_alter_zone_soa_minimum_and_more.py +54 -0
  110. netbox_dns/migrations/0028_rfc2317_fields.py +44 -0
  111. netbox_dns/migrations/0029_alter_registrationcontact_street.py +18 -0
  112. netbox_dns/migrations/0029_record_fqdn.py +30 -0
  113. netbox_dns/mixins/__init__.py +1 -0
  114. netbox_dns/mixins/object_modification.py +57 -0
  115. netbox_dns/models/__init__.py +5 -1
  116. netbox_dns/models/dnssec_key_template.py +114 -0
  117. netbox_dns/models/dnssec_policy.py +203 -0
  118. netbox_dns/models/nameserver.py +61 -30
  119. netbox_dns/models/record.py +781 -234
  120. netbox_dns/models/record_template.py +198 -0
  121. netbox_dns/models/registrar.py +34 -15
  122. netbox_dns/models/{contact.py → registration_contact.py} +72 -43
  123. netbox_dns/models/view.py +129 -9
  124. netbox_dns/models/zone.py +806 -242
  125. netbox_dns/models/zone_template.py +209 -0
  126. netbox_dns/navigation.py +176 -76
  127. netbox_dns/signals/__init__.py +0 -0
  128. netbox_dns/signals/dnssec.py +32 -0
  129. netbox_dns/signals/ipam_dnssync.py +216 -0
  130. netbox_dns/tables/__init__.py +5 -1
  131. netbox_dns/tables/dnssec_key_template.py +49 -0
  132. netbox_dns/tables/dnssec_policy.py +140 -0
  133. netbox_dns/tables/ipam_dnssync.py +12 -0
  134. netbox_dns/tables/nameserver.py +14 -17
  135. netbox_dns/tables/record.py +117 -59
  136. netbox_dns/tables/record_template.py +91 -0
  137. netbox_dns/tables/registrar.py +20 -10
  138. netbox_dns/tables/{contact.py → registration_contact.py} +22 -11
  139. netbox_dns/tables/view.py +47 -3
  140. netbox_dns/tables/zone.py +62 -31
  141. netbox_dns/tables/zone_template.py +78 -0
  142. netbox_dns/template_content.py +124 -38
  143. netbox_dns/templates/netbox_dns/dnsseckeytemplate.html +70 -0
  144. netbox_dns/templates/netbox_dns/dnssecpolicy.html +163 -0
  145. netbox_dns/templates/netbox_dns/nameserver.html +31 -28
  146. netbox_dns/templates/netbox_dns/record/managed.html +2 -1
  147. netbox_dns/templates/netbox_dns/record/related.html +17 -6
  148. netbox_dns/templates/netbox_dns/record.html +140 -93
  149. netbox_dns/templates/netbox_dns/recordtemplate.html +96 -0
  150. netbox_dns/templates/netbox_dns/registrar.html +41 -34
  151. netbox_dns/templates/netbox_dns/registrationcontact.html +76 -0
  152. netbox_dns/templates/netbox_dns/view/button.html +10 -0
  153. netbox_dns/templates/netbox_dns/view/prefix.html +44 -0
  154. netbox_dns/templates/netbox_dns/view/related.html +33 -0
  155. netbox_dns/templates/netbox_dns/view.html +62 -18
  156. netbox_dns/templates/netbox_dns/zone/base.html +6 -3
  157. netbox_dns/templates/netbox_dns/zone/child.html +6 -5
  158. netbox_dns/templates/netbox_dns/zone/child_zone.html +18 -0
  159. netbox_dns/templates/netbox_dns/zone/delegation_record.html +18 -0
  160. netbox_dns/templates/netbox_dns/zone/managed_record.html +1 -1
  161. netbox_dns/templates/netbox_dns/zone/record.html +6 -5
  162. netbox_dns/templates/netbox_dns/zone/registration.html +43 -24
  163. netbox_dns/templates/netbox_dns/zone/rfc2317_child_zone.html +18 -0
  164. netbox_dns/templates/netbox_dns/zone.html +178 -119
  165. netbox_dns/templates/netbox_dns/zonetemplate/child.html +46 -0
  166. netbox_dns/templates/netbox_dns/zonetemplate.html +124 -0
  167. netbox_dns/templatetags/netbox_dns.py +10 -0
  168. netbox_dns/urls.py +50 -210
  169. netbox_dns/utilities/__init__.py +3 -0
  170. netbox_dns/{utilities.py → utilities/conversions.py} +55 -7
  171. netbox_dns/utilities/dns.py +11 -0
  172. netbox_dns/utilities/ipam_dnssync.py +370 -0
  173. netbox_dns/validators/__init__.py +4 -0
  174. netbox_dns/validators/dns_name.py +116 -0
  175. netbox_dns/validators/dns_value.py +147 -0
  176. netbox_dns/validators/dnssec.py +148 -0
  177. netbox_dns/validators/rfc2317.py +28 -0
  178. netbox_dns/views/__init__.py +5 -1
  179. netbox_dns/views/dnssec_key_template.py +78 -0
  180. netbox_dns/views/dnssec_policy.py +146 -0
  181. netbox_dns/views/nameserver.py +34 -15
  182. netbox_dns/views/record.py +156 -15
  183. netbox_dns/views/record_template.py +93 -0
  184. netbox_dns/views/registrar.py +32 -13
  185. netbox_dns/views/registration_contact.py +101 -0
  186. netbox_dns/views/view.py +58 -14
  187. netbox_dns/views/zone.py +130 -33
  188. netbox_dns/views/zone_template.py +82 -0
  189. netbox_plugin_dns-1.4.7.dist-info/METADATA +132 -0
  190. netbox_plugin_dns-1.4.7.dist-info/RECORD +201 -0
  191. {netbox_plugin_dns-0.21.4.dist-info → netbox_plugin_dns-1.4.7.dist-info}/WHEEL +2 -1
  192. {netbox_plugin_dns-0.21.4.dist-info → netbox_plugin_dns-1.4.7.dist-info/licenses}/LICENSE +2 -1
  193. netbox_plugin_dns-1.4.7.dist-info/top_level.txt +1 -0
  194. netbox_dns/filters/__init__.py +0 -6
  195. netbox_dns/filters/nameserver.py +0 -18
  196. netbox_dns/filters/record.py +0 -53
  197. netbox_dns/filters/view.py +0 -18
  198. netbox_dns/filters/zone.py +0 -112
  199. netbox_dns/forms/contact.py +0 -211
  200. netbox_dns/graphql/contact.py +0 -19
  201. netbox_dns/graphql/nameserver.py +0 -19
  202. netbox_dns/graphql/record.py +0 -19
  203. netbox_dns/graphql/registrar.py +0 -19
  204. netbox_dns/graphql/view.py +0 -19
  205. netbox_dns/graphql/zone.py +0 -19
  206. netbox_dns/management/commands/setup_coupling.py +0 -75
  207. netbox_dns/management/commands/update_soa.py +0 -22
  208. netbox_dns/middleware.py +0 -226
  209. netbox_dns/migrations/0001_initial.py +0 -115
  210. netbox_dns/migrations/0002_zone_default_ttl.py +0 -18
  211. netbox_dns/migrations/0003_soa_managed_records.py +0 -112
  212. netbox_dns/migrations/0004_create_ptr_for_a_aaaa_records.py +0 -80
  213. netbox_dns/migrations/0005_update_ns_records.py +0 -41
  214. netbox_dns/migrations/0006_zone_soa_serial_auto.py +0 -29
  215. netbox_dns/migrations/0007_alter_zone_soa_serial_auto.py +0 -17
  216. netbox_dns/migrations/0008_zone_status_names.py +0 -21
  217. netbox_dns/migrations/0009_netbox32.py +0 -71
  218. netbox_dns/migrations/0010_update_soa_records.py +0 -58
  219. netbox_dns/migrations/0011_add_view_model.py +0 -70
  220. netbox_dns/migrations/0012_adjust_zone_and_record.py +0 -17
  221. netbox_dns/migrations/0014_add_view_description.py +0 -16
  222. netbox_dns/migrations/0016_cleanup_ptr_records.py +0 -38
  223. netbox_dns/migrations/0017_alter_record_ttl.py +0 -17
  224. netbox_dns/migrations/0018_zone_arpa_network.py +0 -51
  225. netbox_dns/migrations/0019_update_ns_ttl.py +0 -19
  226. netbox_dns/templates/netbox_dns/contact.html +0 -71
  227. netbox_dns/templates/netbox_dns/related_dns_objects.html +0 -21
  228. netbox_dns/templatetags/view_helpers.py +0 -15
  229. netbox_dns/validators.py +0 -57
  230. netbox_dns/views/contact.py +0 -83
  231. netbox_plugin_dns-0.21.4.dist-info/METADATA +0 -101
  232. netbox_plugin_dns-0.21.4.dist-info/RECORD +0 -110
@@ -0,0 +1,124 @@
1
+ from typing import Annotated, TYPE_CHECKING
2
+
3
+ import strawberry
4
+ import strawberry_django
5
+ from strawberry_django import FilterLookup
6
+
7
+ from netbox.graphql.filter_mixins import NetBoxModelFilterMixin
8
+ from tenancy.graphql.filter_mixins import ContactFilterMixin, TenancyFilterMixin
9
+
10
+ if TYPE_CHECKING:
11
+ from netbox.graphql.filter_lookups import IntegerLookup
12
+ from .enums import NetBoxDNSDNSSECPolicyStatusEnum
13
+ from .dnssec_key_template import NetBoxDNSDNSSECKeyTemplateFilter
14
+ from .zone import NetBoxDNSZoneFilter
15
+ from .zone_template import NetBoxDNSZoneTemplateFilter
16
+
17
+ from netbox_dns.models import DNSSECPolicy
18
+ from netbox_dns.graphql.filter_lookups import PolicyDigestArrayLookup
19
+
20
+
21
+ __all__ = ("NetBoxDNSDNSSECPolicyFilter", "PolicyDigestArrayLookup")
22
+
23
+
24
+ @strawberry_django.filter_type(DNSSECPolicy, lookups=True)
25
+ class NetBoxDNSDNSSECPolicyFilter(
26
+ ContactFilterMixin, TenancyFilterMixin, NetBoxModelFilterMixin
27
+ ):
28
+ name: FilterLookup[str] | None = strawberry_django.filter_field()
29
+ description: FilterLookup[str] | None = strawberry_django.filter_field()
30
+ status: (
31
+ Annotated[
32
+ "NetBoxDNSDNSSECPolicyStatusEnum",
33
+ strawberry.lazy("netbox_dns.graphql.enums"),
34
+ ]
35
+ | None
36
+ ) = strawberry_django.filter_field()
37
+ inline_signing: FilterLookup[bool] | None = strawberry_django.filter_field()
38
+ key_templates: (
39
+ Annotated[
40
+ "NetBoxDNSDNSSECKeyTemplateFilter",
41
+ strawberry.lazy("netbox_dns.graphql.filters"),
42
+ ]
43
+ | None
44
+ ) = strawberry_django.filter_field()
45
+ zones: (
46
+ Annotated[
47
+ "NetBoxDNSZoneFilter",
48
+ strawberry.lazy("netbox_dns.graphql.filters"),
49
+ ]
50
+ | None
51
+ ) = strawberry_django.filter_field()
52
+ zone_templates: (
53
+ Annotated[
54
+ "NetBoxDNSZoneTemplateFilter",
55
+ strawberry.lazy("netbox_dns.graphql.filters"),
56
+ ]
57
+ | None
58
+ ) = strawberry_django.filter_field()
59
+ dnskey_ttl: (
60
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
61
+ | None
62
+ ) = strawberry_django.filter_field()
63
+ purge_keys: (
64
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
65
+ | None
66
+ ) = strawberry_django.filter_field()
67
+ publish_safety: (
68
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
69
+ | None
70
+ ) = strawberry_django.filter_field()
71
+ retire_safety: (
72
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
73
+ | None
74
+ ) = strawberry_django.filter_field()
75
+ signatures_jitter: (
76
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
77
+ | None
78
+ ) = strawberry_django.filter_field()
79
+ signatures_refresh: (
80
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
81
+ | None
82
+ ) = strawberry_django.filter_field()
83
+ signatures_validity: (
84
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
85
+ | None
86
+ ) = strawberry_django.filter_field()
87
+ signatures_validity_dnskey: (
88
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
89
+ | None
90
+ ) = strawberry_django.filter_field()
91
+ max_zone_ttl: (
92
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
93
+ | None
94
+ ) = strawberry_django.filter_field()
95
+ zone_propagation_delay: (
96
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
97
+ | None
98
+ ) = strawberry_django.filter_field()
99
+ cds_digest_types: (
100
+ Annotated[
101
+ "PolicyDigestArrayLookup",
102
+ strawberry.lazy("netbox_dns.graphql.filters"),
103
+ ]
104
+ | None
105
+ ) = strawberry_django.filter_field()
106
+ create_cdnskey: FilterLookup[bool] | None = strawberry_django.filter_field()
107
+ parent_ds_ttl: (
108
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
109
+ | None
110
+ ) = strawberry_django.filter_field()
111
+ parent_propagation_delay: (
112
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
113
+ | None
114
+ ) = strawberry_django.filter_field()
115
+ use_nsec3: FilterLookup[bool] | None = strawberry_django.filter_field()
116
+ nsec3_iterations: (
117
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
118
+ | None
119
+ ) = strawberry_django.filter_field()
120
+ nsec3_opt_out: FilterLookup[bool] | None = strawberry_django.filter_field()
121
+ nsec3_salt_size: (
122
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
123
+ | None
124
+ ) = strawberry_django.filter_field()
@@ -0,0 +1,32 @@
1
+ from typing import Annotated, TYPE_CHECKING
2
+
3
+ import strawberry
4
+ import strawberry_django
5
+ from strawberry_django import FilterLookup
6
+
7
+ from netbox.graphql.filter_mixins import NetBoxModelFilterMixin
8
+ from tenancy.graphql.filter_mixins import ContactFilterMixin, TenancyFilterMixin
9
+
10
+ if TYPE_CHECKING:
11
+ from .zone import NetBoxDNSZoneFilter
12
+
13
+ from netbox_dns.models import NameServer
14
+
15
+
16
+ __all__ = ("NetBoxDNSNameServerFilter",)
17
+
18
+
19
+ @strawberry_django.filter_type(NameServer, lookups=True)
20
+ class NetBoxDNSNameServerFilter(
21
+ ContactFilterMixin, TenancyFilterMixin, NetBoxModelFilterMixin
22
+ ):
23
+ name: FilterLookup[str] | None = strawberry_django.filter_field()
24
+ description: FilterLookup[str] | None = strawberry_django.filter_field()
25
+ zones: (
26
+ Annotated["NetBoxDNSZoneFilter", strawberry.lazy("netbox_dns.graphql.filters")]
27
+ | None
28
+ ) = strawberry_django.filter_field()
29
+ soa_zones: (
30
+ Annotated["NetBoxDNSZoneFilter", strawberry.lazy("netbox_dns.graphql.filters")]
31
+ | None
32
+ ) = strawberry_django.filter_field()
@@ -0,0 +1,89 @@
1
+ from typing import Annotated, TYPE_CHECKING
2
+
3
+ import strawberry
4
+ import strawberry_django
5
+ from strawberry.scalars import ID
6
+ from strawberry_django import FilterLookup
7
+
8
+ from netbox.graphql.filter_mixins import NetBoxModelFilterMixin
9
+ from tenancy.graphql.filter_mixins import ContactFilterMixin, TenancyFilterMixin
10
+
11
+ if TYPE_CHECKING:
12
+ from ipam.graphql.filters import IPAddressFilter
13
+ from netbox.graphql.filter_lookups import IntegerLookup
14
+ from .enums import (
15
+ NetBoxDNSRecordStatusEnum,
16
+ NetBoxDNSRecordTypeEnum,
17
+ )
18
+ from .view import NetBoxDNSViewFilter
19
+ from .zone import NetBoxDNSZoneFilter
20
+
21
+ from netbox_dns.models import Record
22
+
23
+
24
+ __all__ = ("NetBoxDNSRecordFilter",)
25
+
26
+
27
+ @strawberry_django.filter_type(Record, lookups=True)
28
+ class NetBoxDNSRecordFilter(
29
+ ContactFilterMixin, TenancyFilterMixin, NetBoxModelFilterMixin
30
+ ):
31
+ name: FilterLookup[str] | None = strawberry_django.filter_field()
32
+ fqdn: FilterLookup[str] | None = strawberry_django.filter_field()
33
+ description: FilterLookup[str] | None = strawberry_django.filter_field()
34
+ view: (
35
+ Annotated["NetBoxDNSViewFilter", strawberry.lazy("netbox_dns.graphql.filters")]
36
+ | None
37
+ ) = strawberry_django.filter_field()
38
+ view_id: ID | None = strawberry_django.filter_field()
39
+ zone: (
40
+ Annotated["NetBoxDNSZoneFilter", strawberry.lazy("netbox_dns.graphql.filters")]
41
+ | None
42
+ ) = strawberry_django.filter_field()
43
+ zone_id: ID | None = strawberry_django.filter_field()
44
+ type: (
45
+ Annotated[
46
+ "NetBoxDNSRecordTypeEnum", strawberry.lazy("netbox_dns.graphql.enums")
47
+ ]
48
+ | None
49
+ ) = strawberry_django.filter_field()
50
+ ttl: (
51
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
52
+ | None
53
+ ) = strawberry_django.filter_field()
54
+ value: FilterLookup[str] | None = strawberry_django.filter_field()
55
+ disable_ptr: FilterLookup[bool] | None = strawberry_django.filter_field()
56
+ status: (
57
+ Annotated[
58
+ "NetBoxDNSRecordStatusEnum", strawberry.lazy("netbox_dns.graphql.enums")
59
+ ]
60
+ | None
61
+ ) = strawberry_django.filter_field()
62
+ managed: FilterLookup[bool] | None = strawberry_django.filter_field()
63
+ address_record: (
64
+ Annotated[
65
+ "NetBoxDNSRecordFilter", strawberry.lazy("netbox_dns.graphql.filters")
66
+ ]
67
+ | None
68
+ ) = strawberry_django.filter_field()
69
+ address_record_id: ID | None = strawberry_django.filter_field()
70
+ ptr_record: (
71
+ Annotated[
72
+ "NetBoxDNSRecordFilter", strawberry.lazy("netbox_dns.graphql.filters")
73
+ ]
74
+ | None
75
+ ) = strawberry_django.filter_field()
76
+ ptr_record_id: ID | None = strawberry_django.filter_field()
77
+ rfc2317_cname_record: (
78
+ Annotated[
79
+ "NetBoxDNSRecordFilter", strawberry.lazy("netbox_dns.graphql.filters")
80
+ ]
81
+ | None
82
+ ) = strawberry_django.filter_field()
83
+ ipam_ip_address: (
84
+ Annotated["IPAddressFilter", strawberry.lazy("ipam.graphql.filters")] | None
85
+ ) = strawberry_django.filter_field()
86
+ ipam_ip_address_id: ID | None = strawberry_django.filter_field()
87
+
88
+ ip_address: FilterLookup[str] | None = strawberry_django.filter_field()
89
+ active: FilterLookup[bool] | None = strawberry_django.filter_field()
@@ -0,0 +1,55 @@
1
+ from typing import Annotated, TYPE_CHECKING
2
+
3
+ import strawberry
4
+ import strawberry_django
5
+ from strawberry_django import FilterLookup
6
+
7
+ from netbox.graphql.filter_mixins import NetBoxModelFilterMixin
8
+ from tenancy.graphql.filter_mixins import ContactFilterMixin, TenancyFilterMixin
9
+
10
+ if TYPE_CHECKING:
11
+ from netbox.graphql.filter_lookups import IntegerLookup
12
+ from .enums import (
13
+ NetBoxDNSRecordStatusEnum,
14
+ NetBoxDNSRecordTypeEnum,
15
+ )
16
+
17
+ from netbox_dns.models import RecordTemplate
18
+
19
+
20
+ __all__ = ("NetBoxDNSRecordTemplateFilter",)
21
+
22
+
23
+ @strawberry_django.filter_type(RecordTemplate, lookups=True)
24
+ class NetBoxDNSRecordTemplateFilter(
25
+ ContactFilterMixin, TenancyFilterMixin, NetBoxModelFilterMixin
26
+ ):
27
+ name: FilterLookup[str] | None = strawberry_django.filter_field()
28
+ description: FilterLookup[str] | None = strawberry_django.filter_field()
29
+ record_name: FilterLookup[str] | None = strawberry_django.filter_field()
30
+ type: (
31
+ Annotated[
32
+ "NetBoxDNSRecordTypeEnum", strawberry.lazy("netbox_dns.graphql.enums")
33
+ ]
34
+ | None
35
+ ) = strawberry_django.filter_field()
36
+ status: (
37
+ Annotated[
38
+ "NetBoxDNSRecordStatusEnum", strawberry.lazy("netbox_dns.graphql.enums")
39
+ ]
40
+ | None
41
+ ) = strawberry_django.filter_field()
42
+ ttl: (
43
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
44
+ | None
45
+ ) = strawberry_django.filter_field()
46
+ value: FilterLookup[str] | None = strawberry_django.filter_field()
47
+ disable_ptr: FilterLookup[bool] | None = strawberry_django.filter_field()
48
+
49
+ zone_templates: (
50
+ Annotated[
51
+ "NetBoxDNSRecordTemplateFilter",
52
+ strawberry.lazy("netbox_dns.graphql.filters"),
53
+ ]
54
+ | None
55
+ ) = strawberry_django.filter_field()
@@ -0,0 +1,30 @@
1
+ from typing import Annotated, TYPE_CHECKING
2
+
3
+ import strawberry
4
+ import strawberry_django
5
+ from strawberry_django import FilterLookup
6
+
7
+ from netbox.graphql.filter_mixins import NetBoxModelFilterMixin
8
+
9
+ if TYPE_CHECKING:
10
+ from netbox.graphql.filter_lookups import IntegerLookup
11
+
12
+ from netbox_dns.models import Registrar
13
+
14
+
15
+ __all__ = ("NetBoxDNSRegistrarFilter",)
16
+
17
+
18
+ @strawberry_django.filter_type(Registrar, lookups=True)
19
+ class NetBoxDNSRegistrarFilter(NetBoxModelFilterMixin):
20
+ name: FilterLookup[str] | None = strawberry_django.filter_field()
21
+ description: FilterLookup[str] | None = strawberry_django.filter_field()
22
+ iana_id: (
23
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
24
+ | None
25
+ ) = strawberry_django.filter_field()
26
+ address: FilterLookup[str] | None = strawberry_django.filter_field()
27
+ referral_url: FilterLookup[str] | None = strawberry_django.filter_field()
28
+ whois_server: FilterLookup[str] | None = strawberry_django.filter_field()
29
+ abuse_email: FilterLookup[str] | None = strawberry_django.filter_field()
30
+ abuse_phone: FilterLookup[str] | None = strawberry_django.filter_field()
@@ -0,0 +1,27 @@
1
+ import strawberry_django
2
+ from strawberry_django import FilterLookup
3
+
4
+ from netbox.graphql.filter_mixins import NetBoxModelFilterMixin
5
+
6
+ from netbox_dns.models import RegistrationContact
7
+
8
+
9
+ __all__ = ("NetBoxDNSRegistrationContactFilter",)
10
+
11
+
12
+ @strawberry_django.filter_type(RegistrationContact, lookups=True)
13
+ class NetBoxDNSRegistrationContactFilter(NetBoxModelFilterMixin):
14
+ name: FilterLookup[str] | None = strawberry_django.filter_field()
15
+ description: FilterLookup[str] | None = strawberry_django.filter_field()
16
+ contact_id: FilterLookup[str] | None = strawberry_django.filter_field()
17
+ organization: FilterLookup[str] | None = strawberry_django.filter_field()
18
+ street: FilterLookup[str] | None = strawberry_django.filter_field()
19
+ city: FilterLookup[str] | None = strawberry_django.filter_field()
20
+ state_province: FilterLookup[str] | None = strawberry_django.filter_field()
21
+ postal_code: FilterLookup[str] | None = strawberry_django.filter_field()
22
+ country: FilterLookup[str] | None = strawberry_django.filter_field()
23
+ phone: FilterLookup[str] | None = strawberry_django.filter_field()
24
+ phone_ext: FilterLookup[str] | None = strawberry_django.filter_field()
25
+ fax: FilterLookup[str] | None = strawberry_django.filter_field()
26
+ fax_ext: FilterLookup[str] | None = strawberry_django.filter_field()
27
+ email: FilterLookup[str] | None = strawberry_django.filter_field()
@@ -0,0 +1,28 @@
1
+ from typing import Annotated, TYPE_CHECKING
2
+
3
+ import strawberry
4
+ import strawberry_django
5
+ from strawberry_django import FilterLookup
6
+
7
+ from netbox.graphql.filter_mixins import NetBoxModelFilterMixin
8
+ from tenancy.graphql.filter_mixins import ContactFilterMixin, TenancyFilterMixin
9
+
10
+ if TYPE_CHECKING:
11
+ from ipam.graphql.filters import PrefixFilter
12
+
13
+ from netbox_dns.models import View
14
+
15
+
16
+ __all__ = ("NetBoxDNSViewFilter",)
17
+
18
+
19
+ @strawberry_django.filter_type(View, lookups=True)
20
+ class NetBoxDNSViewFilter(
21
+ ContactFilterMixin, TenancyFilterMixin, NetBoxModelFilterMixin
22
+ ):
23
+ name: FilterLookup[str] | None = strawberry_django.filter_field()
24
+ default_view: FilterLookup[bool] | None = strawberry_django.filter_field()
25
+ description: FilterLookup[str] | None = strawberry_django.filter_field()
26
+ prefixes: (
27
+ Annotated["PrefixFilter", strawberry.lazy("ipam.graphql.filters")] | None
28
+ ) = strawberry_django.filter_field()
@@ -0,0 +1,147 @@
1
+ from typing import Annotated, TYPE_CHECKING
2
+
3
+ import strawberry
4
+ import strawberry_django
5
+ from strawberry.scalars import ID
6
+ from strawberry_django import FilterLookup
7
+
8
+ from netbox.graphql.filter_mixins import NetBoxModelFilterMixin
9
+ from tenancy.graphql.filter_mixins import ContactFilterMixin, TenancyFilterMixin
10
+
11
+ if TYPE_CHECKING:
12
+ from netbox.graphql.filter_lookups import IntegerLookup
13
+ from .enums import NetBoxDNSZoneStatusEnum
14
+ from .view import NetBoxDNSViewFilter
15
+ from .nameserver import NetBoxDNSNameServerFilter
16
+ from .registrar import NetBoxDNSRegistrarFilter
17
+ from .registration_contact import NetBoxDNSRegistrationContactFilter
18
+ from .dnssec_policy import NetBoxDNSDNSSECPolicyFilter
19
+
20
+ from netbox_dns.models import Zone
21
+
22
+
23
+ __all__ = ("NetBoxDNSZoneFilter",)
24
+
25
+
26
+ @strawberry_django.filter_type(Zone, lookups=True)
27
+ class NetBoxDNSZoneFilter(
28
+ ContactFilterMixin, TenancyFilterMixin, NetBoxModelFilterMixin
29
+ ):
30
+ name: FilterLookup[str] | None = strawberry_django.filter_field()
31
+ description: FilterLookup[str] | None = strawberry_django.filter_field()
32
+ view: (
33
+ Annotated["NetBoxDNSViewFilter", strawberry.lazy("netbox_dns.graphql.filters")]
34
+ | None
35
+ ) = strawberry_django.filter_field()
36
+ view_id: ID | None = strawberry_django.filter_field()
37
+ nameservers: (
38
+ Annotated[
39
+ "NetBoxDNSNameServerFilter", strawberry.lazy("netbox_dns.graphql.filters")
40
+ ]
41
+ | None
42
+ ) = strawberry_django.filter_field()
43
+ status: (
44
+ Annotated[
45
+ "NetBoxDNSZoneStatusEnum", strawberry.lazy("netbox_dns.graphql.enums")
46
+ ]
47
+ | None
48
+ ) = strawberry_django.filter_field()
49
+ default_ttl: (
50
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
51
+ | None
52
+ ) = strawberry_django.filter_field()
53
+
54
+ soa_ttl: (
55
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
56
+ | None
57
+ ) = strawberry_django.filter_field()
58
+ soa_mname: (
59
+ Annotated[
60
+ "NetBoxDNSNameServerFilter", strawberry.lazy("netbox_dns.graphql.filters")
61
+ ]
62
+ | None
63
+ ) = strawberry_django.filter_field()
64
+ soa_mname_id: ID | None = strawberry_django.filter_field()
65
+ soa_rname: FilterLookup[str] | None = strawberry_django.filter_field()
66
+ soa_serial: (
67
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
68
+ | None
69
+ ) = strawberry_django.filter_field()
70
+ soa_refresh: (
71
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
72
+ | None
73
+ ) = strawberry_django.filter_field()
74
+ soa_retry: (
75
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
76
+ | None
77
+ ) = strawberry_django.filter_field()
78
+ soa_expire: (
79
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
80
+ | None
81
+ ) = strawberry_django.filter_field()
82
+ soa_minimum: (
83
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
84
+ | None
85
+ ) = strawberry_django.filter_field()
86
+ soa_serial_auto: FilterLookup[bool] | None = strawberry_django.filter_field()
87
+
88
+ dnssec_policy: (
89
+ Annotated[
90
+ "NetBoxDNSDNSSECPolicyFilter", strawberry.lazy("netbox_dns.graphql.filters")
91
+ ]
92
+ | None
93
+ )
94
+
95
+ registrar: (
96
+ Annotated[
97
+ "NetBoxDNSRegistrarFilter", strawberry.lazy("netbox_dns.graphql.filters")
98
+ ]
99
+ | None
100
+ )
101
+ registrar_id: ID | None = strawberry_django.filter_field()
102
+ registry_domain_id: FilterLookup[str] | None = strawberry_django.filter_field()
103
+ registrant: (
104
+ Annotated[
105
+ "NetBoxDNSRegistrationContactFilter",
106
+ strawberry.lazy("netbox_dns.graphql.filters"),
107
+ ]
108
+ | None
109
+ )
110
+ registrant_id: ID | None = strawberry_django.filter_field()
111
+ admin_c: (
112
+ Annotated[
113
+ "NetBoxDNSRegistrationContactFilter",
114
+ strawberry.lazy("netbox_dns.graphql.filters"),
115
+ ]
116
+ | None
117
+ )
118
+ admin_c_id: ID | None = strawberry_django.filter_field()
119
+ tech_c: (
120
+ Annotated[
121
+ "NetBoxDNSRegistrationContactFilter",
122
+ strawberry.lazy("netbox_dns.graphql.filters"),
123
+ ]
124
+ | None
125
+ )
126
+ tech_c_id: ID | None = strawberry_django.filter_field()
127
+ billing_c: (
128
+ Annotated[
129
+ "NetBoxDNSRegistrationContactFilter",
130
+ strawberry.lazy("netbox_dns.graphql.filters"),
131
+ ]
132
+ | None
133
+ )
134
+ billing_c_id: ID | None = strawberry_django.filter_field()
135
+
136
+ rfc2317_prefix: FilterLookup[str] | None = strawberry_django.filter_field()
137
+ rfc2317_parent_zone: (
138
+ Annotated["NetBoxDNSZoneFilter", strawberry.lazy("netbox_dns.graphql.filters")]
139
+ | None
140
+ ) = strawberry_django.filter_field()
141
+ rfc2317_parent_zone_id: ID | None = strawberry_django.filter_field()
142
+ rfc2317_parent_managed: FilterLookup[bool] | None = strawberry_django.filter_field()
143
+
144
+ comments: FilterLookup[str] | None = strawberry_django.filter_field()
145
+
146
+ arpa_network: FilterLookup[str] | None = strawberry_django.filter_field()
147
+ active: FilterLookup[bool] | None = strawberry_django.filter_field()
@@ -0,0 +1,97 @@
1
+ from typing import Annotated, TYPE_CHECKING
2
+
3
+ import strawberry
4
+ import strawberry_django
5
+ from strawberry.scalars import ID
6
+ from strawberry_django import FilterLookup
7
+
8
+ from netbox.graphql.filter_mixins import NetBoxModelFilterMixin
9
+ from tenancy.graphql.filter_mixins import ContactFilterMixin, TenancyFilterMixin
10
+
11
+ if TYPE_CHECKING:
12
+ from .enums import NetBoxDNSZoneStatusEnum
13
+ from .nameserver import NetBoxDNSNameServerFilter
14
+ from .record_template import NetBoxDNSRecordTemplateFilter
15
+ from .registrar import NetBoxDNSRegistrarFilter
16
+ from .registration_contact import NetBoxDNSRegistrationContactFilter
17
+
18
+ from netbox_dns.models import ZoneTemplate
19
+
20
+
21
+ __all__ = ("NetBoxDNSZoneTemplateFilter",)
22
+
23
+
24
+ @strawberry_django.filter_type(ZoneTemplate, lookups=True)
25
+ class NetBoxDNSZoneTemplateFilter(
26
+ ContactFilterMixin, TenancyFilterMixin, NetBoxModelFilterMixin
27
+ ):
28
+ name: FilterLookup[str] | None = strawberry_django.filter_field()
29
+ description: FilterLookup[str] | None = strawberry_django.filter_field()
30
+ nameservers: (
31
+ Annotated[
32
+ "NetBoxDNSNameServerFilter", strawberry.lazy("netbox_dns.graphql.filters")
33
+ ]
34
+ | None
35
+ ) = strawberry_django.filter_field()
36
+ status: (
37
+ Annotated[
38
+ "NetBoxDNSZoneStatusEnum", strawberry.lazy("netbox_dns.graphql.enums")
39
+ ]
40
+ | None
41
+ ) = strawberry_django.filter_field()
42
+
43
+ soa_mname: (
44
+ Annotated[
45
+ "NetBoxDNSNameServerFilter", strawberry.lazy("netbox_dns.graphql.filters")
46
+ ]
47
+ | None
48
+ ) = strawberry_django.filter_field()
49
+ soa_mname_id: ID | None = strawberry_django.filter_field()
50
+ soa_rname: FilterLookup[str] | None = strawberry_django.filter_field()
51
+
52
+ registrar: (
53
+ Annotated[
54
+ "NetBoxDNSRegistrarFilter", strawberry.lazy("netbox_dns.graphql.filters")
55
+ ]
56
+ | None
57
+ )
58
+ registrar_id: ID | None = strawberry_django.filter_field()
59
+ registrant: (
60
+ Annotated[
61
+ "NetBoxDNSRegistrationContactFilter",
62
+ strawberry.lazy("netbox_dns.graphql.filters"),
63
+ ]
64
+ | None
65
+ )
66
+ registrant_id: ID | None = strawberry_django.filter_field()
67
+ admin_c: (
68
+ Annotated[
69
+ "NetBoxDNSRegistrationContactFilter",
70
+ strawberry.lazy("netbox_dns.graphql.filters"),
71
+ ]
72
+ | None
73
+ )
74
+ admin_c_id: ID | None = strawberry_django.filter_field()
75
+ tech_c: (
76
+ Annotated[
77
+ "NetBoxDNSRegistrationContactFilter",
78
+ strawberry.lazy("netbox_dns.graphql.filters"),
79
+ ]
80
+ | None
81
+ )
82
+ tech_c_id: ID | None = strawberry_django.filter_field()
83
+ billing_c: (
84
+ Annotated[
85
+ "NetBoxDNSRegistrationContactFilter",
86
+ strawberry.lazy("netbox_dns.graphql.filters"),
87
+ ]
88
+ | None
89
+ )
90
+ billing_c_id: ID | None = strawberry_django.filter_field()
91
+ record_templates: (
92
+ Annotated[
93
+ "NetBoxDNSRecordTemplateFilter",
94
+ strawberry.lazy("netbox_dns.graphql.filters"),
95
+ ]
96
+ | None
97
+ ) = strawberry_django.filter_field()