netbox-plugin-dns 1.2.11__py3-none-any.whl → 1.3.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 (82) hide show
  1. netbox_dns/__init__.py +2 -2
  2. netbox_dns/api/nested_serializers.py +54 -49
  3. netbox_dns/api/serializers_/dnssec_key_template.py +22 -13
  4. netbox_dns/api/serializers_/dnssec_policy.py +89 -40
  5. netbox_dns/api/serializers_/nameserver.py +25 -13
  6. netbox_dns/api/serializers_/record.py +45 -37
  7. netbox_dns/api/serializers_/record_template.py +21 -12
  8. netbox_dns/api/serializers_/registrar.py +14 -5
  9. netbox_dns/api/serializers_/registration_contact.py +13 -5
  10. netbox_dns/api/serializers_/view.py +28 -19
  11. netbox_dns/api/serializers_/zone.py +87 -63
  12. netbox_dns/api/serializers_/zone_template.py +40 -34
  13. netbox_dns/choices/dnssec_key_template.py +4 -0
  14. netbox_dns/filtersets/dnssec_key_template.py +10 -4
  15. netbox_dns/filtersets/dnssec_policy.py +1 -0
  16. netbox_dns/filtersets/nameserver.py +9 -4
  17. netbox_dns/filtersets/record.py +14 -13
  18. netbox_dns/filtersets/record_template.py +13 -12
  19. netbox_dns/filtersets/registrar.py +1 -0
  20. netbox_dns/filtersets/registration_contact.py +1 -0
  21. netbox_dns/filtersets/view.py +10 -4
  22. netbox_dns/filtersets/zone.py +22 -21
  23. netbox_dns/filtersets/zone_template.py +10 -9
  24. netbox_dns/forms/dnssec_key_template.py +97 -46
  25. netbox_dns/forms/dnssec_policy.py +130 -110
  26. netbox_dns/forms/nameserver.py +71 -36
  27. netbox_dns/forms/record.py +96 -78
  28. netbox_dns/forms/record_template.py +87 -59
  29. netbox_dns/forms/registrar.py +55 -39
  30. netbox_dns/forms/registration_contact.py +64 -41
  31. netbox_dns/forms/view.py +98 -51
  32. netbox_dns/forms/zone.py +259 -250
  33. netbox_dns/forms/zone_template.py +151 -101
  34. netbox_dns/graphql/enums.py +41 -0
  35. netbox_dns/graphql/filter_lookups.py +13 -0
  36. netbox_dns/graphql/filters/__init__.py +12 -0
  37. netbox_dns/graphql/filters/dnssec_key_template.py +63 -0
  38. netbox_dns/graphql/filters/dnssec_policy.py +123 -0
  39. netbox_dns/graphql/filters/nameserver.py +32 -0
  40. netbox_dns/graphql/filters/record.py +89 -0
  41. netbox_dns/graphql/filters/record_template.py +55 -0
  42. netbox_dns/graphql/filters/registrar.py +30 -0
  43. netbox_dns/graphql/filters/registration_contact.py +27 -0
  44. netbox_dns/graphql/filters/view.py +28 -0
  45. netbox_dns/graphql/filters/zone.py +146 -0
  46. netbox_dns/graphql/filters/zone_template.py +97 -0
  47. netbox_dns/models/dnssec_key_template.py +24 -27
  48. netbox_dns/models/dnssec_policy.py +17 -21
  49. netbox_dns/models/nameserver.py +26 -30
  50. netbox_dns/models/record.py +42 -46
  51. netbox_dns/models/record_template.py +30 -34
  52. netbox_dns/models/registrar.py +13 -17
  53. netbox_dns/models/registration_contact.py +33 -37
  54. netbox_dns/models/view.py +16 -20
  55. netbox_dns/models/zone.py +75 -78
  56. netbox_dns/models/zone_template.py +35 -39
  57. netbox_dns/tables/dnssec_key_template.py +13 -12
  58. netbox_dns/tables/dnssec_policy.py +18 -15
  59. netbox_dns/tables/nameserver.py +10 -8
  60. netbox_dns/tables/record.py +29 -21
  61. netbox_dns/tables/record_template.py +21 -17
  62. netbox_dns/tables/registrar.py +15 -9
  63. netbox_dns/tables/registration_contact.py +15 -9
  64. netbox_dns/tables/view.py +24 -12
  65. netbox_dns/tables/zone.py +23 -21
  66. netbox_dns/tables/zone_template.py +17 -13
  67. netbox_dns/views/dnssec_key_template.py +0 -9
  68. netbox_dns/views/dnssec_policy.py +0 -9
  69. netbox_dns/views/nameserver.py +0 -9
  70. netbox_dns/views/record.py +0 -9
  71. netbox_dns/views/record_template.py +0 -3
  72. netbox_dns/views/registrar.py +0 -3
  73. netbox_dns/views/registration_contact.py +0 -3
  74. netbox_dns/views/view.py +0 -9
  75. netbox_dns/views/zone.py +0 -10
  76. netbox_dns/views/zone_template.py +0 -4
  77. {netbox_plugin_dns-1.2.11.dist-info → netbox_plugin_dns-1.3.0.dist-info}/METADATA +4 -2
  78. {netbox_plugin_dns-1.2.11.dist-info → netbox_plugin_dns-1.3.0.dist-info}/RECORD +81 -69
  79. netbox_dns/graphql/filters.py +0 -88
  80. {netbox_plugin_dns-1.2.11.dist-info → netbox_plugin_dns-1.3.0.dist-info}/WHEEL +0 -0
  81. {netbox_plugin_dns-1.2.11.dist-info → netbox_plugin_dns-1.3.0.dist-info}/licenses/LICENSE +0 -0
  82. {netbox_plugin_dns-1.2.11.dist-info → netbox_plugin_dns-1.3.0.dist-info}/top_level.txt +0 -0
