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
|
@@ -12,6 +12,34 @@ __all__ = ("ViewSerializer",)
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
class ViewSerializer(NetBoxModelSerializer):
|
|
15
|
+
class Meta:
|
|
16
|
+
model = View
|
|
17
|
+
|
|
18
|
+
fields = (
|
|
19
|
+
"id",
|
|
20
|
+
"url",
|
|
21
|
+
"display",
|
|
22
|
+
"name",
|
|
23
|
+
"default_view",
|
|
24
|
+
"tags",
|
|
25
|
+
"description",
|
|
26
|
+
"created",
|
|
27
|
+
"last_updated",
|
|
28
|
+
"custom_fields",
|
|
29
|
+
"tenant",
|
|
30
|
+
"prefixes",
|
|
31
|
+
"ip_address_filter",
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
brief_fields = (
|
|
35
|
+
"id",
|
|
36
|
+
"url",
|
|
37
|
+
"display",
|
|
38
|
+
"name",
|
|
39
|
+
"default_view",
|
|
40
|
+
"description",
|
|
41
|
+
)
|
|
42
|
+
|
|
15
43
|
url = serializers.HyperlinkedIdentityField(
|
|
16
44
|
view_name="plugins-api:netbox_dns-api:view-detail"
|
|
17
45
|
)
|
|
@@ -50,22 +78,3 @@ class ViewSerializer(NetBoxModelSerializer):
|
|
|
50
78
|
view.prefixes.set(prefixes)
|
|
51
79
|
|
|
52
80
|
return view
|
|
53
|
-
|
|
54
|
-
class Meta:
|
|
55
|
-
model = View
|
|
56
|
-
fields = (
|
|
57
|
-
"id",
|
|
58
|
-
"url",
|
|
59
|
-
"display",
|
|
60
|
-
"name",
|
|
61
|
-
"default_view",
|
|
62
|
-
"tags",
|
|
63
|
-
"description",
|
|
64
|
-
"created",
|
|
65
|
-
"last_updated",
|
|
66
|
-
"custom_fields",
|
|
67
|
-
"tenant",
|
|
68
|
-
"prefixes",
|
|
69
|
-
"ip_address_filter",
|
|
70
|
-
)
|
|
71
|
-
brief_fields = ("id", "url", "display", "name", "default_view", "description")
|
|
@@ -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(
|
|
43
|
-
|
|
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(
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
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(
|
|
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,58 +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
|
-
"registrar",
|
|
194
|
-
"registry_domain_id",
|
|
195
|
-
"expiration_date",
|
|
196
|
-
"domain_status",
|
|
197
|
-
"registrant",
|
|
198
|
-
"tech_c",
|
|
199
|
-
"admin_c",
|
|
200
|
-
"billing_c",
|
|
201
|
-
"active",
|
|
202
|
-
"custom_fields",
|
|
203
|
-
"tenant",
|
|
204
|
-
"template",
|
|
205
|
-
)
|
|
206
|
-
brief_fields = (
|
|
207
|
-
"id",
|
|
208
|
-
"url",
|
|
209
|
-
"name",
|
|
210
|
-
"view",
|
|
211
|
-
"display",
|
|
212
|
-
"status",
|
|
213
|
-
"description",
|
|
214
|
-
"rfc2317_prefix",
|
|
215
|
-
"active",
|
|
216
|
-
)
|
|
@@ -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(
|
|
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
|
-
)
|
netbox_dns/choices/record.py
CHANGED
|
@@ -17,8 +17,10 @@ __all__ = (
|
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
def _get_config_option(option_name):
|
|
20
|
-
return
|
|
21
|
-
"netbox_dns",
|
|
20
|
+
return list(
|
|
21
|
+
set(get_plugin_config("netbox_dns", option_name, []))
|
|
22
|
+
| set(get_plugin_config("netbox_dns", f"{option_name}+", []))
|
|
23
|
+
- set(get_plugin_config("netbox_dns", f"{option_name}-", []))
|
|
22
24
|
)
|
|
23
25
|
|
|
24
26
|
|
|
@@ -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
|
|
@@ -10,12 +10,14 @@ from utilities.filters import MultiValueCharFilter
|
|
|
10
10
|
from netbox_dns.models import DNSSECPolicy, DNSSECKeyTemplate, Zone, ZoneTemplate
|
|
11
11
|
from netbox_dns.choices import DNSSECPolicyStatusChoices
|
|
12
12
|
|
|
13
|
+
|
|
13
14
|
__all__ = ("DNSSECPolicyFilterSet",)
|
|
14
15
|
|
|
15
16
|
|
|
16
17
|
class DNSSECPolicyFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
|
|
17
18
|
class Meta:
|
|
18
19
|
model = DNSSECPolicy
|
|
20
|
+
|
|
19
21
|
fields = (
|
|
20
22
|
"id",
|
|
21
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
|
netbox_dns/filtersets/record.py
CHANGED
|
@@ -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
|
)
|
|
@@ -49,10 +63,10 @@ class RecordFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
|
|
|
49
63
|
label=_("View the Parent Zone belongs to"),
|
|
50
64
|
)
|
|
51
65
|
address_record_id = django_filters.ModelMultipleChoiceFilter(
|
|
52
|
-
field_name="
|
|
66
|
+
field_name="address_records",
|
|
53
67
|
queryset=Record.objects.all(),
|
|
54
68
|
to_field_name="id",
|
|
55
|
-
label=_("Address
|
|
69
|
+
label=_("Address Records"),
|
|
56
70
|
)
|
|
57
71
|
ptr_record_id = django_filters.ModelMultipleChoiceFilter(
|
|
58
72
|
field_name="ptr_record",
|
|
@@ -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
|
netbox_dns/filtersets/view.py
CHANGED
|
@@ -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
|
netbox_dns/filtersets/zone.py
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import netaddr
|
|
2
|
+
from netaddr.core import AddrFormatError
|
|
2
3
|
|
|
3
4
|
import django_filters
|
|
4
5
|
from django.db.models import Q
|
|
@@ -23,6 +24,28 @@ __all__ = ("ZoneFilterSet",)
|
|
|
23
24
|
|
|
24
25
|
|
|
25
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
|
+
|
|
26
49
|
status = django_filters.MultipleChoiceFilter(
|
|
27
50
|
choices=ZoneStatusChoices,
|
|
28
51
|
)
|
|
@@ -68,6 +91,10 @@ class ZoneFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
|
|
|
68
91
|
to_field_name="name",
|
|
69
92
|
label=_("DNSSEC Policy"),
|
|
70
93
|
)
|
|
94
|
+
parental_agents = MultiValueCharFilter(
|
|
95
|
+
method="filter_parental_agents",
|
|
96
|
+
label=_("Parental Agents"),
|
|
97
|
+
)
|
|
71
98
|
rfc2317_prefix = MultiValueCharFilter(
|
|
72
99
|
method="filter_rfc2317_prefix",
|
|
73
100
|
label=_("RFC2317 Prefix"),
|
|
@@ -146,26 +173,18 @@ class ZoneFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
|
|
|
146
173
|
label=_("Zone is active"),
|
|
147
174
|
)
|
|
148
175
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
"soa_expire",
|
|
162
|
-
"soa_minimum",
|
|
163
|
-
"soa_serial_auto",
|
|
164
|
-
"rfc2317_parent_managed",
|
|
165
|
-
"inline_signing",
|
|
166
|
-
"registry_domain_id",
|
|
167
|
-
"domain_status",
|
|
168
|
-
)
|
|
176
|
+
def filter_parental_agents(self, queryset, name, value):
|
|
177
|
+
if not value:
|
|
178
|
+
return queryset
|
|
179
|
+
|
|
180
|
+
query_values = []
|
|
181
|
+
for v in value:
|
|
182
|
+
try:
|
|
183
|
+
query_values.append(str(netaddr.IPAddress(v)))
|
|
184
|
+
except (AddrFormatError, ValueError):
|
|
185
|
+
pass
|
|
186
|
+
|
|
187
|
+
return queryset.filter(parental_agents__overlap=query_values)
|
|
169
188
|
|
|
170
189
|
def filter_arpa_network(self, queryset, name, value):
|
|
171
190
|
if not value:
|
|
@@ -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
|