netbox-plugin-dns 1.2.6__py3-none-any.whl → 1.2.7b2__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 +15 -1
- netbox_dns/api/serializers.py +3 -0
- netbox_dns/api/serializers_/dnssec_key_template.py +46 -0
- netbox_dns/api/serializers_/dnssec_policy.py +83 -0
- netbox_dns/api/serializers_/zone.py +10 -0
- netbox_dns/api/serializers_/zone_template.py +13 -4
- netbox_dns/api/urls.py +4 -0
- netbox_dns/api/views.py +18 -0
- netbox_dns/choices/__init__.py +2 -0
- netbox_dns/choices/dnssec_key_template.py +63 -0
- netbox_dns/choices/dnssec_policy.py +40 -0
- netbox_dns/choices/record.py +2 -25
- netbox_dns/choices/utilities.py +26 -0
- netbox_dns/fields/__init__.py +1 -0
- netbox_dns/fields/choice_array.py +20 -0
- netbox_dns/filtersets/__init__.py +3 -0
- netbox_dns/filtersets/dnssec_key_template.py +51 -0
- netbox_dns/filtersets/dnssec_policy.py +73 -0
- netbox_dns/filtersets/zone.py +23 -4
- netbox_dns/filtersets/zone_template.py +11 -0
- netbox_dns/forms/__init__.py +2 -0
- netbox_dns/forms/dnssec_key_template.py +188 -0
- netbox_dns/forms/dnssec_policy.py +563 -0
- netbox_dns/forms/zone.py +48 -0
- netbox_dns/forms/zone_template.py +29 -0
- netbox_dns/graphql/__init__.py +7 -3
- netbox_dns/graphql/filters.py +16 -0
- netbox_dns/graphql/schema.py +20 -0
- netbox_dns/graphql/types.py +67 -3
- netbox_dns/locale/de/LC_MESSAGES/django.mo +0 -0
- netbox_dns/locale/fr/LC_MESSAGES/django.mo +0 -0
- netbox_dns/migrations/0015_dnssec.py +168 -0
- netbox_dns/migrations/0016_dnssec_policy_status.py +18 -0
- netbox_dns/migrations/0017_dnssec_policy_zone_zone_template.py +41 -0
- netbox_dns/models/__init__.py +2 -0
- netbox_dns/models/dnssec_key_template.py +114 -0
- netbox_dns/models/dnssec_policy.py +201 -0
- netbox_dns/models/zone.py +29 -16
- netbox_dns/models/zone_template.py +16 -6
- netbox_dns/navigation.py +49 -0
- netbox_dns/signals/dnssec.py +32 -0
- netbox_dns/tables/__init__.py +2 -0
- netbox_dns/tables/dnssec_key_template.py +48 -0
- netbox_dns/tables/dnssec_policy.py +131 -0
- netbox_dns/tables/zone.py +17 -1
- netbox_dns/tables/zone_template.py +4 -0
- netbox_dns/templates/netbox_dns/dnsseckeytemplate.html +70 -0
- netbox_dns/templates/netbox_dns/dnssecpolicy.html +155 -0
- netbox_dns/templates/netbox_dns/zone.html +16 -0
- netbox_dns/templates/netbox_dns/zonetemplate/child.html +46 -0
- netbox_dns/templates/netbox_dns/zonetemplate.html +12 -0
- netbox_dns/urls.py +16 -0
- netbox_dns/validators/__init__.py +1 -0
- netbox_dns/validators/dnssec.py +146 -0
- netbox_dns/views/__init__.py +2 -0
- netbox_dns/views/dnssec_key_template.py +87 -0
- netbox_dns/views/dnssec_policy.py +153 -0
- {netbox_plugin_dns-1.2.6.dist-info → netbox_plugin_dns-1.2.7b2.dist-info}/METADATA +2 -2
- {netbox_plugin_dns-1.2.6.dist-info → netbox_plugin_dns-1.2.7b2.dist-info}/RECORD +62 -38
- {netbox_plugin_dns-1.2.6.dist-info → netbox_plugin_dns-1.2.7b2.dist-info}/LICENSE +0 -0
- {netbox_plugin_dns-1.2.6.dist-info → netbox_plugin_dns-1.2.7b2.dist-info}/WHEEL +0 -0
- {netbox_plugin_dns-1.2.6.dist-info → netbox_plugin_dns-1.2.7b2.dist-info}/top_level.txt +0 -0
netbox_dns/filtersets/zone.py
CHANGED
|
@@ -8,7 +8,14 @@ from netbox.filtersets import NetBoxModelFilterSet
|
|
|
8
8
|
from tenancy.filtersets import TenancyFilterSet
|
|
9
9
|
from utilities.filters import MultiValueCharFilter
|
|
10
10
|
|
|
11
|
-
from netbox_dns.models import
|
|
11
|
+
from netbox_dns.models import (
|
|
12
|
+
View,
|
|
13
|
+
Zone,
|
|
14
|
+
Registrar,
|
|
15
|
+
RegistrationContact,
|
|
16
|
+
NameServer,
|
|
17
|
+
DNSSECPolicy,
|
|
18
|
+
)
|
|
12
19
|
from netbox_dns.choices import ZoneStatusChoices
|
|
13
20
|
|
|
14
21
|
|
|
@@ -51,9 +58,15 @@ class ZoneFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
|
|
|
51
58
|
to_field_name="name",
|
|
52
59
|
label=_("SOA MName"),
|
|
53
60
|
)
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
label=_("
|
|
61
|
+
dnssec_policy_id = django_filters.ModelMultipleChoiceFilter(
|
|
62
|
+
queryset=DNSSECPolicy.objects.all(),
|
|
63
|
+
label=_("DNSSEC Policy ID"),
|
|
64
|
+
)
|
|
65
|
+
dnssec_policy = django_filters.ModelMultipleChoiceFilter(
|
|
66
|
+
queryset=DNSSECPolicy.objects.all(),
|
|
67
|
+
field_name="dnssec_policy__name",
|
|
68
|
+
to_field_name="name",
|
|
69
|
+
label=_("DNSSEC Policy"),
|
|
57
70
|
)
|
|
58
71
|
rfc2317_prefix = MultiValueCharFilter(
|
|
59
72
|
method="filter_rfc2317_prefix",
|
|
@@ -121,6 +134,10 @@ class ZoneFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
|
|
|
121
134
|
to_field_name="contact_id",
|
|
122
135
|
label=_("Billing Contact"),
|
|
123
136
|
)
|
|
137
|
+
arpa_network = MultiValueCharFilter(
|
|
138
|
+
method="filter_arpa_network",
|
|
139
|
+
label=_("ARPA Network"),
|
|
140
|
+
)
|
|
124
141
|
active = django_filters.BooleanFilter(
|
|
125
142
|
label=_("Zone is active"),
|
|
126
143
|
)
|
|
@@ -141,6 +158,7 @@ class ZoneFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
|
|
|
141
158
|
"soa_minimum",
|
|
142
159
|
"soa_serial_auto",
|
|
143
160
|
"rfc2317_parent_managed",
|
|
161
|
+
"inline_signing",
|
|
144
162
|
"registry_domain_id",
|
|
145
163
|
)
|
|
146
164
|
|
|
@@ -179,6 +197,7 @@ class ZoneFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
|
|
|
179
197
|
Q(name__icontains=value)
|
|
180
198
|
| Q(status__icontains=value)
|
|
181
199
|
| Q(view__name__icontains=value)
|
|
200
|
+
| Q(dnssec_policy__name__icontains=value)
|
|
182
201
|
| Q(registrar__name__icontains=value)
|
|
183
202
|
| Q(registry_domain_id__icontains=value)
|
|
184
203
|
| Q(registrant__name__icontains=value)
|
|
@@ -12,6 +12,7 @@ from netbox_dns.models import (
|
|
|
12
12
|
Registrar,
|
|
13
13
|
RegistrationContact,
|
|
14
14
|
NameServer,
|
|
15
|
+
DNSSECPolicy,
|
|
15
16
|
)
|
|
16
17
|
|
|
17
18
|
|
|
@@ -55,6 +56,16 @@ class ZoneTemplateFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
|
|
|
55
56
|
to_field_name="name",
|
|
56
57
|
label=_("SOA MNAME"),
|
|
57
58
|
)
|
|
59
|
+
dnssec_policy_id = django_filters.ModelMultipleChoiceFilter(
|
|
60
|
+
queryset=DNSSECPolicy.objects.all(),
|
|
61
|
+
label=_("DNSSEC Policy ID"),
|
|
62
|
+
)
|
|
63
|
+
dnssec_policy = django_filters.ModelMultipleChoiceFilter(
|
|
64
|
+
queryset=DNSSECPolicy.objects.all(),
|
|
65
|
+
field_name="dnssec_policy__name",
|
|
66
|
+
to_field_name="name",
|
|
67
|
+
label=_("DNSSEC Policy"),
|
|
68
|
+
)
|
|
58
69
|
registrar_id = django_filters.ModelMultipleChoiceFilter(
|
|
59
70
|
queryset=Registrar.objects.all(),
|
|
60
71
|
label=_("Registrar ID"),
|
netbox_dns/forms/__init__.py
CHANGED
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
from django import forms
|
|
2
|
+
from django.contrib.postgres.forms import SimpleArrayField
|
|
3
|
+
from django.utils.translation import gettext_lazy as _
|
|
4
|
+
|
|
5
|
+
from netbox.forms import (
|
|
6
|
+
NetBoxModelBulkEditForm,
|
|
7
|
+
NetBoxModelFilterSetForm,
|
|
8
|
+
NetBoxModelImportForm,
|
|
9
|
+
NetBoxModelForm,
|
|
10
|
+
)
|
|
11
|
+
from utilities.forms.fields import (
|
|
12
|
+
TagFilterField,
|
|
13
|
+
CSVModelChoiceField,
|
|
14
|
+
DynamicModelChoiceField,
|
|
15
|
+
DynamicModelMultipleChoiceField,
|
|
16
|
+
)
|
|
17
|
+
from utilities.forms.rendering import FieldSet
|
|
18
|
+
from utilities.forms import add_blank_choice
|
|
19
|
+
from tenancy.models import Tenant, TenantGroup
|
|
20
|
+
from tenancy.forms import TenancyForm, TenancyFilterForm
|
|
21
|
+
|
|
22
|
+
from netbox_dns.models import DNSSECKeyTemplate, DNSSECPolicy
|
|
23
|
+
from netbox_dns.choices import (
|
|
24
|
+
DNSSECKeyTemplateTypeChoices,
|
|
25
|
+
DNSSECKeyTemplateAlgorithmChoices,
|
|
26
|
+
DNSSECKeyTemplateKeySizeChoices,
|
|
27
|
+
)
|
|
28
|
+
from netbox_dns.fields import TimePeriodField
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
__all__ = (
|
|
32
|
+
"DNSSECKeyTemplateForm",
|
|
33
|
+
"DNSSECKeyTemplateFilterForm",
|
|
34
|
+
"DNSSECKeyTemplateImportForm",
|
|
35
|
+
"DNSSECKeyTemplateBulkEditForm",
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class DNSSECKeyTemplateForm(TenancyForm, NetBoxModelForm):
|
|
40
|
+
lifetime = TimePeriodField(
|
|
41
|
+
required=False,
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
fieldsets = (
|
|
45
|
+
FieldSet("name", "description", name=_("Attributes")),
|
|
46
|
+
FieldSet("type", "lifetime", "algorithm", "key_size", name=_("Key Properties")),
|
|
47
|
+
FieldSet("tenant_group", "tenant", name=_("Tenancy")),
|
|
48
|
+
FieldSet("tags", name=_("Tags")),
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
class Meta:
|
|
52
|
+
model = DNSSECKeyTemplate
|
|
53
|
+
fields = (
|
|
54
|
+
"name",
|
|
55
|
+
"description",
|
|
56
|
+
"type",
|
|
57
|
+
"lifetime",
|
|
58
|
+
"key_size",
|
|
59
|
+
"algorithm",
|
|
60
|
+
"tenant_group",
|
|
61
|
+
"tenant",
|
|
62
|
+
"tags",
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
class DNSSECKeyTemplateFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
|
|
67
|
+
model = DNSSECKeyTemplate
|
|
68
|
+
fieldsets = (
|
|
69
|
+
FieldSet("q", "filter_id", "tag"),
|
|
70
|
+
FieldSet("name", "description", name=_("Attributes")),
|
|
71
|
+
FieldSet("policy_id", name=_("Policies")),
|
|
72
|
+
FieldSet("type", "lifetime", "algorithm", "key_size", name=_("Key Properties")),
|
|
73
|
+
FieldSet("tenant_group_id", "tenant_id", name=_("Tenancy")),
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
name = forms.CharField(
|
|
77
|
+
required=False,
|
|
78
|
+
)
|
|
79
|
+
description = forms.CharField(
|
|
80
|
+
required=False,
|
|
81
|
+
)
|
|
82
|
+
policy_id = DynamicModelMultipleChoiceField(
|
|
83
|
+
queryset=DNSSECPolicy.objects.all(),
|
|
84
|
+
required=False,
|
|
85
|
+
label=_("Policies"),
|
|
86
|
+
)
|
|
87
|
+
type = forms.MultipleChoiceField(
|
|
88
|
+
choices=DNSSECKeyTemplateTypeChoices,
|
|
89
|
+
required=False,
|
|
90
|
+
)
|
|
91
|
+
lifetime = SimpleArrayField(
|
|
92
|
+
base_field=forms.IntegerField(),
|
|
93
|
+
required=False,
|
|
94
|
+
help_text=_("Enter a list of integer lifetime values, separated by comma (,)"),
|
|
95
|
+
)
|
|
96
|
+
algorithm = forms.MultipleChoiceField(
|
|
97
|
+
choices=DNSSECKeyTemplateAlgorithmChoices,
|
|
98
|
+
required=False,
|
|
99
|
+
)
|
|
100
|
+
key_size = SimpleArrayField(
|
|
101
|
+
base_field=forms.ChoiceField(
|
|
102
|
+
choices=DNSSECKeyTemplateKeySizeChoices,
|
|
103
|
+
),
|
|
104
|
+
required=False,
|
|
105
|
+
help_text=_("Enter a list of integer key sizes, separated by comma (,)"),
|
|
106
|
+
)
|
|
107
|
+
tag = TagFilterField(DNSSECKeyTemplate)
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
class DNSSECKeyTemplateImportForm(NetBoxModelImportForm):
|
|
111
|
+
lifetime = TimePeriodField(
|
|
112
|
+
required=False,
|
|
113
|
+
label=_("Lifetime"),
|
|
114
|
+
)
|
|
115
|
+
tenant = CSVModelChoiceField(
|
|
116
|
+
queryset=Tenant.objects.all(),
|
|
117
|
+
to_field_name="name",
|
|
118
|
+
required=False,
|
|
119
|
+
label=_("Tenant"),
|
|
120
|
+
)
|
|
121
|
+
|
|
122
|
+
class Meta:
|
|
123
|
+
model = DNSSECKeyTemplate
|
|
124
|
+
fields = (
|
|
125
|
+
"name",
|
|
126
|
+
"description",
|
|
127
|
+
"type",
|
|
128
|
+
"lifetime",
|
|
129
|
+
"algorithm",
|
|
130
|
+
"key_size",
|
|
131
|
+
"tenant",
|
|
132
|
+
"tags",
|
|
133
|
+
)
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
class DNSSECKeyTemplateBulkEditForm(NetBoxModelBulkEditForm):
|
|
137
|
+
model = DNSSECKeyTemplate
|
|
138
|
+
|
|
139
|
+
type = forms.ChoiceField(
|
|
140
|
+
choices=add_blank_choice(DNSSECKeyTemplateTypeChoices),
|
|
141
|
+
required=False,
|
|
142
|
+
label=_("Key Type"),
|
|
143
|
+
)
|
|
144
|
+
lifetime = TimePeriodField(
|
|
145
|
+
required=False,
|
|
146
|
+
label=_("Lifetime"),
|
|
147
|
+
)
|
|
148
|
+
algorithm = forms.ChoiceField(
|
|
149
|
+
choices=add_blank_choice(DNSSECKeyTemplateAlgorithmChoices),
|
|
150
|
+
required=False,
|
|
151
|
+
label=_("Algorithm"),
|
|
152
|
+
)
|
|
153
|
+
key_size = forms.ChoiceField(
|
|
154
|
+
choices=add_blank_choice(DNSSECKeyTemplateKeySizeChoices),
|
|
155
|
+
required=False,
|
|
156
|
+
label=_("Key Size"),
|
|
157
|
+
)
|
|
158
|
+
description = forms.CharField(
|
|
159
|
+
max_length=200,
|
|
160
|
+
required=False,
|
|
161
|
+
label=_("Description"),
|
|
162
|
+
)
|
|
163
|
+
tenant_group = DynamicModelChoiceField(
|
|
164
|
+
queryset=TenantGroup.objects.all(),
|
|
165
|
+
required=False,
|
|
166
|
+
label=_("Tenant Group"),
|
|
167
|
+
)
|
|
168
|
+
tenant = DynamicModelChoiceField(
|
|
169
|
+
queryset=Tenant.objects.all(),
|
|
170
|
+
required=False,
|
|
171
|
+
label=_("Tenant"),
|
|
172
|
+
)
|
|
173
|
+
|
|
174
|
+
fieldsets = (
|
|
175
|
+
FieldSet(
|
|
176
|
+
"description",
|
|
177
|
+
name=_("Attributes"),
|
|
178
|
+
),
|
|
179
|
+
FieldSet("type", "lifetime", "algorithm", "key_size", name=_("Key Properties")),
|
|
180
|
+
FieldSet("tenant_group", "tenant", name=_("Tenancy")),
|
|
181
|
+
)
|
|
182
|
+
|
|
183
|
+
fields = (
|
|
184
|
+
"algorithm",
|
|
185
|
+
"key_size",
|
|
186
|
+
)
|
|
187
|
+
|
|
188
|
+
nullable_fields = ("description", "tenant", "lifetime", "key_size")
|