@@ -21,6 +21,64 @@ __all__ = ("ZoneSerializer",)
21
21
 
22
22
 
23
23
  class ZoneSerializer(NetBoxModelSerializer):
24
+ class Meta:
25
+ model = Zone
26
+
27
+ fields = (
28
+ "id",
29
+ "url",
30
+ "name",
31
+ "view",
32
+ "display",
33
+ "nameservers",
34
+ "status",
35
+ "description",
36
+ "tags",
37
+ "created",
38
+ "last_updated",
39
+ "default_ttl",
40
+ "soa_ttl",
41
+ "soa_mname",
42
+ "soa_rname",
43
+ "soa_serial",
44
+ "soa_serial_auto",
45
+ "soa_refresh",
46
+ "soa_retry",
47
+ "soa_expire",
48
+ "soa_minimum",
49
+ "rfc2317_prefix",
50
+ "rfc2317_parent_managed",
51
+ "rfc2317_parent_zone",
52
+ "rfc2317_child_zones",
53
+ "dnssec_policy",
54
+ "inline_signing",
55
+ "parental_agents",
56
+ "registrar",
57
+ "registry_domain_id",
58
+ "expiration_date",
59
+ "domain_status",
60
+ "registrant",
61
+ "tech_c",
62
+ "admin_c",
63
+ "billing_c",
64
+ "active",
65
+ "custom_fields",
66
+ "tenant",
67
+ "template",
68
+ )
69
+
70
+ brief_fields = (
71
+ "id",
72
+ "url",
73
+ "name",
74
+ "view",
75
+ "display",
76
+ "status",
77
+ "description",
78
+ "rfc2317_prefix",
79
+ "active",
80
+ )
81
+
24
82
  url = serializers.HyperlinkedIdentityField(
25
83
  view_name="plugins-api:netbox_dns-api:zone-detail"
26
84
  )
