Skip to content

Commit b7e744e

Browse files
authored
Merge pull request #609 from peteeckel/fix/move-parental-agents-to-zone
Moved the parental_agents field from DNSSECPolicy to Zone
2 parents 4d24c2c + b496346 commit b7e744e

File tree

16 files changed

+105
-83
lines changed

16 files changed

+105
-83
lines changed

netbox_dns/api/serializers_/dnssec_policy.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@ class Meta:
8181
"cds_digest_types",
8282
"parent_ds_ttl",
8383
"parent_propagation_delay",
84-
"parental_agents",
8584
"use_nsec3",
8685
"nsec3_iterations",
8786
"nsec3_opt_out",

netbox_dns/api/serializers_/zone.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,7 @@ class Meta:
190190
"rfc2317_child_zones",
191191
"dnssec_policy",
192192
"inline_signing",
193+
"parental_agents",
193194
"registrar",
194195
"registry_domain_id",
195196
"expiration_date",

netbox_dns/filtersets/dnssec_policy.py

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
import netaddr
2-
from netaddr.core import AddrFormatError
3-
41
import django_filters
52

63
from django.db.models import Q
@@ -38,7 +35,6 @@ class Meta:
3835
"create_cdnskey",
3936
"parent_ds_ttl",
4037
"parent_propagation_delay",
41-
"parental_agents",
4238
"use_nsec3",
4339
"nsec3_iterations",
4440
"nsec3_opt_out",
@@ -88,30 +84,13 @@ class Meta:
8884
to_field_name="id",
8985
label=_("Zone Template IDs"),
9086
)
91-
parental_agents = MultiValueCharFilter(
92-
method="filter_parental_agents",
93-
label=_("Parental Agents"),
94-
)
9587

9688
def filter_cds_digest_types(self, queryset, name, value):
9789
if not value:
9890
return queryset
9991

10092
return queryset.filter(cds_digest_types__overlap=value)
10193

102-
def filter_parental_agents(self, queryset, name, value):
103-
if not value:
104-
return queryset
105-
106-
query_values = []
107-
for v in value:
108-
try:
109-
query_values.append(str(netaddr.IPAddress(v)))
110-
except (AddrFormatError, ValueError):
111-
pass
112-
113-
return queryset.filter(parental_agents__overlap=query_values)
114-
11594
def search(self, queryset, name, value):
11695
if not value.strip():
11796
return queryset

netbox_dns/filtersets/zone.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import netaddr
2+
from netaddr.core import AddrFormatError
23

34
import django_filters
45
from django.db.models import Q
@@ -68,6 +69,10 @@ class ZoneFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
6869
to_field_name="name",
6970
label=_("DNSSEC Policy"),
7071
)
72+
parental_agents = MultiValueCharFilter(
73+
method="filter_parental_agents",
74+
label=_("Parental Agents"),
75+
)
7176
rfc2317_prefix = MultiValueCharFilter(
7277
method="filter_rfc2317_prefix",
7378
label=_("RFC2317 Prefix"),
@@ -167,6 +172,19 @@ class Meta:
167172
"domain_status",
168173
)
169174

175+
def filter_parental_agents(self, queryset, name, value):
176+
if not value:
177+
return queryset
178+
179+
query_values = []
180+
for v in value:
181+
try:
182+
query_values.append(str(netaddr.IPAddress(v)))
183+
except (AddrFormatError, ValueError):
184+
pass
185+
186+
return queryset.filter(parental_agents__overlap=query_values)
187+
170188
def filter_arpa_network(self, queryset, name, value):
171189
if not value:
172190
return queryset

netbox_dns/forms/dnssec_policy.py

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
from packaging.version import Version
22

33
from django import forms
4-
from django.contrib.postgres.forms import SimpleArrayField
54
from django.utils.translation import gettext_lazy as _
65

76
from netbox.forms import (
@@ -66,7 +65,6 @@ class DNSSECPolicyForm(TenancyForm, NetBoxModelForm):
6665
"cds_digest_types",
6766
"parent_ds_ttl",
6867
"parent_propagation_delay",
69-
"parental_agents",
7068
name=_("Parent Delegation"),
7169
),
7270
FieldSet(
@@ -147,11 +145,6 @@ class DNSSECPolicyForm(TenancyForm, NetBoxModelForm):
147145
label=_("Parent Propagation Delay"),
148146
placeholder=DNSSECPolicy.get_fallback_setting("parent_propagation_delay"),
149147
)
150-
parental_agents = SimpleArrayField(
151-
required=False,
152-
base_field=forms.GenericIPAddressField(),
153-
label=_("Parental Agents"),
154-
)
155148

