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
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
from packaging.version import Version
|
|
2
|
-
|
|
3
1
|
from django import forms
|
|
4
2
|
from django.utils.translation import gettext_lazy as _
|
|
5
3
|
|
|
@@ -9,7 +7,6 @@ from netbox.forms import (
|
|
|
9
7
|
NetBoxModelImportForm,
|
|
10
8
|
NetBoxModelForm,
|
|
11
9
|
)
|
|
12
|
-
from utilities.release import load_release_data
|
|
13
10
|
from utilities.forms.fields import (
|
|
14
11
|
DynamicModelMultipleChoiceField,
|
|
15
12
|
TagFilterField,
|
|
@@ -38,44 +35,8 @@ __all__ = (
|
|
|
38
35
|
"ZoneTemplateBulkEditForm",
|
|
39
36
|
)
|
|
40
37
|
|
|
41
|
-
QUICK_ADD = Version(load_release_data().version) >= Version("4.2.5")
|
|
42
|
-
|
|
43
38
|
|
|
44
39
|
class ZoneTemplateForm(TenancyForm, NetBoxModelForm):
|
|
45
|
-
nameservers = DynamicModelMultipleChoiceField(
|
|
46
|
-
queryset=NameServer.objects.all(),
|
|
47
|
-
required=False,
|
|
48
|
-
quick_add=QUICK_ADD,
|
|
49
|
-
)
|
|
50
|
-
soa_mname = DynamicModelChoiceField(
|
|
51
|
-
queryset=NameServer.objects.all(),
|
|
52
|
-
required=False,
|
|
53
|
-
label=_("MName"),
|
|
54
|
-
quick_add=QUICK_ADD,
|
|
55
|
-
)
|
|
56
|
-
record_templates = DynamicModelMultipleChoiceField(
|
|
57
|
-
queryset=RecordTemplate.objects.all(),
|
|
58
|
-
required=False,
|
|
59
|
-
quick_add=QUICK_ADD,
|
|
60
|
-
)
|
|
61
|
-
|
|
62
|
-
fieldsets = (
|
|
63
|
-
FieldSet("name", "description", "nameservers", name=_("Zone Template")),
|
|
64
|
-
FieldSet("soa_mname", "soa_rname", name=_("SOA")),
|
|
65
|
-
FieldSet("record_templates", name=_("Record Templates")),
|
|
66
|
-
FieldSet("dnssec_policy", name=_("DNSSEC")),
|
|
67
|
-
FieldSet(
|
|
68
|
-
"registrar",
|
|
69
|
-
"registrant",
|
|
70
|
-
"admin_c",
|
|
71
|
-
"tech_c",
|
|
72
|
-
"billing_c",
|
|
73
|
-
name=_("Domain Registration"),
|
|
74
|
-
),
|
|
75
|
-
FieldSet("tenant_group", "tenant", name=_("Tenancy")),
|
|
76
|
-
FieldSet("tags", name=_("Tags")),
|
|
77
|
-
)
|
|
78
|
-
|
|
79
40
|
class Meta:
|
|
80
41
|
model = ZoneTemplate
|
|
81
42
|
|
|
@@ -96,19 +57,96 @@ class ZoneTemplateForm(TenancyForm, NetBoxModelForm):
|
|
|
96
57
|
"tenant",
|
|
97
58
|
"tags",
|
|
98
59
|
)
|
|
60
|
+
|
|
99
61
|
labels = {
|
|
100
62
|
"soa_rname": _("RName"),
|
|
101
63
|
}
|
|
102
64
|
|
|
65
|
+
fieldsets = (
|
|
66
|
+
FieldSet(
|
|
67
|
+
"name",
|
|
68
|
+
"description",
|
|
69
|
+
"nameservers",
|
|
70
|
+
name=_("Zone Template"),
|
|
71
|
+
),
|
|
72
|
+
FieldSet(
|
|
73
|
+
"soa_mname",
|
|
74
|
+
"soa_rname",
|
|
75
|
+
name=_("SOA"),
|
|
76
|
+
),
|
|
77
|
+
FieldSet(
|
|
78
|
+
"record_templates",
|
|
79
|
+
name=_("Record Templates"),
|
|
80
|
+
),
|
|
81
|
+
FieldSet(
|
|
82
|
+
"dnssec_policy",
|
|
83
|
+
name=_("DNSSEC"),
|
|
84
|
+
),
|
|
85
|
+
FieldSet(
|
|
86
|
+
"registrar",
|
|
87
|
+
"registrant",
|
|
88
|
+
"admin_c",
|
|
89
|
+
"tech_c",
|
|
90
|
+
"billing_c",
|
|
91
|
+
name=_("Domain Registration"),
|
|
92
|
+
),
|
|
93
|
+
FieldSet(
|
|
94
|
+
"tenant_group",
|
|
95
|
+
"tenant",
|
|
96
|
+
name=_("Tenancy"),
|
|
97
|
+
),
|
|
98
|
+
FieldSet(
|
|
99
|
+
"tags",
|
|
100
|
+
name=_("Tags"),
|
|
101
|
+
),
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
nameservers = DynamicModelMultipleChoiceField(
|
|
105
|
+
queryset=NameServer.objects.all(),
|
|
106
|
+
required=False,
|
|
107
|
+
quick_add=True,
|
|
108
|
+
)
|
|
109
|
+
soa_mname = DynamicModelChoiceField(
|
|
110
|
+
queryset=NameServer.objects.all(),
|
|
111
|
+
required=False,
|
|
112
|
+
label=_("MName"),
|
|
113
|
+
quick_add=True,
|
|
114
|
+
)
|
|
115
|
+
record_templates = DynamicModelMultipleChoiceField(
|
|
116
|
+
queryset=RecordTemplate.objects.all(),
|
|
117
|
+
required=False,
|
|
118
|
+
quick_add=True,
|
|
119
|
+
)
|
|
120
|
+
|
|
103
121
|
|
|
104
122
|
class ZoneTemplateFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
|
|
105
123
|
model = ZoneTemplate
|
|
124
|
+
|
|
106
125
|
fieldsets = (
|
|
107
|
-
FieldSet(
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
126
|
+
FieldSet(
|
|
127
|
+
"q",
|
|
128
|
+
"filter_id",
|
|
129
|
+
"tag",
|
|
130
|
+
),
|
|
131
|
+
FieldSet(
|
|
132
|
+
"name",
|
|
133
|
+
"nameserver_id",
|
|
134
|
+
"description",
|
|
135
|
+
name=_("Attributes"),
|
|
136
|
+
),
|
|
137
|
+
FieldSet(
|
|
138
|
+
"soa_mname_id",
|
|
139
|
+
"soa_rname",
|
|
140
|
+
name=_("SOA"),
|
|
141
|
+
),
|
|
142
|
+
FieldSet(
|
|
143
|
+
"record_template_id",
|
|
144
|
+
name=_("Record Templates"),
|
|
145
|
+
),
|
|
146
|
+
FieldSet(
|
|
147
|
+
"dnssec_policy",
|
|
148
|
+
name=_("DNSSEC"),
|
|
149
|
+
),
|
|
112
150
|
FieldSet(
|
|
113
151
|
"registrar_id",
|
|
114
152
|
"registrant_id",
|
|
@@ -117,7 +155,11 @@ class ZoneTemplateFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
|
|
|
117
155
|
"billing_c_id",
|
|
118
156
|
name=_("Registration"),
|
|
119
157
|
),
|
|
120
|
-
FieldSet(
|
|
158
|
+
FieldSet(
|
|
159
|
+
"tenant_group_id",
|
|
160
|
+
"tenant_id",
|
|
161
|
+
name=_("Tenancy"),
|
|
162
|
+
),
|
|
121
163
|
)
|
|
122
164
|
|
|
123
165
|
name = forms.CharField(
|
|
@@ -189,6 +231,26 @@ class ZoneTemplateFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
|
|
|
189
231
|
|
|
190
232
|
|
|
191
233
|
class ZoneTemplateImportForm(NetBoxModelImportForm):
|
|
234
|
+
class Meta:
|
|
235
|
+
model = ZoneTemplate
|
|
236
|
+
|
|
237
|
+
fields = (
|
|
238
|
+
"name",
|
|
239
|
+
"nameservers",
|
|
240
|
+
"soa_mname",
|
|
241
|
+
"soa_rname",
|
|
242
|
+
"record_templates",
|
|
243
|
+
"dnssec_policy",
|
|
244
|
+
"description",
|
|
245
|
+
"registrar",
|
|
246
|
+
"registrant",
|
|
247
|
+
"admin_c",
|
|
248
|
+
"tech_c",
|
|
249
|
+
"billing_c",
|
|
250
|
+
"tenant",
|
|
251
|
+
"tags",
|
|
252
|
+
)
|
|
253
|
+
|
|
192
254
|
nameservers = CSVModelMultipleChoiceField(
|
|
193
255
|
queryset=NameServer.objects.all(),
|
|
194
256
|
to_field_name="name",
|
|
@@ -268,28 +330,59 @@ class ZoneTemplateImportForm(NetBoxModelImportForm):
|
|
|
268
330
|
label=_("Tenant"),
|
|
269
331
|
)
|
|
270
332
|
|
|
271
|
-
class Meta:
|
|
272
|
-
model = ZoneTemplate
|
|
273
333
|
|
|
274
|
-
|
|
275
|
-
|
|
334
|
+
class ZoneTemplateBulkEditForm(NetBoxModelBulkEditForm):
|
|
335
|
+
model = ZoneTemplate
|
|
336
|
+
|
|
337
|
+
fieldsets = (
|
|
338
|
+
FieldSet(
|
|
276
339
|
"nameservers",
|
|
340
|
+
"description",
|
|
341
|
+
name=_("Attributes"),
|
|
342
|
+
),
|
|
343
|
+
FieldSet(
|
|
277
344
|
"soa_mname",
|
|
278
345
|
"soa_rname",
|
|
346
|
+
name=_("SOA"),
|
|
347
|
+
),
|
|
348
|
+
FieldSet(
|
|
279
349
|
"record_templates",
|
|
350
|
+
name=_("Record Templates"),
|
|
351
|
+
),
|
|
352
|
+
FieldSet(
|
|
280
353
|
"dnssec_policy",
|
|
281
|
-
"
|
|
354
|
+
name=_("DNSSEC"),
|
|
355
|
+
),
|
|
356
|
+
FieldSet(
|
|
282
357
|
"registrar",
|
|
283
358
|
"registrant",
|
|
284
359
|
"admin_c",
|
|
285
360
|
"tech_c",
|
|
286
361
|
"billing_c",
|
|
362
|
+
name=_("Domain Registration"),
|
|
363
|
+
),
|
|
364
|
+
FieldSet(
|
|
365
|
+
"tenant_group",
|
|
287
366
|
"tenant",
|
|
288
|
-
"
|
|
289
|
-
)
|
|
367
|
+
name=_("Tenancy"),
|
|
368
|
+
),
|
|
369
|
+
)
|
|
290
370
|
|
|
371
|
+
nullable_fields = (
|
|
372
|
+
"description",
|
|
373
|
+
"nameservers",
|
|
374
|
+
"soa_mname",
|
|
375
|
+
"soa_rname",
|
|
376
|
+
"record_templates",
|
|
377
|
+
"dnssec_policy",
|
|
378
|
+
"registrar",
|
|
379
|
+
"registrant",
|
|
380
|
+
"admin_c",
|
|
381
|
+
"tech_c",
|
|
382
|
+
"billing_c",
|
|
383
|
+
"tenant",
|
|
384
|
+
)
|
|
291
385
|
|
|
292
|
-
class ZoneTemplateBulkEditForm(NetBoxModelBulkEditForm):
|
|
293
386
|
nameservers = DynamicModelMultipleChoiceField(
|
|
294
387
|
queryset=NameServer.objects.all(),
|
|
295
388
|
required=False,
|
|
@@ -300,7 +393,11 @@ class ZoneTemplateBulkEditForm(NetBoxModelBulkEditForm):
|
|
|
300
393
|
required=False,
|
|
301
394
|
label=_("MName"),
|
|
302
395
|
)
|
|
303
|
-
soa_rname = forms.CharField(
|
|
396
|
+
soa_rname = forms.CharField(
|
|
397
|
+
max_length=255,
|
|
398
|
+
required=False,
|
|
399
|
+
label=_("RName"),
|
|
400
|
+
)
|
|
304
401
|
record_templates = DynamicModelMultipleChoiceField(
|
|
305
402
|
queryset=RecordTemplate.objects.all(),
|
|
306
403
|
required=False,
|
|
@@ -349,50 +446,3 @@ class ZoneTemplateBulkEditForm(NetBoxModelBulkEditForm):
|
|
|
349
446
|
required=False,
|
|
350
447
|
label=_("Tenant"),
|
|
351
448
|
)
|
|
352
|
-
|
|
353
|
-
model = ZoneTemplate
|
|
354
|
-
|
|
355
|
-
fieldsets = (
|
|
356
|
-
FieldSet(
|
|
357
|
-
"nameservers",
|
|
358
|
-
"description",
|
|
359
|
-
name=_("Attributes"),
|
|
360
|
-
),
|
|
361
|
-
FieldSet(
|
|
362
|
-
"soa_mname",
|
|
363
|
-
"soa_rname",
|
|
364
|
-
name=_("SOA"),
|
|
365
|
-
),
|
|
366
|
-
FieldSet(
|
|
367
|
-
"record_templates",
|
|
368
|
-
name=_("Record Templates"),
|
|
369
|
-
),
|
|
370
|
-
FieldSet(
|
|
371
|
-
"dnssec_policy",
|
|
372
|
-
name=_("DNSSEC"),
|
|
373
|
-
),
|
|
374
|
-
FieldSet(
|
|
375
|
-
"registrar",
|
|
376
|
-
"registrant",
|
|
377
|
-
"admin_c",
|
|
378
|
-
"tech_c",
|
|
379
|
-
"billing_c",
|
|
380
|
-
name=_("Domain Registration"),
|
|
381
|
-
),
|
|
382
|
-
FieldSet("tenant_group", "tenant", name=_("Tenancy")),
|
|
383
|
-
)
|
|
384
|
-
|
|
385
|
-
nullable_fields = (
|
|
386
|
-
"description",
|
|
387
|
-
"nameservers",
|
|
388
|
-
"soa_mname",
|
|
389
|
-
"soa_rname",
|
|
390
|
-
"record_templates",
|
|
391
|
-
"dnssec_policy",
|
|
392
|
-
"registrar",
|
|
393
|
-
"registrant",
|
|
394
|
-
"admin_c",
|
|
395
|
-
"tech_c",
|
|
396
|
-
"billing_c",
|
|
397
|
-
"tenant",
|
|
398
|
-
)
|
netbox_dns/graphql/types.py
CHANGED
|
@@ -90,6 +90,7 @@ class NetBoxDNSZoneType(NetBoxObjectType):
|
|
|
90
90
|
| None
|
|
91
91
|
)
|
|
92
92
|
inline_signing: bool
|
|
93
|
+
parental_agents: List[str]
|
|
93
94
|
registrar: (
|
|
94
95
|
Annotated["NetBoxDNSRegistrarType", strawberry.lazy("netbox_dns.graphql.types")]
|
|
95
96
|
| None
|
|
@@ -164,10 +165,9 @@ class NetBoxDNSRecordType(NetBoxObjectType):
|
|
|
164
165
|
Annotated["NetBoxDNSRecordType", strawberry.lazy("netbox_dns.graphql.types")]
|
|
165
166
|
| None
|
|
166
167
|
)
|
|
167
|
-
|
|
168
|
+
address_records: List[
|
|
168
169
|
Annotated["NetBoxDNSRecordType", strawberry.lazy("netbox_dns.graphql.types")]
|
|
169
|
-
|
|
170
|
-
)
|
|
170
|
+
]
|
|
171
171
|
rfc2317_ptr_records: List[
|
|
172
172
|
Annotated["NetBoxDNSRecordType", strawberry.lazy("netbox_dns.graphql.types")]
|
|
173
173
|
]
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Generated by Django 5.2 on 2025-04-22 18:05
|
|
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", "0018_zone_domain_status_zone_expiration_date"),
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
operations = [
|
|
14
|
+
migrations.AddField(
|
|
15
|
+
model_name="dnssecpolicy",
|
|
16
|
+
name="parental_agents",
|
|
17
|
+
field=django.contrib.postgres.fields.ArrayField(
|
|
18
|
+
base_field=models.GenericIPAddressField(),
|
|
19
|
+
blank=True,
|
|
20
|
+
default=list,
|
|
21
|
+
null=True,
|
|
22
|
+
size=None,
|
|
23
|
+
),
|
|
24
|
+
),
|
|
25
|
+
]
|
|
@@ -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
|
+
]
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Generated by Django 5.2 on 2025-05-13 09:16
|
|
2
|
+
|
|
3
|
+
import django.db.models.deletion
|
|
4
|
+
from django.db import migrations, models
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class Migration(migrations.Migration):
|
|
8
|
+
|
|
9
|
+
dependencies = [
|
|
10
|
+
("netbox_dns", "0020_remove_dnssecpolicy_parental_agents_and_more"),
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
operations = [
|
|
14
|
+
migrations.AlterField(
|
|
15
|
+
model_name="record",
|
|
16
|
+
name="ptr_record",
|
|
17
|
+
field=models.ForeignKey(
|
|
18
|
+
blank=True,
|
|
19
|
+
null=True,
|
|
20
|
+
on_delete=django.db.models.deletion.SET_NULL,
|
|
21
|
+
related_name="address_records",
|
|
22
|
+
to="netbox_dns.record",
|
|
23
|
+
),
|
|
24
|
+
),
|
|
25
|
+
]
|
|
@@ -20,6 +20,29 @@ __all__ = (
|
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
class DNSSECKeyTemplate(ContactsMixin, NetBoxModel):
|
|
23
|
+
class Meta:
|
|
24
|
+
verbose_name = _("DNSSEC Key Template")
|
|
25
|
+
verbose_name_plural = _("DNSSEC Key Templates")
|
|
26
|
+
|
|
27
|
+
unique_together = (
|
|
28
|
+
"name",
|
|
29
|
+
"type",
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
ordering = ("name",)
|
|
33
|
+
|
|
34
|
+
clone_fields = (
|
|
35
|
+
"description",
|
|
36
|
+
"type",
|
|
37
|
+
"lifetime",
|
|
38
|
+
"algorithm",
|
|
39
|
+
"key_size",
|
|
40
|
+
"tenant",
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
def __str__(self):
|
|
44
|
+
return f"{str(self.name)} [{self.type}]"
|
|
45
|
+
|
|
23
46
|
name = models.CharField(
|
|
24
47
|
verbose_name=_("Name"),
|
|
25
48
|
max_length=255,
|
|
@@ -64,28 +87,6 @@ class DNSSECKeyTemplate(ContactsMixin, NetBoxModel):
|
|
|
64
87
|
null=True,
|
|
65
88
|
)
|
|
66
89
|
|
|
67
|
-
clone_fields = (
|
|
68
|
-
"description",
|
|
69
|
-
"type",
|
|
70
|
-
"lifetime",
|
|
71
|
-
"algorithm",
|
|
72
|
-
"key_size",
|
|
73
|
-
"tenant",
|
|
74
|
-
)
|
|
75
|
-
|
|
76
|
-
class Meta:
|
|
77
|
-
verbose_name = _("DNSSEC Key Template")
|
|
78
|
-
verbose_name_plural = _("DNSSEC Key Templates")
|
|
79
|
-
unique_together = (
|
|
80
|
-
"name",
|
|
81
|
-
"type",
|
|
82
|
-
)
|
|
83
|
-
|
|
84
|
-
ordering = ("name",)
|
|
85
|
-
|
|
86
|
-
def __str__(self):
|
|
87
|
-
return f"{str(self.name)} [{self.type}]"
|
|
88
|
-
|
|
89
90
|
def get_type_color(self):
|
|
90
91
|
return DNSSECKeyTemplateTypeChoices.colors.get(self.type)
|
|
91
92
|
|
|
@@ -103,6 +104,7 @@ class DNSSECKeyTemplate(ContactsMixin, NetBoxModel):
|
|
|
103
104
|
@register_search
|
|
104
105
|
class DNSSECKeyTemplateIndex(SearchIndex):
|
|
105
106
|
model = DNSSECKeyTemplate
|
|
107
|
+
|
|
106
108
|
fields = (
|
|
107
109
|
("name", 100),
|
|
108
110
|
("description", 500),
|
|
@@ -17,6 +17,22 @@ __all__ = (
|
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
class DNSSECPolicy(ContactsMixin, NetBoxModel):
|
|
20
|
+
class Meta:
|
|
21
|
+
verbose_name = _("DNSSEC Policy")
|
|
22
|
+
verbose_name_plural = _("DNSSEC Policies")
|
|
23
|
+
|
|
24
|
+
ordering = ("name",)
|
|
25
|
+
|
|
26
|
+
clone_fields = (
|
|
27
|
+
"name",
|
|
28
|
+
"key_templates",
|
|
29
|
+
"description",
|
|
30
|
+
"tenant",
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
def __str__(self):
|
|
34
|
+
return str(self.name)
|
|
35
|
+
|
|
20
36
|
name = models.CharField(
|
|
21
37
|
verbose_name=_("Name"),
|
|
22
38
|
max_length=255,
|
|
@@ -148,22 +164,6 @@ class DNSSECPolicy(ContactsMixin, NetBoxModel):
|
|
|
148
164
|
null=True,
|
|
149
165
|
)
|
|
150
166
|
|
|
151
|
-
clone_fields = (
|
|
152
|
-
"name",
|
|
153
|
-
"key_templates",
|
|
154
|
-
"description",
|
|
155
|
-
"tenant",
|
|
156
|
-
)
|
|
157
|
-
|
|
158
|
-
class Meta:
|
|
159
|
-
verbose_name = _("DNSSEC Policy")
|
|
160
|
-
verbose_name_plural = _("DNSSEC Policies")
|
|
161
|
-
|
|
162
|
-
ordering = ("name",)
|
|
163
|
-
|
|
164
|
-
def __str__(self):
|
|
165
|
-
return str(self.name)
|
|
166
|
-
|
|
167
167
|
def get_status_color(self):
|
|
168
168
|
return DNSSECPolicyStatusChoices.colors.get(self.status)
|
|
169
169
|
|
|
@@ -192,6 +192,7 @@ class DNSSECPolicy(ContactsMixin, NetBoxModel):
|
|
|
192
192
|
@register_search
|
|
193
193
|
class DNSSECPolicyIndex(SearchIndex):
|
|
194
194
|
model = DNSSECPolicy
|
|
195
|
+
|
|
195
196
|
fields = (
|
|
196
197
|
("name", 100),
|
|
197
198
|
("description", 500),
|
netbox_dns/models/nameserver.py
CHANGED
|
@@ -28,31 +28,6 @@ __all__ = (
|
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
class NameServer(ObjectModificationMixin, ContactsMixin, NetBoxModel):
|
|
31
|
-
name = models.CharField(
|
|
32
|
-
verbose_name=_("Name"),
|
|
33
|
-
max_length=255,
|
|
34
|
-
db_collation="natural_sort",
|
|
35
|
-
)
|
|
36
|
-
description = models.CharField(
|
|
37
|
-
verbose_name=_("Description"),
|
|
38
|
-
max_length=200,
|
|
39
|
-
blank=True,
|
|
40
|
-
)
|
|
41
|
-
tenant = models.ForeignKey(
|
|
42
|
-
verbose_name=_("Tenant"),
|
|
43
|
-
to="tenancy.Tenant",
|
|
44
|
-
on_delete=models.PROTECT,
|
|
45
|
-
related_name="netbox_dns_nameservers",
|
|
46
|
-
blank=True,
|
|
47
|
-
null=True,
|
|
48
|
-
)
|
|
49
|
-
|
|
50
|
-
clone_fields = (
|
|
51
|
-
"name",
|
|
52
|
-
"description",
|
|
53
|
-
"tenant",
|
|
54
|
-
)
|
|
55
|
-
|
|
56
31
|
class Meta:
|
|
57
32
|
verbose_name = _("Nameserver")
|
|
58
33
|
verbose_name_plural = _("Nameservers")
|
|
@@ -69,12 +44,37 @@ class NameServer(ObjectModificationMixin, ContactsMixin, NetBoxModel):
|
|
|
69
44
|
),
|
|
70
45
|
]
|
|
71
46
|
|
|
47
|
+
clone_fields = (
|
|
48
|
+
"name",
|
|
49
|
+
"description",
|
|
50
|
+
"tenant",
|
|
51
|
+
)
|
|
52
|
+
|
|
72
53
|
def __str__(self):
|
|
73
54
|
try:
|
|
74
55
|
return dns_name.from_text(self.name, origin=None).to_unicode()
|
|
75
56
|
except dns_name.IDNAException:
|
|
76
57
|
return self.name
|
|
77
58
|
|
|
59
|
+
name = models.CharField(
|
|
60
|
+
verbose_name=_("Name"),
|
|
61
|
+
max_length=255,
|
|
62
|
+
db_collation="natural_sort",
|
|
63
|
+
)
|
|
64
|
+
description = models.CharField(
|
|
65
|
+
verbose_name=_("Description"),
|
|
66
|
+
max_length=200,
|
|
67
|
+
blank=True,
|
|
68
|
+
)
|
|
69
|
+
tenant = models.ForeignKey(
|
|
70
|
+
verbose_name=_("Tenant"),
|
|
71
|
+
to="tenancy.Tenant",
|
|
72
|
+
on_delete=models.PROTECT,
|
|
73
|
+
related_name="netbox_dns_nameservers",
|
|
74
|
+
blank=True,
|
|
75
|
+
null=True,
|
|
76
|
+
)
|
|
77
|
+
|
|
78
78
|
@property
|
|
79
79
|
def display_name(self):
|
|
80
80
|
return name_to_unicode(self.name)
|
|
@@ -138,6 +138,7 @@ class NameServer(ObjectModificationMixin, ContactsMixin, NetBoxModel):
|
|
|
138
138
|
@register_search
|
|
139
139
|
class NameServerIndex(SearchIndex):
|
|
140
140
|
model = NameServer
|
|
141
|
+
|
|
141
142
|
fields = (
|
|
142
143
|
("name", 100),
|
|
143
144
|
("description", 500),
|