@@ -39,8 +97,14 @@ class ZoneSerializer(NetBoxModelSerializer):
39
97
  required=False,
40
98
  help_text=_("Nameservers for the zone"),
41
99
  )
42
- default_ttl = TimePeriodField(required=False, allow_null=True)
43
- soa_ttl = TimePeriodField(required=False, allow_null=True)
100
+ default_ttl = TimePeriodField(
101
+ required=False,
102
+ allow_null=True,
103
+ )
104
+ soa_ttl = TimePeriodField(
105
+ required=False,
106
+ allow_null=True,
107
+ )
44
108
  soa_mname = NameServerSerializer(
45
109
  nested=True,
46
110
  many=False,
@@ -54,10 +118,22 @@ class ZoneSerializer(NetBoxModelSerializer):
54
118
  required=False,
55
119
  help_text=_("Contact email for the zone"),
56
120
  )
57
- soa_refresh = TimePeriodField(required=False, allow_null=True)
58
- soa_retry = TimePeriodField(required=False, allow_null=True)
59
- soa_expire = TimePeriodField(required=False, allow_null=True)
60
- soa_minimum = TimePeriodField(required=False, allow_null=True)
121
+ soa_refresh = TimePeriodField(
122
+ required=False,
123
+ allow_null=True,
124
+ )
125
+ soa_retry = TimePeriodField(
126
+ required=False,
127
+ allow_null=True,
128
+ )
129
+ soa_expire = TimePeriodField(
130
+ required=False,
131
+ allow_null=True,
132
+ )
133
+ soa_minimum = TimePeriodField(
134
+ required=False,
135
+ allow_null=True,
136
+ )
61
137
  rfc2317_parent_zone = NestedZoneSerializer(
62
138
  many=False,
63
139
  read_only=True,
@@ -124,7 +200,11 @@ class ZoneSerializer(NetBoxModelSerializer):
124
200
  read_only=True,
125
201
  allow_null=True,
126
202
  )
127
- tenant = TenantSerializer(nested=True, required=False, allow_null=True)
203
+ tenant = TenantSerializer(
204
+ nested=True,
205
+ required=False,
206
+ allow_null=True,
207
+ )
128
208
 
129
209
  def validate(self, data):
130
210
  if isinstance(data, dict) and (template := data.get("template")) is not None:
@@ -159,59 +239,3 @@ class ZoneSerializer(NetBoxModelSerializer):
159
239
  template.apply_to_zone_relations(zone)
160
240
 
161
241
  return zone
162
-
163
- class Meta:
164
- model = Zone
165
- fields = (
166
- "id",
167
- "url",
168
- "name",
169
- "view",
170
- "display",
171
- "nameservers",
172
- "status",
173
- "description",
174
- "tags",
175
- "created",
176
- "last_updated",
177
- "default_ttl",
178
- "soa_ttl",
179
- "soa_mname",
180
- "soa_rname",
181
- "soa_serial",
182
- "soa_serial_auto",
183
- "soa_refresh",
184
- "soa_retry",
185
- "soa_expire",
186
- "soa_minimum",
187
- "rfc2317_prefix",
188
- "rfc2317_parent_managed",
189
- "rfc2317_parent_zone",
190
- "rfc2317_child_zones",
191
- "dnssec_policy",
192
- "inline_signing",
193
- "parental_agents",
194
- "registrar",
195
- "registry_domain_id",
196
- "expiration_date",
197
- "domain_status",
198
- "registrant",
199
- "tech_c",
200
- "admin_c",
201
- "billing_c",
202
- "active",
203
- "custom_fields",
204
- "tenant",
205
- "template",
206
- )
207
- brief_fields = (
208
- "id",
209
- "url",
210
- "name",
211
- "view",
212
- "display",
213
- "status",
214
- "description",
215
- "rfc2317_prefix",
216
- "active",
217
- )
@@ -17,6 +17,41 @@ __all__ = ("ZoneTemplateSerializer",)
17
17
 