156149
class Meta:
157150
model = DNSSECPolicy
@@ -174,7 +167,6 @@ class Meta:
174167
"cds_digest_types",
175168
"parent_ds_ttl",
176169
"parent_propagation_delay",
177-
"parental_agents",
178170
"use_nsec3",
179171
"nsec3_iterations",
180172
"nsec3_opt_out",
@@ -219,7 +211,6 @@ class DNSSECPolicyFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
219211
"cds_digest_types",
220212
"parent_ds_ttl",
221213
"parent_propagation_delay",
222-
"parental_agents",
223214
name=_("Parent Delegation"),
224215
),
225216
FieldSet(
@@ -320,10 +311,6 @@ class DNSSECPolicyFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
320311
required=False,
321312
label=_("Parent Propagation Delay"),
322313
)
323-
parental_agents = forms.GenericIPAddressField(
324-
required=False,
325-
label=_("Parental Agent"),
326-
)
327314
use_nsec3 = forms.NullBooleanField(
328315
required=False,
329316
widget=forms.Select(choices=BOOLEAN_WITH_BLANK_CHOICES),
@@ -427,7 +414,6 @@ class Meta:
427414
"cds_digest_types",
428415
"parent_ds_ttl",
429416
"parent_propagation_delay",
430-
"parental_agents",
431417
"use_nsec3",
432418
"nsec3_iterations",
433419
"nsec3_opt_out",
@@ -508,11 +494,6 @@ class DNSSECPolicyBulkEditForm(NetBoxModelBulkEditForm):
508494
required=False,
509495
label=_("Parent Propagation Delay"),
510496
)
511-
parental_agents = SimpleArrayField(
512-
required=False,
513-
base_field=forms.GenericIPAddressField(),
514-
label=_("Parental Agents"),
515-
)
516497
use_nsec3 = forms.NullBooleanField(
517498
required=False,
518499
widget=BulkEditNullBooleanSelect(),
@@ -566,7 +547,6 @@ class DNSSECPolicyBulkEditForm(NetBoxModelBulkEditForm):
566547
"cds_digest_types",
567548
"parent_ds_ttl",
568549
"parent_propagation_delay",
569-
"parental_agents",
570550
name=_("Parent Delegation"),
571551
),
572552
FieldSet(

netbox_dns/forms/zone.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from django.conf import settings
66
from django.core.validators import MinValueValidator, MaxValueValidator
77
from django.core.exceptions import ValidationError
8+
from django.contrib.postgres.forms import SimpleArrayField
89
from django.utils.translation import gettext_lazy as _
910

1011
from netbox.forms import (
@@ -242,6 +243,12 @@ class ZoneForm(ZoneTemplateUpdateMixin, TenancyForm, NetBoxModelForm):
242243
label=_("SOA Serial"),
243244
)
244245

246+
parental_agents = SimpleArrayField(
247+
required=False,
248+
base_field=forms.GenericIPAddressField(),
249+
label=_("Parental Agents"),
250+
)
251+
245252
rfc2317_prefix = RFC2317NetworkFormField(
246253
required=False,
247254
validators=[validate_ipv4, validate_prefix, validate_rfc2317],
@@ -282,6 +289,7 @@ class ZoneForm(ZoneTemplateUpdateMixin, TenancyForm, NetBoxModelForm):
282289
FieldSet(
283290
"dnssec_policy",
284291
"inline_signing",
292+
"parental_agents",
285293
name=_("DNSSEC"),
286294
),
287295
FieldSet(
@@ -386,6 +394,7 @@ class Meta:
386394
"rfc2317_parent_managed",
387395
"dnssec_policy",
388396
"inline_signing",
397+
"parental_agents",
389398
"registrar",
390399
"registry_domain_id",
391400
"expiration_date",
@@ -425,6 +434,7 @@ class ZoneFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
425434
FieldSet(
426435
"dnssec_policy_id",
427436
"inline_signing",
437+
"parental_agents",
428438
name=_("DNSSEC"),
429439
),
430440
FieldSet(
@@ -517,6 +527,10 @@ class ZoneFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
517527
widget=forms.Select(choices=BOOLEAN_WITH_BLANK_CHOICES),
518528
label=_("Use Inline Signing"),
519529
)
530+
parental_agents = forms.GenericIPAddressField(
531+
required=False,
532+
label=_("Parental Agent"),
533+
)
520534
registrar_id = DynamicModelMultipleChoiceField(
521535
queryset=Registrar.objects.all(),
522536
required=False,
@@ -756,6 +770,7 @@ class Meta:
756770
"soa_minimum",
757771
"dnssec_policy",
758772
"inline_signing",
773+
"parental_agents",
759774
"rfc2317_prefix",
760775
"rfc2317_parent_managed",
761776
"registrar",
@@ -886,6 +901,11 @@ class ZoneBulkEditForm(NetBoxModelBulkEditForm):
886901
widget=BulkEditNullBooleanSelect(),
887902
label=_("Use Inline Signing"),
888903
)
904+
parental_agents = SimpleArrayField(
905+
required=False,
906+
base_field=forms.GenericIPAddressField(),
907+
label=_("Parental Agents"),
908+
)
889909
registrar = DynamicModelChoiceField(
890910
queryset=Registrar.objects.all(),
891911
required=False,
@@ -962,6 +982,7 @@ class ZoneBulkEditForm(NetBoxModelBulkEditForm):
962982
FieldSet(
963983
"dnssec_policy",
964984
"inline_signing",
985+
"parental_agents",
965986
name=_("DNSSEC"),
966987
),
967988
FieldSet(

netbox_dns/graphql/types.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ class NetBoxDNSZoneType(NetBoxObjectType):
9090
| None
9191
)
9292
inline_signing: bool
93+
parental_agents: List[str]
9394
registrar: (
9495
Annotated["NetBoxDNSRegistrarType", strawberry.lazy("netbox_dns.graphql.types")]
9596
| None
@@ -214,7 +215,6 @@ class NetBoxDNSDNSSECPolicyType(NetBoxObjectType):
214215
cds_digest_types: List[str]
215216
parent_ds_ttl: BigInt | None
216217
parent_propagation_delay: BigInt | None
217-
parental_agents: List[str]
218218
use_nsec3: bool
219219
nsec3_iterations: BigInt | None
220220
nsec3_opt_out: bool
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# Generated by Django 5.1.8 on 2025-04-22 21:45
2+
3+
import django.contrib.postgres.fields
4+
from django.db import migrations, models
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
("netbox_dns", "0019_dnssecpolicy_parental_agents"),
11+
]
12+
13+
operations = [
14+
migrations.RemoveField(
15+
model_name="dnssecpolicy",
16+
name="parental_agents",
17+
),
18+
migrations.AddField(
19+
model_name="zone",
20+
name="parental_agents",
21+
field=django.contrib.postgres.fields.ArrayField(
22+
base_field=models.GenericIPAddressField(),
23+
blank=True,
24+
default=list,
25+
null=True,
26+
size=None,
27+
),
28+
),
29+
]

netbox_dns/models/dnssec_policy.py

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
from django.db import models
22
from django.urls import reverse
3-
from django.contrib.postgres.fields import ArrayField
43
from django.utils.translation import gettext_lazy as _
54

65
from netbox.models import NetBoxModel
@@ -118,14 +117,6 @@ class DNSSECPolicy(ContactsMixin, NetBoxModel):
118117
blank=True,
119118
null=True,
120119
)
121-
parental_agents = ArrayField(
122-
base_field=models.GenericIPAddressField(
123-
protocol="both",
124-
),
125-
blank=True,
126-
null=True,
127-
default=list,
128-
)
129120

130121
use_nsec3 = models.BooleanField(
131122
verbose_name=_("Use NSEC3"),

netbox_dns/models/zone.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
from django.urls import reverse
1818
from django.dispatch import receiver
1919
from django.conf import settings
20+
from django.contrib.postgres.fields import ArrayField
2021
from django.utils.translation import gettext_lazy as _
2122

2223
from netbox.models import NetBoxModel
@@ -193,6 +194,14 @@ def __init__(self, *args, **kwargs):
193194
help_text=_("Use inline signing for DNSSEC"),
194195
default=True,
195196
)
197+
parental_agents = ArrayField(
198+
base_field=models.GenericIPAddressField(
199+
protocol="both",
200+
),
201+
blank=True,
202+
null=True,
203+
default=list,
204+
)
196205
registrar = models.ForeignKey(
197206
verbose_name=_("Registrar"),
198207
to="Registrar",

0 commit comments

Comments
 (0)