netbox-plugin-dns 1.3b1__py3-none-any.whl → 1.3.1__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.
- netbox_dns/__init__.py +3 -2
- netbox_dns/api/nested_serializers.py +54 -49
- netbox_dns/api/serializers_/dnssec_key_template.py +22 -13
- netbox_dns/api/serializers_/dnssec_policy.py +89 -40
- netbox_dns/api/serializers_/nameserver.py +25 -13
- netbox_dns/api/serializers_/record.py +46 -38
- netbox_dns/api/serializers_/record_template.py +21 -12
- netbox_dns/api/serializers_/registrar.py +14 -5
- netbox_dns/api/serializers_/registration_contact.py +13 -5
- netbox_dns/api/serializers_/view.py +28 -19
- netbox_dns/api/serializers_/zone.py +87 -62
- netbox_dns/api/serializers_/zone_template.py +40 -34
- netbox_dns/choices/dnssec_key_template.py +4 -0
- netbox_dns/choices/record.py +4 -2
- netbox_dns/filtersets/dnssec_key_template.py +10 -4
- netbox_dns/filtersets/dnssec_policy.py +2 -0
- netbox_dns/filtersets/nameserver.py +9 -4
- netbox_dns/filtersets/record.py +16 -15
- netbox_dns/filtersets/record_template.py +13 -12
- netbox_dns/filtersets/registrar.py +1 -0
- netbox_dns/filtersets/registration_contact.py +1 -0
- netbox_dns/filtersets/view.py +10 -4
- netbox_dns/filtersets/zone.py +39 -20
- netbox_dns/filtersets/zone_template.py +10 -9
- netbox_dns/forms/dnssec_key_template.py +97 -46
- netbox_dns/forms/dnssec_policy.py +124 -105
- netbox_dns/forms/nameserver.py +71 -36
- netbox_dns/forms/record.py +96 -78
- netbox_dns/forms/record_template.py +87 -59
- netbox_dns/forms/registrar.py +55 -39
- netbox_dns/forms/registration_contact.py +64 -41
- netbox_dns/forms/view.py +98 -51
- netbox_dns/forms/zone.py +273 -243
- netbox_dns/forms/zone_template.py +151 -101
- netbox_dns/graphql/types.py +3 -3
- netbox_dns/locale/de/LC_MESSAGES/django.mo +0 -0
- netbox_dns/locale/fr/LC_MESSAGES/django.mo +0 -0
- netbox_dns/migrations/0019_dnssecpolicy_parental_agents.py +25 -0
- netbox_dns/migrations/0020_remove_dnssecpolicy_parental_agents_and_more.py +29 -0
- netbox_dns/migrations/0021_alter_record_ptr_record.py +25 -0
- netbox_dns/models/dnssec_key_template.py +24 -22
- netbox_dns/models/dnssec_policy.py +17 -16
- netbox_dns/models/nameserver.py +26 -25
- netbox_dns/models/record.py +117 -61
- netbox_dns/models/record_template.py +30 -29
- netbox_dns/models/registrar.py +13 -12
- netbox_dns/models/registration_contact.py +33 -32
- netbox_dns/models/view.py +16 -15
- netbox_dns/models/zone.py +88 -57
- netbox_dns/models/zone_template.py +35 -34
- netbox_dns/tables/dnssec_key_template.py +13 -12
- netbox_dns/tables/dnssec_policy.py +18 -15
- netbox_dns/tables/nameserver.py +10 -8
- netbox_dns/tables/record.py +55 -34
- netbox_dns/tables/record_template.py +21 -17
- netbox_dns/tables/registrar.py +15 -9
- netbox_dns/tables/registration_contact.py +15 -9
- netbox_dns/tables/view.py +25 -12
- netbox_dns/tables/zone.py +23 -21
- netbox_dns/tables/zone_template.py +17 -13
- netbox_dns/template_content.py +13 -2
- netbox_dns/templates/netbox_dns/record.html +13 -11
- netbox_dns/templates/netbox_dns/zone.html +10 -0
- netbox_dns/validators/dns_name.py +1 -1
- netbox_dns/views/dnssec_key_template.py +3 -3
- netbox_dns/views/record.py +19 -3
- netbox_dns/views/record_template.py +3 -1
- netbox_dns/views/zone_template.py +5 -3
- {netbox_plugin_dns-1.3b1.dist-info → netbox_plugin_dns-1.3.1.dist-info}/METADATA +3 -2
- {netbox_plugin_dns-1.3b1.dist-info → netbox_plugin_dns-1.3.1.dist-info}/RECORD +73 -70
- {netbox_plugin_dns-1.3b1.dist-info → netbox_plugin_dns-1.3.1.dist-info}/WHEEL +1 -1
- {netbox_plugin_dns-1.3b1.dist-info → netbox_plugin_dns-1.3.1.dist-info}/licenses/LICENSE +0 -0
- {netbox_plugin_dns-1.3b1.dist-info → netbox_plugin_dns-1.3.1.dist-info}/top_level.txt +0 -0
netbox_dns/forms/zone.py
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
from packaging.version import Version
|
|
2
|
-
|
|
3
1
|
from django import forms
|
|
4
2
|
from django.db import transaction
|
|
5
3
|
from django.conf import settings
|
|
6
4
|
from django.core.validators import MinValueValidator, MaxValueValidator
|
|
7
5
|
from django.core.exceptions import ValidationError
|
|
6
|
+
from django.contrib.postgres.forms import SimpleArrayField
|
|
8
7
|
from django.utils.translation import gettext_lazy as _
|
|
9
8
|
|
|
10
9
|
from netbox.forms import (
|
|
@@ -22,7 +21,6 @@ from utilities.forms.fields import (
|
|
|
22
21
|
CSVModelMultipleChoiceField,
|
|
23
22
|
DynamicModelChoiceField,
|
|
24
23
|
)
|
|
25
|
-
from utilities.release import load_release_data
|
|
26
24
|
from utilities.forms.widgets import BulkEditNullBooleanSelect, DatePicker
|
|
27
25
|
from utilities.forms.rendering import FieldSet
|
|
28
26
|
from utilities.forms import BOOLEAN_WITH_BLANK_CHOICES, add_blank_choice
|
|
@@ -51,8 +49,6 @@ __all__ = (
|
|
|
51
49
|
"ZoneBulkEditForm",
|
|
52
50
|
)
|
|
53
51
|
|
|
54
|
-
QUICK_ADD = Version(load_release_data().version) >= Version("4.2.5")
|
|
55
|
-
|
|
56
52
|
|
|
57
53
|
class RollbackTransaction(Exception):
|
|
58
54
|
pass
|
|
@@ -153,108 +149,59 @@ class ZoneTemplateUpdateMixin:
|
|
|
153
149
|
|
|
154
150
|
|
|
155
151
|
class ZoneForm(ZoneTemplateUpdateMixin, TenancyForm, NetBoxModelForm):
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
required=True,
|
|
159
|
-
label=_("View"),
|
|
160
|
-
quick_add=QUICK_ADD,
|
|
161
|
-
)
|
|
162
|
-
name = forms.CharField(
|
|
163
|
-
required=True,
|
|
164
|
-
label=_("Name"),
|
|
165
|
-
)
|
|
166
|
-
template = DynamicModelChoiceField(
|
|
167
|
-
queryset=ZoneTemplate.objects.all(),
|
|
168
|
-
required=False,
|
|
169
|
-
label=_("Template"),
|
|
170
|
-
)
|
|
171
|
-
status = forms.ChoiceField(
|
|
172
|
-
choices=ZoneStatusChoices,
|
|
173
|
-
required=False,
|
|
174
|
-
label=_("Status"),
|
|
175
|
-
)
|
|
176
|
-
nameservers = DynamicModelMultipleChoiceField(
|
|
177
|
-
queryset=NameServer.objects.all(),
|
|
178
|
-
required=False,
|
|
179
|
-
label=_("Nameservers"),
|
|
180
|
-
quick_add=QUICK_ADD,
|
|
181
|
-
)
|
|
182
|
-
default_ttl = TimePeriodField(
|
|
183
|
-
required=False,
|
|
184
|
-
help_text=_("Default TTL for new records in this zone"),
|
|
185
|
-
validators=[MinValueValidator(1)],
|
|
186
|
-
label=_("Default TTL"),
|
|
187
|
-
)
|
|
188
|
-
description = forms.CharField(
|
|
189
|
-
required=False,
|
|
190
|
-
label=_("Description"),
|
|
191
|
-
)
|
|
192
|
-
soa_ttl = TimePeriodField(
|
|
193
|
-
required=True,
|
|
194
|
-
help_text=_("TTL for the SOA record of the zone"),
|
|
195
|
-
validators=[MinValueValidator(1)],
|
|
196
|
-
label=_("SOA TTL"),
|
|
197
|
-
)
|
|
198
|
-
soa_mname = DynamicModelChoiceField(
|
|
199
|
-
queryset=NameServer.objects.all(),
|
|
200
|
-
help_text=_("Primary nameserver this zone"),
|
|
201
|
-
required=False,
|
|
202
|
-
label=_("SOA MName"),
|
|
203
|
-
quick_add=QUICK_ADD,
|
|
204
|
-
)
|
|
205
|
-
soa_rname = forms.CharField(
|
|
206
|
-
required=False,
|
|
207
|
-
help_text=_("Mailbox of the zone's administrator"),
|
|
208
|
-
label=_("SOA RName"),
|
|
209
|
-
)
|
|
210
|
-
soa_refresh = TimePeriodField(
|
|
211
|
-
required=True,
|
|
212
|
-
help_text=_("Refresh interval for secondary nameservers"),
|
|
213
|
-
validators=[MinValueValidator(1)],
|
|
214
|
-
label=_("SOA Refresh"),
|
|
215
|
-
)
|
|
216
|
-
soa_retry = TimePeriodField(
|
|
217
|
-
required=True,
|
|
218
|
-
help_text=_("Retry interval for secondary nameservers"),
|
|
219
|
-
validators=[MinValueValidator(1)],
|
|
220
|
-
label=_("SOA Retry"),
|
|
221
|
-
)
|
|
222
|
-
soa_expire = TimePeriodField(
|
|
223
|
-
required=True,
|
|
224
|
-
validators=[MinValueValidator(1)],
|
|
225
|
-
help_text=_("Expire time after which the zone is considered unavailable"),
|
|
226
|
-
label=_("SOA Expire"),
|
|
227
|
-
)
|
|
228
|
-
soa_minimum = TimePeriodField(
|
|
229
|
-
required=True,
|
|
230
|
-
help_text=_("Minimum TTL for negative results, e.g. NXRRSET, NXDOMAIN"),
|
|
231
|
-
validators=[MinValueValidator(1)],
|
|
232
|
-
label=_("SOA Minimum TTL"),
|
|
233
|
-
)
|
|
234
|
-
soa_serial_auto = forms.BooleanField(
|
|
235
|
-
required=False,
|
|
236
|
-
help_text=_("Automatically generate the SOA serial number"),
|
|
237
|
-
label=_("Generate SOA Serial"),
|
|
238
|
-
)
|
|
239
|
-
soa_serial = forms.IntegerField(
|
|
240
|
-
required=False,
|
|
241
|
-
validators=[MinValueValidator(1)],
|
|
242
|
-
label=_("SOA Serial"),
|
|
243
|
-
)
|
|
152
|
+
class Meta:
|
|
153
|
+
model = Zone
|
|
244
154
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
"
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
155
|
+
fields = (
|
|
156
|
+
"name",
|
|
157
|
+
"view",
|
|
158
|
+
"status",
|
|
159
|
+
"template",
|
|
160
|
+
"nameservers",
|
|
161
|
+
"default_ttl",
|
|
162
|
+
"description",
|
|
163
|
+
"soa_ttl",
|
|
164
|
+
"soa_mname",
|
|
165
|
+
"soa_rname",
|
|
166
|
+
"soa_serial_auto",
|
|
167
|
+
"soa_serial",
|
|
168
|
+
"soa_refresh",
|
|
169
|
+
"soa_retry",
|
|
170
|
+
"soa_expire",
|
|
171
|
+
"soa_minimum",
|
|
172
|
+
"rfc2317_prefix",
|
|
173
|
+
"rfc2317_parent_managed",
|
|
174
|
+
"dnssec_policy",
|
|
175
|
+
"inline_signing",
|
|
176
|
+
"parental_agents",
|
|
177
|
+
"registrar",
|
|
178
|
+
"registry_domain_id",
|
|
179
|
+
"expiration_date",
|
|
180
|
+
"domain_status",
|
|
181
|
+
"registrant",
|
|
182
|
+
"admin_c",
|
|
183
|
+
"tech_c",
|
|
184
|
+
"billing_c",
|
|
185
|
+
"tenant_group",
|
|
186
|
+
"tenant",
|
|
187
|
+
"tags",
|
|
188
|
+
)
|
|
189
|
+
|
|
190
|
+
labels = {
|
|
191
|
+
"soa_serial_auto": _("Generate SOA Serial"),
|
|
192
|
+
"rfc2317_parent_managed": _("RFC2317 Parent Managed"),
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
help_texts = {
|
|
196
|
+
"soa_serial_auto": _("Automatically generate the SOA serial number"),
|
|
197
|
+
"rfc2317_parent_managed": _(
|
|
198
|
+
"IPv4 reverse zone for delegating the RFC2317 PTR records is managed in NetBox DNS"
|
|
199
|
+
),
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
widgets = {
|
|
203
|
+
"expiration_date": DatePicker,
|
|
204
|
+
}
|
|
258
205
|
|
|
259
206
|
fieldsets = (
|
|
260
207
|
FieldSet(
|
|
@@ -282,6 +229,7 @@ class ZoneForm(ZoneTemplateUpdateMixin, TenancyForm, NetBoxModelForm):
|
|
|
282
229
|
FieldSet(
|
|
283
230
|
"dnssec_policy",
|
|
284
231
|
"inline_signing",
|
|
232
|
+
"parental_agents",
|
|
285
233
|
name=_("DNSSEC"),
|
|
286
234
|
),
|
|
287
235
|
FieldSet(
|
|
@@ -300,8 +248,15 @@ class ZoneForm(ZoneTemplateUpdateMixin, TenancyForm, NetBoxModelForm):
|
|
|
300
248
|
"billing_c",
|
|
301
249
|
name=_("Domain Registration"),
|
|
302
250
|
),
|
|
303
|
-
FieldSet(
|
|
304
|
-
|
|
251
|
+
FieldSet(
|
|
252
|
+
"tenant_group",
|
|
253
|
+
"tenant",
|
|
254
|
+
name=_("Tenancy"),
|
|
255
|
+
),
|
|
256
|
+
FieldSet(
|
|
257
|
+
"tags",
|
|
258
|
+
name=_("Tags"),
|
|
259
|
+
),
|
|
305
260
|
)
|
|
306
261
|
|
|
307
262
|
def __init__(self, *args, **kwargs):
|
|
@@ -348,6 +303,96 @@ class ZoneForm(ZoneTemplateUpdateMixin, TenancyForm, NetBoxModelForm):
|
|
|
348
303
|
name__in=default_nameservers
|
|
349
304
|
)
|
|
350
305
|
|
|
306
|
+
view = DynamicModelChoiceField(
|
|
307
|
+
queryset=View.objects.all(),
|
|
308
|
+
required=True,
|
|
309
|
+
label=_("View"),
|
|
310
|
+
)
|
|
311
|
+
name = forms.CharField(
|
|
312
|
+
required=True,
|
|
313
|
+
label=_("Name"),
|
|
314
|
+
)
|
|
315
|
+
template = DynamicModelChoiceField(
|
|
316
|
+
queryset=ZoneTemplate.objects.all(),
|
|
317
|
+
required=False,
|
|
318
|
+
label=_("Template"),
|
|
319
|
+
)
|
|
320
|
+
status = forms.ChoiceField(
|
|
321
|
+
choices=ZoneStatusChoices,
|
|
322
|
+
required=False,
|
|
323
|
+
label=_("Status"),
|
|
324
|
+
)
|
|
325
|
+
nameservers = DynamicModelMultipleChoiceField(
|
|
326
|
+
queryset=NameServer.objects.all(),
|
|
327
|
+
required=False,
|
|
328
|
+
label=_("Nameservers"),
|
|
329
|
+
)
|
|
330
|
+
default_ttl = TimePeriodField(
|
|
331
|
+
required=False,
|
|
332
|
+
help_text=_("Default TTL for new records in this zone"),
|
|
333
|
+
validators=[MinValueValidator(1)],
|
|
334
|
+
label=_("Default TTL"),
|
|
335
|
+
)
|
|
336
|
+
soa_ttl = TimePeriodField(
|
|
337
|
+
required=True,
|
|
338
|
+
help_text=_("TTL for the SOA record of the zone"),
|
|
339
|
+
validators=[MinValueValidator(1)],
|
|
340
|
+
label=_("SOA TTL"),
|
|
341
|
+
)
|
|
342
|
+
soa_mname = DynamicModelChoiceField(
|
|
343
|
+
queryset=NameServer.objects.all(),
|
|
344
|
+
help_text=_("Primary nameserver this zone"),
|
|
345
|
+
required=False,
|
|
346
|
+
label=_("SOA MName"),
|
|
347
|
+
)
|
|
348
|
+
soa_rname = forms.CharField(
|
|
349
|
+
required=False,
|
|
350
|
+
help_text=_("Mailbox of the zone's administrator"),
|
|
351
|
+
label=_("SOA RName"),
|
|
352
|
+
)
|
|
353
|
+
soa_refresh = TimePeriodField(
|
|
354
|
+
required=True,
|
|
355
|
+
help_text=_("Refresh interval for secondary nameservers"),
|
|
356
|
+
validators=[MinValueValidator(1)],
|
|
357
|
+
label=_("SOA Refresh"),
|
|
358
|
+
)
|
|
359
|
+
soa_retry = TimePeriodField(
|
|
360
|
+
required=True,
|
|
361
|
+
help_text=_("Retry interval for secondary nameservers"),
|
|
362
|
+
validators=[MinValueValidator(1)],
|
|
363
|
+
label=_("SOA Retry"),
|
|
364
|
+
)
|
|
365
|
+
soa_expire = TimePeriodField(
|
|
366
|
+
required=True,
|
|
367
|
+
validators=[MinValueValidator(1)],
|
|
368
|
+
help_text=_("Expire time after which the zone is considered unavailable"),
|
|
369
|
+
label=_("SOA Expire"),
|
|
370
|
+
)
|
|
371
|
+
soa_minimum = TimePeriodField(
|
|
372
|
+
required=True,
|
|
373
|
+
help_text=_("Minimum TTL for negative results, e.g. NXRRSET, NXDOMAIN"),
|
|
374
|
+
validators=[MinValueValidator(1)],
|
|
375
|
+
label=_("SOA Minimum TTL"),
|
|
376
|
+
)
|
|
377
|
+
soa_serial = forms.IntegerField(
|
|
378
|
+
required=False,
|
|
379
|
+
validators=[MinValueValidator(1)],
|
|
380
|
+
label=_("SOA Serial"),
|
|
381
|
+
)
|
|
382
|
+
|
|
383
|
+
parental_agents = SimpleArrayField(
|
|
384
|
+
required=False,
|
|
385
|
+
base_field=forms.GenericIPAddressField(),
|
|
386
|
+
label=_("Parental Agents"),
|
|
387
|
+
)
|
|
388
|
+
|
|
389
|
+
rfc2317_prefix = RFC2317NetworkFormField(
|
|
390
|
+
required=False,
|
|
391
|
+
validators=[validate_ipv4, validate_prefix, validate_rfc2317],
|
|
392
|
+
help_text=_("RFC2317 IPv4 prefix with a length of at least 25 bits"),
|
|
393
|
+
label=_("RFC2317 Prefix"),
|
|
394
|
+
)
|
|
395
|
+
|
|
351
396
|
def clean_default_ttl(self):
|
|
352
397
|
return (
|
|
353
398
|
self.cleaned_data["default_ttl"]
|
|
@@ -362,51 +407,16 @@ class ZoneForm(ZoneTemplateUpdateMixin, TenancyForm, NetBoxModelForm):
|
|
|
362
407
|
else:
|
|
363
408
|
return name
|
|
364
409
|
|
|
365
|
-
class Meta:
|
|
366
|
-
model = Zone
|
|
367
|
-
|
|
368
|
-
fields = (
|
|
369
|
-
"name",
|
|
370
|
-
"view",
|
|
371
|
-
"status",
|
|
372
|
-
"template",
|
|
373
|
-
"nameservers",
|
|
374
|
-
"default_ttl",
|
|
375
|
-
"description",
|
|
376
|
-
"soa_ttl",
|
|
377
|
-
"soa_mname",
|
|
378
|
-
"soa_rname",
|
|
379
|
-
"soa_serial_auto",
|
|
380
|
-
"soa_serial",
|
|
381
|
-
"soa_refresh",
|
|
382
|
-
"soa_retry",
|
|
383
|
-
"soa_expire",
|
|
384
|
-
"soa_minimum",
|
|
385
|
-
"rfc2317_prefix",
|
|
386
|
-
"rfc2317_parent_managed",
|
|
387
|
-
"dnssec_policy",
|
|
388
|
-
"inline_signing",
|
|
389
|
-
"registrar",
|
|
390
|
-
"registry_domain_id",
|
|
391
|
-
"expiration_date",
|
|
392
|
-
"domain_status",
|
|
393
|
-
"registrant",
|
|
394
|
-
"admin_c",
|
|
395
|
-
"tech_c",
|
|
396
|
-
"billing_c",
|
|
397
|
-
"tenant_group",
|
|
398
|
-
"tenant",
|
|
399
|
-
"tags",
|
|
400
|
-
)
|
|
401
|
-
widgets = {
|
|
402
|
-
"expiration_date": DatePicker,
|
|
403
|
-
}
|
|
404
|
-
|
|
405
410
|
|
|
406
411
|
class ZoneFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
|
|
407
412
|
model = Zone
|
|
413
|
+
|
|
408
414
|
fieldsets = (
|
|
409
|
-
FieldSet(
|
|
415
|
+
FieldSet(
|
|
416
|
+
"q",
|
|
417
|
+
"filter_id",
|
|
418
|
+
"tag",
|
|
419
|
+
),
|
|
410
420
|
FieldSet(
|
|
411
421
|
"view_id",
|
|
412
422
|
"status",
|
|
@@ -425,6 +435,7 @@ class ZoneFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
|
|
|
425
435
|
FieldSet(
|
|
426
436
|
"dnssec_policy_id",
|
|
427
437
|
"inline_signing",
|
|
438
|
+
"parental_agents",
|
|
428
439
|
name=_("DNSSEC"),
|
|
429
440
|
),
|
|
430
441
|
FieldSet(
|
|
@@ -445,7 +456,11 @@ class ZoneFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
|
|
|
445
456
|
"billing_c_id",
|
|
446
457
|
name=_("Registration"),
|
|
447
458
|
),
|
|
448
|
-
FieldSet(
|
|
459
|
+
FieldSet(
|
|
460
|
+
"tenant_group_id",
|
|
461
|
+
"tenant_id",
|
|
462
|
+
name=_("Tenancy"),
|
|
463
|
+
),
|
|
449
464
|
)
|
|
450
465
|
|
|
451
466
|
view_id = DynamicModelMultipleChoiceField(
|
|
@@ -517,6 +532,10 @@ class ZoneFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
|
|
|
517
532
|
widget=forms.Select(choices=BOOLEAN_WITH_BLANK_CHOICES),
|
|
518
533
|
label=_("Use Inline Signing"),
|
|
519
534
|
)
|
|
535
|
+
parental_agents = forms.GenericIPAddressField(
|
|
536
|
+
required=False,
|
|
537
|
+
label=_("Parental Agents"),
|
|
538
|
+
)
|
|
520
539
|
registrar_id = DynamicModelMultipleChoiceField(
|
|
521
540
|
queryset=Registrar.objects.all(),
|
|
522
541
|
required=False,
|
|
@@ -570,6 +589,43 @@ class ZoneFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
|
|
|
570
589
|
|
|
571
590
|
|
|
572
591
|
class ZoneImportForm(ZoneTemplateUpdateMixin, NetBoxModelImportForm):
|
|
592
|
+
class Meta:
|
|
593
|
+
model = Zone
|
|
594
|
+
|
|
595
|
+
fields = (
|
|
596
|
+
"view",
|
|
597
|
+
"name",
|
|
598
|
+
"status",
|
|
599
|
+
"template",
|
|
600
|
+
"nameservers",
|
|
601
|
+
"default_ttl",
|
|
602
|
+
"description",
|
|
603
|
+
"soa_ttl",
|
|
604
|
+
"soa_mname",
|
|
605
|
+
"soa_rname",
|
|
606
|
+
"soa_serial_auto",
|
|
607
|
+
"soa_serial",
|
|
608
|
+
"soa_refresh",
|
|
609
|
+
"soa_retry",
|
|
610
|
+
"soa_expire",
|
|
611
|
+
"soa_minimum",
|
|
612
|
+
"dnssec_policy",
|
|
613
|
+
"inline_signing",
|
|
614
|
+
"parental_agents",
|
|
615
|
+
"rfc2317_prefix",
|
|
616
|
+
"rfc2317_parent_managed",
|
|
617
|
+
"registrar",
|
|
618
|
+
"registry_domain_id",
|
|
619
|
+
"expiration_date",
|
|
620
|
+
"domain_status",
|
|
621
|
+
"registrant",
|
|
622
|
+
"admin_c",
|
|
623
|
+
"tech_c",
|
|
624
|
+
"billing_c",
|
|
625
|
+
"tenant",
|
|
626
|
+
"tags",
|
|
627
|
+
)
|
|
628
|
+
|
|
573
629
|
view = CSVModelChoiceField(
|
|
574
630
|
queryset=View.objects.all(),
|
|
575
631
|
required=False,
|
|
@@ -734,30 +790,64 @@ class ZoneImportForm(ZoneTemplateUpdateMixin, NetBoxModelImportForm):
|
|
|
734
790
|
label=_("Template"),
|
|
735
791
|
)
|
|
736
792
|
|
|
737
|
-
|
|
738
|
-
|
|
793
|
+
def clean_view(self):
|
|
794
|
+
view = self.cleaned_data.get("view")
|
|
795
|
+
if view is None:
|
|
796
|
+
return View.get_default_view()
|
|
739
797
|
|
|
740
|
-
|
|
798
|
+
return view
|
|
799
|
+
|
|
800
|
+
def clean_nameservers(self):
|
|
801
|
+
nameservers = self.cleaned_data.get("nameservers")
|
|
802
|
+
zone_defaults = settings.PLUGINS_CONFIG.get("netbox_dns")
|
|
803
|
+
|
|
804
|
+
if (
|
|
805
|
+
self.data.get("nameservers") is None
|
|
806
|
+
and zone_defaults.get("zone_nameservers") is not None
|
|
807
|
+
):
|
|
808
|
+
nameservers = NameServer.objects.filter(
|
|
809
|
+
name__in=zone_defaults.get("zone_nameservers")
|
|
810
|
+
)
|
|
811
|
+
|
|
812
|
+
return nameservers
|
|
813
|
+
|
|
814
|
+
|
|
815
|
+
class ZoneBulkEditForm(NetBoxModelBulkEditForm):
|
|
816
|
+
model = Zone
|
|
817
|
+
|
|
818
|
+
fieldsets = (
|
|
819
|
+
FieldSet(
|
|
741
820
|
"view",
|
|
742
|
-
"name",
|
|
743
821
|
"status",
|
|
744
|
-
"template",
|
|
745
822
|
"nameservers",
|
|
746
823
|
"default_ttl",
|
|
747
824
|
"description",
|
|
825
|
+
name=_("Attributes"),
|
|
826
|
+
),
|
|
827
|
+
FieldSet(
|
|
748
828
|
"soa_ttl",
|
|
749
829
|
"soa_mname",
|
|
750
830
|
"soa_rname",
|
|
751
|
-
"soa_serial_auto",
|
|
752
|
-
"soa_serial",
|
|
753
831
|
"soa_refresh",
|
|
754
832
|
"soa_retry",
|
|
755
833
|
"soa_expire",
|
|
756
834
|
"soa_minimum",
|
|
835
|
+
"soa_serial_auto",
|
|
836
|
+
"soa_serial",
|
|
837
|
+
name=_("SOA"),
|
|
838
|
+
),
|
|
839
|
+
FieldSet(
|
|
757
840
|
"dnssec_policy",
|
|
758
841
|
"inline_signing",
|
|
842
|
+
"parental_agents",
|
|
843
|
+
name=_("DNSSEC"),
|
|
844
|
+
),
|
|
845
|
+
FieldSet(
|
|
759
846
|
"rfc2317_prefix",
|
|
760
847
|
"rfc2317_parent_managed",
|
|
848
|
+
name=_("RFC2317"),
|
|
849
|
+
),
|
|
850
|
+
FieldSet(
|
|
761
851
|
"registrar",
|
|
762
852
|
"registry_domain_id",
|
|
763
853
|
"expiration_date",
|
|
@@ -766,33 +856,30 @@ class ZoneImportForm(ZoneTemplateUpdateMixin, NetBoxModelImportForm):
|
|
|
766
856
|
"admin_c",
|
|
767
857
|
"tech_c",
|
|
768
858
|
"billing_c",
|
|
859
|
+
name=_("Domain Registration"),
|
|
860
|
+
),
|
|
861
|
+
FieldSet(
|
|
862
|
+
"tenant_group",
|
|
769
863
|
"tenant",
|
|
770
|
-
"
|
|
771
|
-
)
|
|
772
|
-
|
|
773
|
-
def clean_view(self):
|
|
774
|
-
view = self.cleaned_data.get("view")
|
|
775
|
-
if view is None:
|
|
776
|
-
return View.get_default_view()
|
|
777
|
-
|
|
778
|
-
return view
|
|
779
|
-
|
|
780
|
-
def clean_nameservers(self):
|
|
781
|
-
nameservers = self.cleaned_data.get("nameservers")
|
|
782
|
-
zone_defaults = settings.PLUGINS_CONFIG.get("netbox_dns")
|
|
783
|
-
|
|
784
|
-
if (
|
|
785
|
-
self.data.get("nameservers") is None
|
|
786
|
-
and zone_defaults.get("zone_nameservers") is not None
|
|
787
|
-
):
|
|
788
|
-
nameservers = NameServer.objects.filter(
|
|
789
|
-
name__in=zone_defaults.get("zone_nameservers")
|
|
790
|
-
)
|
|
791
|
-
|
|
792
|
-
return nameservers
|
|
864
|
+
name=_("Tenancy"),
|
|
865
|
+
),
|
|
866
|
+
)
|
|
793
867
|
|
|
868
|
+
nullable_fields = (
|
|
869
|
+
"description",
|
|
870
|
+
"nameservers",
|
|
871
|
+
"rfc2317_prefix",
|
|
872
|
+
"registrar",
|
|
873
|
+
"expiration_date",
|
|
874
|
+
"domain_status",
|
|
875
|
+
"registry_domain_id",
|
|
876
|
+
"registrant",
|
|
877
|
+
"admin_c",
|
|
878
|
+
"tech_c",
|
|
879
|
+
"billing_c",
|
|
880
|
+
"tenant",
|
|
881
|
+
)
|
|
794
882
|
|
|
795
|
-
class ZoneBulkEditForm(NetBoxModelBulkEditForm):
|
|
796
883
|
view = DynamicModelChoiceField(
|
|
797
884
|
queryset=View.objects.all(),
|
|
798
885
|
required=False,
|
|
@@ -886,6 +973,11 @@ class ZoneBulkEditForm(NetBoxModelBulkEditForm):
|
|
|
886
973
|
widget=BulkEditNullBooleanSelect(),
|
|
887
974
|
label=_("Use Inline Signing"),
|
|
888
975
|
)
|
|
976
|
+
parental_agents = SimpleArrayField(
|
|
977
|
+
required=False,
|
|
978
|
+
base_field=forms.GenericIPAddressField(),
|
|
979
|
+
label=_("Parental Agents"),
|
|
980
|
+
)
|
|
889
981
|
registrar = DynamicModelChoiceField(
|
|
890
982
|
queryset=Registrar.objects.all(),
|
|
891
983
|
required=False,
|
|
@@ -935,65 +1027,3 @@ class ZoneBulkEditForm(NetBoxModelBulkEditForm):
|
|
|
935
1027
|
required=False,
|
|
936
1028
|
label=_("Tenant"),
|
|
937
1029
|
)
|
|
938
|
-
|
|
939
|
-
model = Zone
|
|
940
|
-
|
|
941
|
-
fieldsets = (
|
|
942
|
-
FieldSet(
|
|
943
|
-
"view",
|
|
944
|
-
"status",
|
|
945
|
-
"nameservers",
|
|
946
|
-
"default_ttl",
|
|
947
|
-
"description",
|
|
948
|
-
name=_("Attributes"),
|
|
949
|
-
),
|
|
950
|
-
FieldSet(
|
|
951
|
-
"soa_ttl",
|
|
952
|
-
"soa_mname",
|
|
953
|
-
"soa_rname",
|
|
954
|
-
"soa_refresh",
|
|
955
|
-
"soa_retry",
|
|
956
|
-
"soa_expire",
|
|
957
|
-
"soa_minimum",
|
|
958
|
-
"soa_serial_auto",
|
|
959
|
-
"soa_serial",
|
|
960
|
-
name=_("SOA"),
|
|
961
|
-
),
|
|
962
|
-
FieldSet(
|
|
963
|
-
"dnssec_policy",
|
|
964
|
-
"inline_signing",
|
|
965
|
-
name=_("DNSSEC"),
|
|
966
|
-
),
|
|
967
|
-
FieldSet(
|
|
968
|
-
"rfc2317_prefix",
|
|
969
|
-
"rfc2317_parent_managed",
|
|
970
|
-
name=_("RFC2317"),
|
|
971
|
-
),
|
|
972
|
-
FieldSet(
|
|
973
|
-
"registrar",
|
|
974
|
-
"registry_domain_id",
|
|
975
|
-
"expiration_date",
|
|
976
|
-
"domain_status",
|
|
977
|
-
"registrant",
|
|
978
|
-
"admin_c",
|
|
979
|
-
"tech_c",
|
|
980
|
-
"billing_c",
|
|
981
|
-
name=_("Domain Registration"),
|
|
982
|
-
),
|
|
983
|
-
FieldSet("tenant_group", "tenant", name=_("Tenancy")),
|
|
984
|
-
)
|
|
985
|
-
|
|
986
|
-
nullable_fields = (
|
|
987
|
-
"description",
|
|
988
|
-
"nameservers",
|
|
989
|
-
"rfc2317_prefix",
|
|
990
|
-
"registrar",
|
|
991
|
-
"expiration_date",
|
|
992
|
-
"domain_status",
|
|
993
|
-
"registry_domain_id",
|
|
994
|
-
"registrant",
|
|
995
|
-
"admin_c",
|
|
996
|
-
"tech_c",
|
|
997
|
-
"billing_c",
|
|
998
|
-
"tenant",
|
|
999
|
-
)
|