18
18
 
19
19
  class ZoneTemplateSerializer(NetBoxModelSerializer):
20
+ class Meta:
21
+ model = ZoneTemplate
22
+
23
+ fields = (
24
+ "id",
25
+ "url",
26
+ "name",
27
+ "description",
28
+ "display",
29
+ "nameservers",
30
+ "soa_mname",
31
+ "soa_rname",
32
+ "dnssec_policy",
33
+ "registrar",
34
+ "registrant",
35
+ "tech_c",
36
+ "admin_c",
37
+ "billing_c",
38
+ "active",
39
+ "tags",
40
+ "created",
41
+ "last_updated",
42
+ "custom_fields",
43
+ "tenant",
44
+ "record_templates",
45
+ )
46
+
47
+ brief_fields = (
48
+ "id",
49
+ "url",
50
+ "name",
51
+ "display",
52
+ "description",
53
+ )
54
+
20
55
  url = serializers.HyperlinkedIdentityField(
21
56
  view_name="plugins-api:netbox_dns-api:zonetemplate-detail"
22
57
  )
@@ -87,7 +122,11 @@ class ZoneTemplateSerializer(NetBoxModelSerializer):
87
122
  read_only=True,
88
123
  allow_null=True,
89
124
  )
90
- tenant = TenantSerializer(nested=True, required=False, allow_null=True)
125
+ tenant = TenantSerializer(
126
+ nested=True,
127
+ required=False,
128
+ allow_null=True,
129
+ )
91
130
 
92
131
  def create(self, validated_data):
93
132
  nameservers = validated_data.pop("nameservers", None)
@@ -114,36 +153,3 @@ class ZoneTemplateSerializer(NetBoxModelSerializer):
114
153
  zone_template.record_templates.set(record_templates)
115
154
 
116
155
  return zone_template
117
-
118
- class Meta:
119
- model = ZoneTemplate
120
- fields = (
121
- "id",
122
- "url",
123
- "name",
124
- "description",
125
- "display",
126
- "nameservers",
127
- "soa_mname",
128
- "soa_rname",
129
- "dnssec_policy",
130
- "registrar",
131
- "registrant",
132
- "tech_c",
133
- "admin_c",
134
- "billing_c",
135
- "active",
136
- "tags",
137
- "created",
138
- "last_updated",
139
- "custom_fields",
140
- "tenant",
141
- "record_templates",
142
- )
143
- brief_fields = (
144
- "id",
145
- "url",
146
- "name",
147
- "display",
148
- "description",
149
- )
@@ -53,6 +53,10 @@ class DNSSECKeyTemplateKeySizeChoices(ChoiceSet):
53
53
  (SIZE_4096, 4096),
54
54
  ]
55
55
 
56
+ @classmethod
57
+ def as_enum(cls):
58
+ return super().as_enum(prefix="SIZE")
59
+
56
60
 
57
61
  @initialize_choice_names
58
62
  class DNSSECKeyTemplateAlgorithmChoices(ChoiceSet):
@@ -17,6 +17,16 @@ __all__ = ("DNSSECKeyTemplateFilterSet",)
17
17
 
18
18
 
19
19
  class DNSSECKeyTemplateFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
20
+ class Meta:
21
+ model = DNSSECKeyTemplate
22
+
23
+ fields = (
24
+ "id",
25
+ "name",
26
+ "description",
27
+ "lifetime",
28
+ )
29
+
20
30
  type = django_filters.MultipleChoiceFilter(
21
31
  choices=DNSSECKeyTemplateTypeChoices,
22
32
  )
@@ -40,10 +50,6 @@ class DNSSECKeyTemplateFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
40
50
  label=_("DNSSEC Policies"),
41
51
  )
42
52
 
43
- class Meta:
44
- model = DNSSECKeyTemplate
45
- fields = ("id", "name", "description", "lifetime")
46
-
47
53
  def search(self, queryset, name, value):
48
54
  if not value.strip():
49
55
  return queryset
@@ -17,6 +17,7 @@ __all__ = ("DNSSECPolicyFilterSet",)
17
17
  class DNSSECPolicyFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
18
18
  class Meta:
19
19
  model = DNSSECPolicy
20
+
20
21
  fields = (
21
22
  "id",
22
23
  "name",
@@ -12,6 +12,15 @@ __all__ = ("NameServerFilterSet",)
12
12
 
13
13
 
14
14
  class NameServerFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
15
+ class Meta:
16
+ model = NameServer
17
+
18
+ fields = (
19
+ "id",
20
+ "name",
21
+ "description",
22
+ )
23
+
15
24
  zone_id = django_filters.ModelMultipleChoiceFilter(
16
25
  field_name="zones",
17
26
  queryset=Zone.objects.all(),
@@ -24,10 +33,6 @@ class NameServerFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
24
33
  label=_("SOA Zones"),
25
34
  )
26
35
 
27
- class Meta:
28
- model = NameServer
29
- fields = ("id", "name", "description")
30
-
31
36
  def search(self, queryset, name, value):
32
37
  if not value.strip():
33
38
  return queryset
@@ -18,6 +18,20 @@ __all__ = ("RecordFilterSet",)
18
18
 
19
19
 
20
20
  class RecordFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
21
+ class Meta:
22
+ model = Record
23
+
24
+ fields = (
25
+ "id",
26
+ "name",
27
+ "fqdn",
28
+ "description",
29
+ "ttl",
30
+ "value",
31
+ "disable_ptr",
32
+ "managed",
33
+ )
34
+
21
35
  fqdn = MultiValueCharFilter(
22
36
  method="filter_fqdn",
23
37
  )
@@ -82,19 +96,6 @@ class RecordFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
82
96
 
83
97
  managed = django_filters.BooleanFilter()
84
98
 
85
- class Meta:
86
- model = Record
87
- fields = (
88
- "id",
89
- "name",
90
- "fqdn",
91
- "description",
92
- "ttl",
93
- "value",
94
- "disable_ptr",
95
- "managed",
96
- )
97
-
98
99
  def filter_fqdn(self, queryset, name, value):
99
100
  if not value:
100
101
  return queryset
@@ -13,6 +13,19 @@ __all__ = ("RecordTemplateFilterSet",)
13
13
 
14
14
 
15
15
  class RecordTemplateFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
16
+ class Meta:
17
+ model = RecordTemplate
18
+
19
+ fields = (
20
+ "id",
21
+ "name",
22
+ "record_name",
23
+ "value",
24
+ "description",
25
+ "ttl",
26
+ "disable_ptr",
27
+ )
28
+
16
29
  type = django_filters.MultipleChoiceFilter(
17
30
  choices=RecordTypeChoices,
18
31
  )
@@ -32,18 +45,6 @@ class RecordTemplateFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
32
45
  label=_("Zone Template ID"),
33
46
  )
34
47
 
35
- class Meta:
36
- model = RecordTemplate
37
- fields = (
38
- "id",
39
- "name",
40
- "record_name",
41
- "value",
42
- "description",
43
- "ttl",
44
- "disable_ptr",
45
- )
46
-
47
48
  def search(self, queryset, name, value):
48
49
  if not value.strip():
49
50
  return queryset
@@ -11,6 +11,7 @@ __all__ = ("RegistrarFilterSet",)
11
11
  class RegistrarFilterSet(NetBoxModelFilterSet):
12
12
  class Meta:
13
13
  model = Registrar
14
+
14
15
  fields = (
15
16
  "id",
16
17
  "name",
@@ -11,6 +11,7 @@ __all__ = ("RegistrationContactFilterSet",)
11
11
  class RegistrationContactFilterSet(NetBoxModelFilterSet):
12
12
  class Meta:
13
13
  model = RegistrationContact
14
+
14
15
  fields = (
15
16
  "id",
16
17
  "name",
@@ -14,6 +14,16 @@ __all__ = ("ViewFilterSet",)
14
14
 
15
15
 
16
16
  class ViewFilterSet(NetBoxModelFilterSet, TenancyFilterSet):
17
+ class Meta:
18
+ model = View
19
+
20
+ fields = (
21
+ "id",
22
+ "name",
23
+ "default_view",
24
+ "description",
25
+ )
26
+
17
27
  prefix_id = django_filters.ModelMultipleChoiceFilter(
18
28
  queryset=Prefix.objects.all(),
19
29
  field_name="prefixes",
@@ -27,10 +37,6 @@ class ViewFilterSet(NetBoxModelFilterSet, TenancyFilterSet):
27
37
  label=_("Prefix"),
28
38
  )
29
39
 
30
- class Meta:
31
- model = View
32
- fields = ("id", "name", "default_view", "description")
33
-
34
40
  def search(self, queryset, name, value):
35
41
  if not value.strip():
36
42
  return queryset
@@ -24,6 +24,28 @@ __all__ = ("ZoneFilterSet",)
24
24
 
25
25
 
26
26
  class ZoneFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
27
+ class Meta:
28
+ model = Zone
29
+
30
+ fields = (
31
+ "id",
32
+ "name",
33
+ "description",
34
+ "default_ttl",
35
+ "soa_ttl",
36
+ "soa_rname",
37
+ "soa_serial",
38
+ "soa_refresh",
39
+ "soa_retry",
40
+ "soa_expire",
41
+ "soa_minimum",
42
+ "soa_serial_auto",
43
+ "rfc2317_parent_managed",
44
+ "inline_signing",
45
+ "registry_domain_id",
46
+ "domain_status",
47
+ )
48
+
27
49
  status = django_filters.MultipleChoiceFilter(
28
50
  choices=ZoneStatusChoices,
29
51
  )
@@ -151,27 +173,6 @@ class ZoneFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
151
173
  label=_("Zone is active"),
152
174
  )
153
175
 
154
- class Meta:
155
- model = Zone
156
- fields = (
157
- "id",
158
- "name",
159
- "description",
160
- "default_ttl",
161
- "soa_ttl",
162
- "soa_rname",
163
- "soa_serial",
164
- "soa_refresh",
165
- "soa_retry",
166
- "soa_expire",
167
- "soa_minimum",
168
- "soa_serial_auto",
169
- "rfc2317_parent_managed",
170
- "inline_signing",
171
- "registry_domain_id",
172
- "domain_status",
173
- )
174
-
175
176
  def filter_parental_agents(self, queryset, name, value):
176
177
  if not value:
177
178
  return queryset
@@ -20,6 +20,16 @@ __all__ = ("ZoneTemplateFilterSet",)
20
20
 
21
21
 
22
22
  class ZoneTemplateFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
23
+ class Meta:
24
+ model = ZoneTemplate
25
+
26
+ fields = (
27
+ "id",
28
+ "name",
29
+ "description",
30
+ "soa_rname",
31
+ )
32
+
23
33
  record_template_id = django_filters.ModelMultipleChoiceFilter(
24
34
  queryset=RecordTemplate.objects.all(),
25
35
  field_name="record_templates",
@@ -117,15 +127,6 @@ class ZoneTemplateFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
117
127
  label=_("Billing Contact"),
118
128
  )
119
129
 
120
- class Meta:
121
- model = ZoneTemplate
122
- fields = (
123
- "id",
124
- "name",
125
- "description",
126
- "soa_rname",
127
- )
128
-
129
130
  def search(self, queryset, name, value):
130
131
  if not value.strip():
131
132
  return queryset