netbox-plugin-dns 1.0.6__py3-none-any.whl → 1.1.0__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 +23 -4
- netbox_dns/api/nested_serializers.py +17 -16
- netbox_dns/api/serializers.py +2 -1
- netbox_dns/api/serializers_/prefix.py +18 -0
- netbox_dns/api/serializers_/record.py +1 -0
- netbox_dns/api/serializers_/{contact.py → registration_contact.py} +5 -5
- netbox_dns/api/serializers_/view.py +34 -2
- netbox_dns/api/serializers_/zone.py +5 -5
- netbox_dns/api/serializers_/zone_template.py +5 -5
- netbox_dns/api/urls.py +5 -2
- netbox_dns/api/views.py +17 -35
- netbox_dns/fields/__init__.py +1 -0
- netbox_dns/fields/ipam.py +15 -0
- netbox_dns/filtersets/__init__.py +1 -1
- netbox_dns/filtersets/record.py +1 -1
- netbox_dns/filtersets/{contact.py → registration_contact.py} +4 -4
- netbox_dns/filtersets/view.py +16 -0
- netbox_dns/filtersets/zone.py +15 -15
- netbox_dns/filtersets/zone_template.py +15 -15
- netbox_dns/forms/__init__.py +1 -1
- netbox_dns/forms/{contact.py → registration_contact.py} +16 -16
- netbox_dns/forms/view.py +204 -4
- netbox_dns/forms/zone.py +15 -18
- netbox_dns/forms/zone_template.py +13 -13
- netbox_dns/graphql/__init__.py +2 -2
- netbox_dns/graphql/filters.py +5 -5
- netbox_dns/graphql/schema.py +24 -44
- netbox_dns/graphql/types.py +41 -12
- netbox_dns/management/commands/rebuild_dnssync.py +18 -0
- netbox_dns/management/commands/setup_dnssync.py +140 -0
- netbox_dns/migrations/0007_alter_ordering_options.py +25 -0
- netbox_dns/migrations/0008_view_prefixes.py +18 -0
- netbox_dns/migrations/0009_rename_contact_registrationcontact.py +27 -0
- netbox_dns/models/__init__.py +1 -3
- netbox_dns/models/nameserver.py +8 -3
- netbox_dns/models/record.py +154 -24
- netbox_dns/models/record_template.py +4 -1
- netbox_dns/models/registrar.py +7 -1
- netbox_dns/models/{contact.py → registration_contact.py} +15 -9
- netbox_dns/models/view.py +14 -2
- netbox_dns/models/zone.py +76 -35
- netbox_dns/models/zone_template.py +12 -9
- netbox_dns/navigation.py +7 -7
- netbox_dns/signals/ipam_dnssync.py +224 -0
- netbox_dns/tables/__init__.py +1 -1
- netbox_dns/tables/ipam_dnssync.py +11 -0
- netbox_dns/tables/nameserver.py +1 -7
- netbox_dns/tables/record.py +43 -30
- netbox_dns/tables/record_template.py +0 -17
- netbox_dns/tables/registrar.py +0 -2
- netbox_dns/tables/{contact.py → registration_contact.py} +5 -6
- netbox_dns/tables/view.py +19 -4
- netbox_dns/tables/zone.py +0 -15
- netbox_dns/tables/zone_template.py +2 -16
- netbox_dns/template_content.py +41 -40
- netbox_dns/templates/netbox_dns/record.html +6 -6
- netbox_dns/templates/netbox_dns/{contact.html → registrationcontact.html} +1 -1
- netbox_dns/templates/netbox_dns/view/button.html +9 -0
- netbox_dns/templates/netbox_dns/view/prefix.html +41 -0
- netbox_dns/templates/netbox_dns/view/related.html +17 -0
- netbox_dns/templates/netbox_dns/view.html +25 -0
- netbox_dns/urls/__init__.py +2 -2
- netbox_dns/urls/nameserver.py +14 -38
- netbox_dns/urls/record.py +7 -19
- netbox_dns/urls/record_template.py +18 -27
- netbox_dns/urls/registrar.py +11 -35
- netbox_dns/urls/registration_contact.py +60 -0
- netbox_dns/urls/view.py +12 -20
- netbox_dns/urls/zone.py +8 -46
- netbox_dns/urls/zone_template.py +16 -26
- netbox_dns/utilities/__init__.py +2 -74
- netbox_dns/utilities/conversions.py +83 -0
- netbox_dns/utilities/ipam_dnssync.py +295 -0
- netbox_dns/validators/dns_name.py +9 -0
- netbox_dns/views/__init__.py +1 -1
- netbox_dns/views/nameserver.py +7 -3
- netbox_dns/views/record.py +12 -7
- netbox_dns/views/record_template.py +1 -1
- netbox_dns/views/registrar.py +0 -1
- netbox_dns/views/registration_contact.py +94 -0
- netbox_dns/views/view.py +32 -2
- netbox_dns/views/zone.py +7 -6
- netbox_dns/views/zone_template.py +2 -2
- {netbox_plugin_dns-1.0.6.dist-info → netbox_plugin_dns-1.1.0.dist-info}/METADATA +2 -1
- netbox_plugin_dns-1.1.0.dist-info/RECORD +146 -0
- netbox_dns/management/commands/setup_coupling.py +0 -109
- netbox_dns/signals/ipam_coupling.py +0 -168
- netbox_dns/templates/netbox_dns/related_dns_objects.html +0 -21
- netbox_dns/urls/contact.py +0 -51
- netbox_dns/utilities/ipam_coupling.py +0 -112
- netbox_dns/views/contact.py +0 -95
- netbox_plugin_dns-1.0.6.dist-info/RECORD +0 -136
- {netbox_plugin_dns-1.0.6.dist-info → netbox_plugin_dns-1.1.0.dist-info}/LICENSE +0 -0
- {netbox_plugin_dns-1.0.6.dist-info → netbox_plugin_dns-1.1.0.dist-info}/WHEEL +0 -0
netbox_dns/views/record.py
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
from dns import name as dns_name
|
|
2
2
|
|
|
3
3
|
from netbox.views import generic
|
|
4
|
+
from utilities.views import register_model_view
|
|
5
|
+
from tenancy.views import ObjectContactsView
|
|
4
6
|
|
|
5
7
|
from netbox_dns.filtersets import RecordFilterSet
|
|
6
8
|
from netbox_dns.forms import (
|
|
@@ -16,14 +18,14 @@ from netbox_dns.utilities import value_to_unicode
|
|
|
16
18
|
|
|
17
19
|
|
|
18
20
|
__all__ = (
|
|
19
|
-
"RecordListView",
|
|
20
|
-
"ManagedRecordListView",
|
|
21
21
|
"RecordView",
|
|
22
|
+
"RecordListView",
|
|
22
23
|
"RecordEditView",
|
|
23
24
|
"RecordDeleteView",
|
|
24
25
|
"RecordBulkImportView",
|
|
25
26
|
"RecordBulkEditView",
|
|
26
27
|
"RecordBulkDeleteView",
|
|
28
|
+
"ManagedRecordListView",
|
|
27
29
|
)
|
|
28
30
|
|
|
29
31
|
|
|
@@ -37,9 +39,7 @@ class RecordListView(generic.ObjectListView):
|
|
|
37
39
|
|
|
38
40
|
|
|
39
41
|
class ManagedRecordListView(generic.ObjectListView):
|
|
40
|
-
queryset = Record.objects.
|
|
41
|
-
"zone", "address_record"
|
|
42
|
-
)
|
|
42
|
+
queryset = Record.objects.prefetch_related("ipam_ip_address", "address_record")
|
|
43
43
|
filterset = RecordFilterSet
|
|
44
44
|
filterset_form = RecordFilterForm
|
|
45
45
|
table = ManagedRecordTable
|
|
@@ -90,11 +90,11 @@ class RecordView(generic.ObjectView):
|
|
|
90
90
|
zone=parent_zone,
|
|
91
91
|
)
|
|
92
92
|
cname_records = cname_records.union(
|
|
93
|
-
|
|
93
|
+
{
|
|
94
94
|
record
|
|
95
95
|
for record in parent_cname_records
|
|
96
96
|
if record.value_fqdn == instance.fqdn
|
|
97
|
-
|
|
97
|
+
}
|
|
98
98
|
)
|
|
99
99
|
|
|
100
100
|
if cname_records:
|
|
@@ -155,3 +155,8 @@ class RecordBulkEditView(generic.BulkEditView):
|
|
|
155
155
|
class RecordBulkDeleteView(generic.BulkDeleteView):
|
|
156
156
|
queryset = Record.objects.filter(managed=False)
|
|
157
157
|
table = RecordTable
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
@register_model_view(Record, "contacts")
|
|
161
|
+
class RecordContactsView(ObjectContactsView):
|
|
162
|
+
queryset = Record.objects.all()
|
netbox_dns/views/registrar.py
CHANGED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
from django.db.models import Q
|
|
2
|
+
|
|
3
|
+
from netbox.views import generic
|
|
4
|
+
|
|
5
|
+
from utilities.views import ViewTab, register_model_view
|
|
6
|
+
|
|
7
|
+
from netbox_dns.models import RegistrationContact, Zone
|
|
8
|
+
from netbox_dns.filtersets import RegistrationContactFilterSet, ZoneFilterSet
|
|
9
|
+
from netbox_dns.forms import (
|
|
10
|
+
RegistrationContactForm,
|
|
11
|
+
RegistrationContactFilterForm,
|
|
12
|
+
RegistrationContactImportForm,
|
|
13
|
+
RegistrationContactBulkEditForm,
|
|
14
|
+
)
|
|
15
|
+
from netbox_dns.tables import RegistrationContactTable, ZoneTable
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
__all__ = (
|
|
19
|
+
"RegistrationContactView",
|
|
20
|
+
"RegistrationContactEditView",
|
|
21
|
+
"RegistrationContactListView",
|
|
22
|
+
"RegistrationContactDeleteView",
|
|
23
|
+
"RegistrationContactBulkImportView",
|
|
24
|
+
"RegistrationContactBulkEditView",
|
|
25
|
+
"RegistrationContactBulkDeleteView",
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class RegistrationContactView(generic.ObjectView):
|
|
30
|
+
queryset = RegistrationContact.objects.all()
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class RegistrationContactListView(generic.ObjectListView):
|
|
34
|
+
queryset = RegistrationContact.objects.all()
|
|
35
|
+
table = RegistrationContactTable
|
|
36
|
+
filterset = RegistrationContactFilterSet
|
|
37
|
+
filterset_form = RegistrationContactFilterForm
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class RegistrationContactEditView(generic.ObjectEditView):
|
|
41
|
+
queryset = RegistrationContact.objects.all()
|
|
42
|
+
form = RegistrationContactForm
|
|
43
|
+
default_return_url = "plugins:netbox_dns:registrationcontact_list"
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
class RegistrationContactDeleteView(generic.ObjectDeleteView):
|
|
47
|
+
queryset = RegistrationContact.objects.all()
|
|
48
|
+
default_return_url = "plugins:netbox_dns:registrationcontact_list"
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
class RegistrationContactBulkImportView(generic.BulkImportView):
|
|
52
|
+
queryset = RegistrationContact.objects.all()
|
|
53
|
+
model_form = RegistrationContactImportForm
|
|
54
|
+
table = RegistrationContactTable
|
|
55
|
+
default_return_url = "plugins:netbox_dns:registrationcontact_list"
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
class RegistrationContactBulkEditView(generic.BulkEditView):
|
|
59
|
+
queryset = RegistrationContact.objects.all()
|
|
60
|
+
filterset = RegistrationContactFilterSet
|
|
61
|
+
table = RegistrationContactTable
|
|
62
|
+
form = RegistrationContactBulkEditForm
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
class RegistrationContactBulkDeleteView(generic.BulkDeleteView):
|
|
66
|
+
queryset = RegistrationContact.objects.all()
|
|
67
|
+
table = RegistrationContactTable
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
@register_model_view(RegistrationContact, "zones")
|
|
71
|
+
class RegistrationContactZoneListView(generic.ObjectChildrenView):
|
|
72
|
+
queryset = RegistrationContact.objects.all().prefetch_related(
|
|
73
|
+
"zone_set", "admin_c_zones", "tech_c_zones", "billing_c_zones"
|
|
74
|
+
)
|
|
75
|
+
child_model = Zone
|
|
76
|
+
table = ZoneTable
|
|
77
|
+
filterset = ZoneFilterSet
|
|
78
|
+
template_name = "netbox_dns/zone/child.html"
|
|
79
|
+
hide_if_empty = True
|
|
80
|
+
|
|
81
|
+
tab = ViewTab(
|
|
82
|
+
label="Zones",
|
|
83
|
+
permission="netbox_dns.view_zone",
|
|
84
|
+
badge=lambda obj: len(obj.zones),
|
|
85
|
+
hide_if_empty=True,
|
|
86
|
+
)
|
|
87
|
+
|
|
88
|
+
def get_children(self, request, parent):
|
|
89
|
+
return Zone.objects.filter(
|
|
90
|
+
Q(registrant=parent)
|
|
91
|
+
| Q(admin_c=parent)
|
|
92
|
+
| Q(tech_c=parent)
|
|
93
|
+
| Q(billing_c=parent)
|
|
94
|
+
)
|
netbox_dns/views/view.py
CHANGED
|
@@ -1,11 +1,20 @@
|
|
|
1
1
|
from utilities.views import ViewTab, register_model_view
|
|
2
2
|
|
|
3
3
|
from netbox.views import generic
|
|
4
|
+
from tenancy.views import ObjectContactsView
|
|
5
|
+
from ipam.models import Prefix
|
|
4
6
|
|
|
5
7
|
from netbox_dns.models import View, Zone
|
|
6
8
|
from netbox_dns.filtersets import ViewFilterSet, ZoneFilterSet
|
|
7
|
-
from netbox_dns.forms import
|
|
9
|
+
from netbox_dns.forms import (
|
|
10
|
+
ViewForm,
|
|
11
|
+
ViewFilterForm,
|
|
12
|
+
ViewImportForm,
|
|
13
|
+
ViewBulkEditForm,
|
|
14
|
+
ViewPrefixEditForm,
|
|
15
|
+
)
|
|
8
16
|
from netbox_dns.tables import ViewTable, ZoneTable
|
|
17
|
+
from netbox_dns.utilities import get_views_by_prefix
|
|
9
18
|
|
|
10
19
|
|
|
11
20
|
__all__ = (
|
|
@@ -16,7 +25,7 @@ __all__ = (
|
|
|
16
25
|
"ViewBulkImportView",
|
|
17
26
|
"ViewBulkEditView",
|
|
18
27
|
"ViewBulkDeleteView",
|
|
19
|
-
"
|
|
28
|
+
"ViewPrefixEditView",
|
|
20
29
|
)
|
|
21
30
|
|
|
22
31
|
|
|
@@ -61,6 +70,22 @@ class ViewBulkDeleteView(generic.BulkDeleteView):
|
|
|
61
70
|
table = ViewTable
|
|
62
71
|
|
|
63
72
|
|
|
73
|
+
class ViewPrefixEditView(generic.ObjectEditView):
|
|
74
|
+
queryset = Prefix.objects.all()
|
|
75
|
+
form = ViewPrefixEditForm
|
|
76
|
+
template_name = "netbox_dns/view/prefix.html"
|
|
77
|
+
|
|
78
|
+
def get_extra_context(self, request, instance):
|
|
79
|
+
parents = instance.get_parents()
|
|
80
|
+
if parents:
|
|
81
|
+
return {
|
|
82
|
+
"inherited_views": get_views_by_prefix(parents.last()),
|
|
83
|
+
"inherited_from": parents.filter(netbox_dns_views__isnull=False).last(),
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
return {}
|
|
87
|
+
|
|
88
|
+
|
|
64
89
|
@register_model_view(View, "zones")
|
|
65
90
|
class ViewZoneListView(generic.ObjectChildrenView):
|
|
66
91
|
queryset = View.objects.all().prefetch_related("zone_set")
|
|
@@ -79,3 +104,8 @@ class ViewZoneListView(generic.ObjectChildrenView):
|
|
|
79
104
|
|
|
80
105
|
def get_children(self, request, parent):
|
|
81
106
|
return parent.zone_set
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
@register_model_view(View, "contacts")
|
|
110
|
+
class ViewContactsView(ObjectContactsView):
|
|
111
|
+
queryset = View.objects.all()
|
netbox_dns/views/zone.py
CHANGED
|
@@ -2,6 +2,7 @@ from dns import name as dns_name
|
|
|
2
2
|
|
|
3
3
|
from netbox.views import generic
|
|
4
4
|
from utilities.views import ViewTab, register_model_view
|
|
5
|
+
from tenancy.views import ObjectContactsView
|
|
5
6
|
|
|
6
7
|
from netbox_dns.filtersets import ZoneFilterSet, RecordFilterSet
|
|
7
8
|
from netbox_dns.forms import (
|
|
@@ -19,18 +20,13 @@ from netbox_dns.tables import (
|
|
|
19
20
|
|
|
20
21
|
|
|
21
22
|
__all__ = (
|
|
22
|
-
"ZoneListView",
|
|
23
23
|
"ZoneView",
|
|
24
|
+
"ZoneListView",
|
|
24
25
|
"ZoneEditView",
|
|
25
26
|
"ZoneDeleteView",
|
|
26
27
|
"ZoneBulkImportView",
|
|
27
28
|
"ZoneBulkEditView",
|
|
28
29
|
"ZoneBulkDeleteView",
|
|
29
|
-
"ZoneRegistrationView",
|
|
30
|
-
"ZoneRecordListView",
|
|
31
|
-
"ZoneManagedRecordListView",
|
|
32
|
-
"ZoneRFC2317ChildZoneListView",
|
|
33
|
-
"ZoneChildZoneListView",
|
|
34
30
|
)
|
|
35
31
|
|
|
36
32
|
|
|
@@ -201,3 +197,8 @@ class ZoneChildZoneListView(generic.ObjectChildrenView):
|
|
|
201
197
|
|
|
202
198
|
def get_children(self, request, parent):
|
|
203
199
|
return parent.child_zones
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
@register_model_view(Zone, "contacts")
|
|
203
|
+
class ZoneContactsView(ObjectContactsView):
|
|
204
|
+
queryset = Zone.objects.all()
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from netbox.views import generic
|
|
2
2
|
|
|
3
|
+
from netbox_dns.models import ZoneTemplate
|
|
3
4
|
from netbox_dns.filtersets import ZoneTemplateFilterSet
|
|
4
5
|
from netbox_dns.forms import (
|
|
5
6
|
ZoneTemplateImportForm,
|
|
@@ -7,13 +8,12 @@ from netbox_dns.forms import (
|
|
|
7
8
|
ZoneTemplateFilterForm,
|
|
8
9
|
ZoneTemplateBulkEditForm,
|
|
9
10
|
)
|
|
10
|
-
from netbox_dns.models import ZoneTemplate
|
|
11
11
|
from netbox_dns.tables import ZoneTemplateTable, RecordTemplateDisplayTable
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
__all__ = (
|
|
15
|
-
"ZoneTemplateListView",
|
|
16
15
|
"ZoneTemplateView",
|
|
16
|
+
"ZoneTemplateListView",
|
|
17
17
|
"ZoneTemplateEditView",
|
|
18
18
|
"ZoneTemplateDeleteView",
|
|
19
19
|
"ZoneTemplateBulkImportView",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: netbox-plugin-dns
|
|
3
|
-
Version: 1.0
|
|
3
|
+
Version: 1.1.0
|
|
4
4
|
Summary: NetBox DNS is a NetBox plugin for managing DNS data.
|
|
5
5
|
Home-page: https://github.com/peteeckel/netbox-plugin-dns
|
|
6
6
|
License: MIT
|
|
@@ -48,6 +48,7 @@ The main focus of the plugin is to ensure the quality of the data stored in it.
|
|
|
48
48
|
* Validation of record types such as CNAME and singletons, to ensure DNS zone validity
|
|
49
49
|
* Support for [RFC 2317](https://datatracker.ietf.org/doc/html/rfc2317) delegation of PTR zones for IPv4 subnets longer than 24 bits
|
|
50
50
|
* Templating for zones and records enables faster creations of zones with given boilerplate object relations, such as name servers, tags, tenants or registration information, or records like standard SPF or MX records that are the same for a subset of zones
|
|
51
|
+
* IPAM DNSsync can be used to automatically create address and pointer records for IP addresses by assigning prefixes to DNS views. When an IP address has a DNS name assigned and there are zones with matching names in the DNS views linked to the IP address' prefix, a matching DNS record will be created in these zones
|
|
51
52
|
|
|
52
53
|
Other main features include:
|
|
53
54
|
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
netbox_dns/__init__.py,sha256=VeKyMc8-q9rCbxO2z30AYtLZVrw6myj1JkCgBv2BjSA,1920
|
|
2
|
+
netbox_dns/api/nested_serializers.py,sha256=zRIgWEtKIhvfxKOtxwFRfNeUQGWWNeuulfZ6oeFhe2w,3195
|
|
3
|
+
netbox_dns/api/serializers.py,sha256=bLbAjyIsj75S9wnQAGL-wYOkTlFS1Y7OsBObAPzNJxc,383
|
|
4
|
+
netbox_dns/api/serializers_/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
|
+
netbox_dns/api/serializers_/nameserver.py,sha256=PlpVsai24O73B-ZQ4wSaSC0_m_LCtQETDRSUYDb1xGw,1118
|
|
6
|
+
netbox_dns/api/serializers_/prefix.py,sha256=kZ1DjDly6VFZamXSxGa57YC6MfZZcI5S7jmGBkVB2_I,551
|
|
7
|
+
netbox_dns/api/serializers_/record.py,sha256=62924HonaKflFXkTgFft_624BKEikAMkak1AKDYsFvk,2316
|
|
8
|
+
netbox_dns/api/serializers_/record_template.py,sha256=qh-g-_f6M-eU4GzN-l0nPxiNBpZyYBgib26HwfOMtUc,1466
|
|
9
|
+
netbox_dns/api/serializers_/registrar.py,sha256=xLIaeBJ5ckV1Jf-uyCTFcvsLlsRMlpDtIg6q79vXZic,842
|
|
10
|
+
netbox_dns/api/serializers_/registration_contact.py,sha256=3IGWW5xB9XEBGApCGZCZIxpCmy1Y5jQUbA4GzmtaCik,1024
|
|
11
|
+
netbox_dns/api/serializers_/view.py,sha256=u5HqZtPzGCBTFCsH5GkPGsyG-oR4WIJ8XOqdWe3oUow,1723
|
|
12
|
+
netbox_dns/api/serializers_/zone.py,sha256=vQMKyC1Pcnvp7OjRnSZt-cMP5iae9HLuMts6_JyxrG4,4935
|
|
13
|
+
netbox_dns/api/serializers_/zone_template.py,sha256=itwcdMe8NxMbH95yXBJTQkzzMOWzOvzTOOHJWKfEFgg,3782
|
|
14
|
+
netbox_dns/api/urls.py,sha256=WXYJJvqJ25BvwyrmTY-0F6cJMrgEEdEcisGeMVWEeiY,826
|
|
15
|
+
netbox_dns/api/views.py,sha256=4B_mmezzONyWhEtwW_QpO8u5G3LE46mAmADbg4VD4gw,3795
|
|
16
|
+
netbox_dns/apps.py,sha256=JCW5eS-AQBUubDJve1DjP-IRFKTFGQh1NLGWzJpC5MI,151
|
|
17
|
+
netbox_dns/choices/__init__.py,sha256=jOVs2VGV5SVADRlqVnrFeAy26i8BIeEAbGpiX7K8bL8,42
|
|
18
|
+
netbox_dns/choices/record.py,sha256=IYW_g1ZvuNX2ZlRLOkurcrdfWgcXNpi2gQzRfX5C0lY,1113
|
|
19
|
+
netbox_dns/choices/zone.py,sha256=u0zt03gTkeo_und0VxaTTCh3GIFv6UxtUIhoe3VJ00A,472
|
|
20
|
+
netbox_dns/fields/__init__.py,sha256=U1nbFIwwtvr10pp3Sk91jEZeWkVQBSJtr0BVWYgOfiA,89
|
|
21
|
+
netbox_dns/fields/address.py,sha256=DJwc-z5Lg6US85gNIB_Chx7ahs1GYNswdhaXkLiK3jA,1554
|
|
22
|
+
netbox_dns/fields/ipam.py,sha256=wla-kBm77BpD0LNQhgRZS1RYbVois7WDqPpyQkUT02k,481
|
|
23
|
+
netbox_dns/fields/network.py,sha256=FgKEm5DAe_4D7Fubtj8B4SwfU3-Z9KV7kDIzRNpBBnQ,3682
|
|
24
|
+
netbox_dns/fields/rfc2317.py,sha256=24qNNLbI-SGlsKqGaLNaVk8EHFrju65YTET3O-8XgTc,2571
|
|
25
|
+
netbox_dns/filtersets/__init__.py,sha256=f8zJhpC3-TyK1OMgTaXmm1E6C2wUc1mNtoI6LOKkljQ,210
|
|
26
|
+
netbox_dns/filtersets/nameserver.py,sha256=I7RoIUcgXyIoMrhuS0dJr8uPi0AdNj6D3G6t2oSiQ7s,1147
|
|
27
|
+
netbox_dns/filtersets/record.py,sha256=Jt3RlI4MIfeY5xYkLse1y1rzmKCdmuk-CRAxxaNVYbY,3750
|
|
28
|
+
netbox_dns/filtersets/record_template.py,sha256=jGSjGFEnNSoxtUd7diV8wEhw8qZclz2dKLSqyVC7Djo,1548
|
|
29
|
+
netbox_dns/filtersets/registrar.py,sha256=Wh_l-IXRHnJhW7Pyokp3czQZISDKzXnWeSQKp512Drc,977
|
|
30
|
+
netbox_dns/filtersets/registration_contact.py,sha256=903sOcHPRCI0dVzqn1i0pn5VPr_4YpHPh5QE2-akR-Y,1139
|
|
31
|
+
netbox_dns/filtersets/view.py,sha256=sGUhmyr66GY2CVXOFX2g5evDt0nbU6XPPCwptvnicHQ,993
|
|
32
|
+
netbox_dns/filtersets/zone.py,sha256=T6ZLAtfhZRhS5U3R6pYodhFbVr-Te8gm57aaMDHN8us,6774
|
|
33
|
+
netbox_dns/filtersets/zone_template.py,sha256=qWHgveEJdfr36rCuPBGvBuhwNRooFu0ud_wteisGlGc,3850
|
|
34
|
+
netbox_dns/forms/__init__.py,sha256=axENVF9vX9BtDKCNxrapRjye1NnygUg9BS0BBj6a0io,209
|
|
35
|
+
netbox_dns/forms/nameserver.py,sha256=LHomCHmFcASobaD3Z7yhAyA24h-LrYImVMz-EUXbwK4,2836
|
|
36
|
+
netbox_dns/forms/record.py,sha256=svBVAFy-egDEPLcRWkxNi_1bkabKmWgJ87pmdNt6dh4,7155
|
|
37
|
+
netbox_dns/forms/record_template.py,sha256=Q77p9sExJ8Xbl-Co2Px2R0At5O3naQJwx4pnino6i2o,5573
|
|
38
|
+
netbox_dns/forms/registrar.py,sha256=FMnvrcq62R3wNp_2ZUEk3v_PIav0KrWPATaJ7_9KFAo,3758
|
|
39
|
+
netbox_dns/forms/registration_contact.py,sha256=WHpIRnwPD7nIDKi0-zRdv7tLUN2t_n3rmt_mZrqjfEk,5524
|
|
40
|
+
netbox_dns/forms/view.py,sha256=DkfZOLkCClTF-7pLMiZE8J1Z9_oxmeBiEWZ7-_yTZro,9045
|
|
41
|
+
netbox_dns/forms/zone.py,sha256=6NI3uiI2bXIhzPM7CTxR4pbv198xmU-QHEizy16Qb-E,23601
|
|
42
|
+
netbox_dns/forms/zone_template.py,sha256=D0JgQE03uQ_vR6zHkS78a5PzUziNSu1ho_mk61JTRo4,8317
|
|
43
|
+
netbox_dns/graphql/__init__.py,sha256=jghYD6uOSAis6YyLbtI3YJGZfwPw1uL2FBRsHs1EhNk,514
|
|
44
|
+
netbox_dns/graphql/filters.py,sha256=fHCjFIwbPBJJMk2W7HI8LhrfFhCtQtCM9IE8ZMgVafc,1766
|
|
45
|
+
netbox_dns/graphql/schema.py,sha256=z_56Co3d-cmswmnY8MeOryLOGZEGK4WwYW9eekNuYRw,2430
|
|
46
|
+
netbox_dns/graphql/types.py,sha256=W8uKiJrPCu1vnRbG4dj4pAaNiE5Nvnt0mmWCrSoXm68,6652
|
|
47
|
+
netbox_dns/management/commands/cleanup_database.py,sha256=kfnyybudwKGigjJmrOwafPWSUasZr9jQsxN4eWAgMvY,5969
|
|
48
|
+
netbox_dns/management/commands/cleanup_rrset_ttl.py,sha256=UFRURLBcFeGHUS2lrYFv7UWIebjI72aG1EUQJt0XsXw,2046
|
|
49
|
+
netbox_dns/management/commands/rebuild_dnssync.py,sha256=56YGEsAO_NYCXRmuL9Ju_Ni3FLtMD0MO4ObZAAPefLk,617
|
|
50
|
+
netbox_dns/management/commands/setup_dnssync.py,sha256=qtVj6egSjclaQbuI60hLfl-zg89VJVbX-TB17f1k77Y,5730
|
|
51
|
+
netbox_dns/management/commands/update_soa.py,sha256=Rj_Xk-qpwkAVRubVnM5OqSTwgzi93E0PqjwGb3rYjf0,660
|
|
52
|
+
netbox_dns/migrations/0001_squashed_netbox_dns_0_15.py,sha256=3U0810NWSHPu2dTSHpfzlleDgwMS04FhJ_CkO76SDaw,10283
|
|
53
|
+
netbox_dns/migrations/0001_squashed_netbox_dns_0_22.py,sha256=ML6Hp17lrXiaG0eUlBjKMm6HUNhw0AHPnKrb9AN-F6E,20279
|
|
54
|
+
netbox_dns/migrations/0002_contact_description_registrar_description.py,sha256=ZrI-L3jJ5GzdVx21pomgM4waE-njixHQjl_grjsGr0I,583
|
|
55
|
+
netbox_dns/migrations/0003_default_view.py,sha256=NByVlAyiiK6WCfJ014BiFPkoNcHeqr1IpkgNdHiwbWw,367
|
|
56
|
+
netbox_dns/migrations/0004_create_and_assign_default_view.py,sha256=npBFxWuJCZeMhbZLEH9C_sZcQZRaa3IOlyn4p_GULyk,627
|
|
57
|
+
netbox_dns/migrations/0005_alter_zone_view_not_null.py,sha256=vUfCFD-qeh5M1WCqtE1eYHXZwQVCcf841Z2-0CdcMRI,463
|
|
58
|
+
netbox_dns/migrations/0006_templating.py,sha256=7MOZ2bLwkjK1BQCBPBaFWJ-mS_JNrok1XUSh4rriq9Y,6271
|
|
59
|
+
netbox_dns/migrations/0007_alter_ordering_options.py,sha256=IDGgxEWOaSs9_WKJK1C_5_6M1uJtYscn3Vco0UHAol8,639
|
|
60
|
+
netbox_dns/migrations/0008_view_prefixes.py,sha256=LInzrOXTflGd2WUmyXZtjEegg7S_KBNvrbdo3jE28fE,472
|
|
61
|
+
netbox_dns/migrations/0009_rename_contact_registrationcontact.py,sha256=GPRERHZYEnsThVmV92YXqcaKQx942uYGiI_x5XFWofE,893
|
|
62
|
+
netbox_dns/migrations/0020_netbox_3_4.py,sha256=UMcHdn8ZAuQjUaM_3rEGpktYrM0TuvhccD7Jt7WQnPs,1271
|
|
63
|
+
netbox_dns/migrations/0021_record_ip_address.py,sha256=EqdhWXmq7aiK4X79xTRUZng3zFncCl-8JoO65HqlJKw,3244
|
|
64
|
+
netbox_dns/migrations/0022_search.py,sha256=KW1ffEZ4-0dppGQ_KD1EN7iw8eQJOnDco-xfJFRZqKQ,172
|
|
65
|
+
netbox_dns/migrations/0023_alter_record_value.py,sha256=4_4v8YZzU8_jadJqIUUjH6SIhNTeALWhclozTqYDmv0,378
|
|
66
|
+
netbox_dns/migrations/0024_tenancy.py,sha256=3kc5l5_AyfhOI6g6mbCfReUAbSgb2DAv0MDMZqJ-3YQ,1745
|
|
67
|
+
netbox_dns/migrations/0025_ipam_coupling_cf.py,sha256=7uHujclWrsYw5QMLWft0Po78Ow5Q8MjPuU7moKyQ2qs,620
|
|
68
|
+
netbox_dns/migrations/0026_domain_registration.py,sha256=qUJ1oUGHIGGNWD7QRLnxElbM5eNp7dYNNn_OYIw8Xvo,5796
|
|
69
|
+
netbox_dns/migrations/0027_alter_registrar_iana_id.py,sha256=QUtRIrqqfkraFmzzeJFZWAEv4PfrOouoHtrV6FRn8Kc,404
|
|
70
|
+
netbox_dns/migrations/0028_rfc2317_fields.py,sha256=D8r43xxBjYXiL6ycmX8RY5_WG7tRYEDjutOeYM1H56I,1364
|
|
71
|
+
netbox_dns/migrations/0029_record_fqdn.py,sha256=UAAU38ekKQyiYDOJlcrz6Qbk4bqZfSHZyAHUZFFQrOw,808
|
|
72
|
+
netbox_dns/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
73
|
+
netbox_dns/mixins/__init__.py,sha256=LxTEfpod_RHCyMtnzDljv0_dwqp2z3Q6tqbXW8LTGD8,35
|
|
74
|
+
netbox_dns/mixins/object_modification.py,sha256=JbGi8a52wkZ3fFBlfat590CfqRJcEWxBsxSeTIx3Qtg,833
|
|
75
|
+
netbox_dns/models/__init__.py,sha256=5Ns9RaemTe5L0L3c6a38RxembWhV-sX9cqfjl05aPQw,313
|
|
76
|
+
netbox_dns/models/nameserver.py,sha256=gvQRcTOVHRiX_rcBZfjNV6rTRKNJtA5HxgggYEgITPA,3296
|
|
77
|
+
netbox_dns/models/record.py,sha256=O8w6PtuUIaFyrZg1ghIe-ZSrdQ9snBEmOeiSlR5mBPQ,26454
|
|
78
|
+
netbox_dns/models/record_template.py,sha256=pyzrtk-VFEHf9hrWTW6pwPKo2AH5cEKR0XI4ZG9nVHk,4753
|
|
79
|
+
netbox_dns/models/registrar.py,sha256=zCSVa6NSN9sRJzvvuSUNK4LcHBbe0OvEiTbIcrrdk9k,1671
|
|
80
|
+
netbox_dns/models/registration_contact.py,sha256=v5BxTtGPrR22TyqIQkgaSH26ozhzIVrkU-PuezHki-g,3217
|
|
81
|
+
netbox_dns/models/view.py,sha256=hSvbb-xc7r3AyTvuxvCnWGqG7gpTkeO_FsZoHXCVMzY,3029
|
|
82
|
+
netbox_dns/models/zone.py,sha256=Xvg4gkskh5s6FlrA4AoAPB8aQ_Z5fBaXd8ACtgaFuEI,29598
|
|
83
|
+
netbox_dns/models/zone_template.py,sha256=LvNqUi_Ucj3zHb9b778kFM2EZ1s9aXp980Et5g7lvTY,3889
|
|
84
|
+
netbox_dns/navigation.py,sha256=YAEfmqoNRSXLSf-n3HLImDXbAfzcRdCh57BVnofmWPQ,6046
|
|
85
|
+
netbox_dns/signals/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
86
|
+
netbox_dns/signals/ipam_dnssync.py,sha256=ToGg2Z_L3wvM6gNHX-oU8QTEkbrsXuVt7J6IcQbGb9A,7964
|
|
87
|
+
netbox_dns/tables/__init__.py,sha256=axENVF9vX9BtDKCNxrapRjye1NnygUg9BS0BBj6a0io,209
|
|
88
|
+
netbox_dns/tables/ipam_dnssync.py,sha256=7gxf6nXn2zgpnpCr5E5qebXv7QCzrgIqfSzyka53USU,272
|
|
89
|
+
netbox_dns/tables/nameserver.py,sha256=GGi8x8QXbrFoFjxueL1zd5L-hDZwXGs1PcLZ2DyI4JI,652
|
|
90
|
+
netbox_dns/tables/record.py,sha256=Rcl2Iea37jFRURAExlURrVZD1XxRvQdskdh93Mn7aOs,3797
|
|
91
|
+
netbox_dns/tables/record_template.py,sha256=CcXvyGycwp16ZwQFdmdt5W5Tlt__i1sBi3mixVvht3E,1763
|
|
92
|
+
netbox_dns/tables/registrar.py,sha256=Vtl3RKjhWzUDv4wAfjbNV1prZHf6SyGYmSS0XKccI9g,640
|
|
93
|
+
netbox_dns/tables/registration_contact.py,sha256=xUszp7_vbZ79KHewBZkSyxNcWE3W3o8O6Pp0N-8VDXg,838
|
|
94
|
+
netbox_dns/tables/view.py,sha256=w6tq_zDXGf1-MVmoCoZEuPajiuH_rccRH5eU5eurQ_s,1038
|
|
95
|
+
netbox_dns/tables/zone.py,sha256=bVi4sLFdw61kfIiRJnoJOtgkVGGlTZcogw-cAzFtAEQ,1507
|
|
96
|
+
netbox_dns/tables/zone_template.py,sha256=gezSSpbNkiHnstNq470OsTmkl13foFXTGx-NH8W87Hw,1204
|
|
97
|
+
netbox_dns/template_content.py,sha256=YzE-ZJlERhFybrUKJrmNwHk8_8RPNexkV66x62Sbzic,3718
|
|
98
|
+
netbox_dns/templates/netbox_dns/nameserver.html,sha256=DpTdetQVV_jKThDbi62LvbhiCay-1QxR-yiJEiPFm4w,1554
|
|
99
|
+
netbox_dns/templates/netbox_dns/record/managed.html,sha256=G6LPG1koUGuzUiwYdv1okdVa4sKaofiQegDBnsFL0kA,89
|
|
100
|
+
netbox_dns/templates/netbox_dns/record/related.html,sha256=Aqor8uGcuHQTHjlX-Xmni2Yp4N7lOBrMOqQiszrQOC0,742
|
|
101
|
+
netbox_dns/templates/netbox_dns/record.html,sha256=o3z_D6Fqqn7nx1IwPXKQ75ZaPhU6kae0WpaWa3UMcxQ,5211
|
|
102
|
+
netbox_dns/templates/netbox_dns/recordtemplate.html,sha256=9tkXtKqa5p3LdOU9REm99WSFwGJaH8OczpIqXZuXMcg,3099
|
|
103
|
+
netbox_dns/templates/netbox_dns/registrar.html,sha256=O5veGmW59Pf5yN25ihPLvRIkA2P7xmSGv0G3NrRG8vI,2152
|
|
104
|
+
netbox_dns/templates/netbox_dns/registrationcontact.html,sha256=4I3I7G38bIOVifoqgGMyPTAhD0UaD8ZCnXK7Fu9K9VQ,2868
|
|
105
|
+
netbox_dns/templates/netbox_dns/view/button.html,sha256=oXKNyPtY8XIu2sxtZWpFRXKXv862407ESyUQ4YsWCGE,292
|
|
106
|
+
netbox_dns/templates/netbox_dns/view/prefix.html,sha256=HD8f4mnbzFOXDj3Y_yq8yEeDpz_yFud8ZMpqbxzCEnA,1445
|
|
107
|
+
netbox_dns/templates/netbox_dns/view/related.html,sha256=W9Ie2aOsFkWyYtBnZn38seQDBmyJkV9dqFDG-Dq3yMk,736
|
|
108
|
+
netbox_dns/templates/netbox_dns/view.html,sha256=zqf42FGdNudoIIWCaCe9bmP_VOZDbv3GjS-qJNMKPVY,2479
|
|
109
|
+
netbox_dns/templates/netbox_dns/zone/base.html,sha256=n_E4aVYdGeZZl-ARE8sb4DgAAgPs92X1UEFepX3xIlM,495
|
|
110
|
+
netbox_dns/templates/netbox_dns/zone/child.html,sha256=kH56PJFBGCjiRdIh7zCtClnZdfOChqN_sYslsyoz5gU,2147
|
|
111
|
+
netbox_dns/templates/netbox_dns/zone/child_zone.html,sha256=b9CSGWEfWT7hLQ80gApMnu7mXM8w2LT-3UaOYe6HIRQ,510
|
|
112
|
+
netbox_dns/templates/netbox_dns/zone/managed_record.html,sha256=LOchMAJyfMZIICE6q0pX1eorRbtgUtOQ1u0VvJKCDZ8,514
|
|
113
|
+
netbox_dns/templates/netbox_dns/zone/record.html,sha256=tu5RFm2eYJ3fjeUxZYDJqJ9qK8tGslXl1iGs60DlRyM,2194
|
|
114
|
+
netbox_dns/templates/netbox_dns/zone/registration.html,sha256=de2Kph-G8Gv5LD_Wf294SLfO0UKPS9NmHeQYRfJf-Ck,1151
|
|
115
|
+
netbox_dns/templates/netbox_dns/zone/rfc2317_child_zone.html,sha256=rWlmb3zRQbLYQ_1dsa0twwu6y1dRj2tfFVEERH07p-s,517
|
|
116
|
+
netbox_dns/templates/netbox_dns/zone.html,sha256=zPi1sLFnya-ytx8-Pcf_ujc1sKllCRuz48x2E-S1HSo,6285
|
|
117
|
+
netbox_dns/templates/netbox_dns/zonetemplate.html,sha256=qjUWqrg4uDaIFt9-g0OBxTi86i_ctf2Ps4qHh11djQE,3081
|
|
118
|
+
netbox_dns/urls/__init__.py,sha256=AhZrz9E8JkZU_uRYYa3hFueAocsT-UYfOMZOfvosvR4,647
|
|
119
|
+
netbox_dns/urls/nameserver.py,sha256=-arhTF-q_h6IqcZ-CHD4GbBNCxltwRP-RoLY34KWITA,1294
|
|
120
|
+
netbox_dns/urls/record.py,sha256=5HnwrsQKbB3jcCfUSwrArItTYsKBTQaa8WiRt7SBniI,1136
|
|
121
|
+
netbox_dns/urls/record_template.py,sha256=kRAaienuN89WrOZGEcH1eZtiVlNsxsbZ1sjxWGxLKa0,1514
|
|
122
|
+
netbox_dns/urls/registrar.py,sha256=qhf_Qh4CYKmKYNoFIkuJxVtq1V0PMDYmqXq7olB0zfg,1211
|
|
123
|
+
netbox_dns/urls/registration_contact.py,sha256=hS9xzBN1jsHkGJzTYEpoCFZdXSbQx0yJpelB5SK4xq8,1718
|
|
124
|
+
netbox_dns/urls/view.py,sha256=pz-0iP_vGFUvrzIeOjq5Ebkmnaci8c4_5b2L0gYZvUE,1088
|
|
125
|
+
netbox_dns/urls/zone.py,sha256=EzZ_U5v9NfWB5TVAc0i35EI-SVyXl6KrI844sMT0x5Q,937
|
|
126
|
+
netbox_dns/urls/zone_template.py,sha256=nGrIaincQxCabUsLJL9JODoeTToMRSPllm7kuiPzeII,1378
|
|
127
|
+
netbox_dns/utilities/__init__.py,sha256=mmR0JdH1DJVhUKesnO3CZFj0Rw_wrsMPoYTpOOKHl9I,55
|
|
128
|
+
netbox_dns/utilities/conversions.py,sha256=NS37SoMqXc13wNWRkKnLfyQbVi6QKD33fu5ovTKRo74,1979
|
|
129
|
+
netbox_dns/utilities/ipam_dnssync.py,sha256=nopMJ3So1OjD0RDkbinnLLtR-8OHIlrh-0WtDHSZKRY,8622
|
|
130
|
+
netbox_dns/validators/__init__.py,sha256=Mr8TvmcJTa8Pubj8TzbFBKfbHhEmGcr5JdQvczEJ39A,72
|
|
131
|
+
netbox_dns/validators/dns_name.py,sha256=4JojiP6pb1Z1m_PmDv4g65Ckhg5rQkVqm8JAwHW28nA,3432
|
|
132
|
+
netbox_dns/validators/dns_value.py,sha256=y2Zga4hmywqDrTBXcMC-sWaFbw4eoY8pySq7cWnMP8Y,2822
|
|
133
|
+
netbox_dns/validators/rfc2317.py,sha256=ivylEiNKlmX2x41rwqDrFkD5CFf9FtpNEfsKHX_prbE,585
|
|
134
|
+
netbox_dns/views/__init__.py,sha256=axENVF9vX9BtDKCNxrapRjye1NnygUg9BS0BBj6a0io,209
|
|
135
|
+
netbox_dns/views/nameserver.py,sha256=CeZsKTciW85LFX9tMaGkiW1DUDT77jghtHnPCHFTAP8,3405
|
|
136
|
+
netbox_dns/views/record.py,sha256=fNpmSLH9kAaBMtsFy28bRIPRF8DMSBUPh1XlrYhYM9U,4781
|
|
137
|
+
netbox_dns/views/record_template.py,sha256=amYQc8dEwjI8msTSukcq4FwVqKF9eHSlaMBOFkHe0CE,2510
|
|
138
|
+
netbox_dns/views/registrar.py,sha256=ICaX9weZugWJXyRBjpHM5vD3Yz0hnhKKgb5e5DZf6zI,2295
|
|
139
|
+
netbox_dns/views/registration_contact.py,sha256=Yg4gTldQQPfAFgjD7vultw3OmcovWZtiNsUPyT22PiQ,2972
|
|
140
|
+
netbox_dns/views/view.py,sha256=-qdpEVrAI_fquZa-_jW2FvNXmCt3yRHIrkfgKKi01hc,2899
|
|
141
|
+
netbox_dns/views/zone.py,sha256=Na286tp_XcnT-4FIgXsvh1wPByir0RtBil0B2JhfuZE,5495
|
|
142
|
+
netbox_dns/views/zone_template.py,sha256=UaPEReBFoJP1k7MC8jS-iT3KQtJqSFu67jjCRiTCH4c,2118
|
|
143
|
+
netbox_plugin_dns-1.1.0.dist-info/LICENSE,sha256=I3tDu11bZfhFm3EkV4zOD5TmWgLjnUNLEFwrdjniZYs,1112
|
|
144
|
+
netbox_plugin_dns-1.1.0.dist-info/METADATA,sha256=akPhzYzccwtnUBd2peusrqZiBfMKAQlNk1JD-2amaJE,6723
|
|
145
|
+
netbox_plugin_dns-1.1.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
146
|
+
netbox_plugin_dns-1.1.0.dist-info/RECORD,,
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
from django.core.management.base import BaseCommand
|
|
2
|
-
|
|
3
|
-
from core.models import ObjectType
|
|
4
|
-
from extras.models import CustomField
|
|
5
|
-
from extras.choices import CustomFieldTypeChoices
|
|
6
|
-
from ipam.models import IPAddress
|
|
7
|
-
from netbox_dns.models import Zone
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class Command(BaseCommand):
|
|
11
|
-
help = "Setup IPAddress custom fields needed for IPAM-DNS coupling"
|
|
12
|
-
|
|
13
|
-
def add_arguments(self, parser):
|
|
14
|
-
parser.add_argument(
|
|
15
|
-
"--remove", action="store_true", help="Remove custom fields"
|
|
16
|
-
)
|
|
17
|
-
parser.add_argument("--verbose", action="store_true", help="Verbose output")
|
|
18
|
-
|
|
19
|
-
def handle(self, *model_names, **options):
|
|
20
|
-
ipaddress_object_type = ObjectType.objects.get_for_model(IPAddress)
|
|
21
|
-
|
|
22
|
-
if options["remove"]:
|
|
23
|
-
for cf in (
|
|
24
|
-
"ipaddress_dns_record_name",
|
|
25
|
-
"ipaddress_dns_record_ttl",
|
|
26
|
-
"ipaddress_dns_record_disable_ptr",
|
|
27
|
-
"ipaddress_dns_zone_id",
|
|
28
|
-
):
|
|
29
|
-
try:
|
|
30
|
-
CustomField.objects.get(
|
|
31
|
-
name=cf, object_types=ipaddress_object_type
|
|
32
|
-
).delete()
|
|
33
|
-
if options.get("verbose"):
|
|
34
|
-
self.stdout.write(f"Custom field '{cf}' removed")
|
|
35
|
-
except CustomField.DoesNotExist:
|
|
36
|
-
pass
|
|
37
|
-
|
|
38
|
-
else:
|
|
39
|
-
if not CustomField.objects.filter(
|
|
40
|
-
name="ipaddress_dns_record_name",
|
|
41
|
-
type=CustomFieldTypeChoices.TYPE_TEXT,
|
|
42
|
-
object_types=ipaddress_object_type,
|
|
43
|
-
).exists():
|
|
44
|
-
cf_name = CustomField.objects.create(
|
|
45
|
-
name="ipaddress_dns_record_name",
|
|
46
|
-
label="Name",
|
|
47
|
-
type=CustomFieldTypeChoices.TYPE_TEXT,
|
|
48
|
-
required=False,
|
|
49
|
-
group_name="DNS",
|
|
50
|
-
)
|
|
51
|
-
cf_name.object_types.set([ipaddress_object_type])
|
|
52
|
-
if options.get("verbose"):
|
|
53
|
-
self.stdout.write(
|
|
54
|
-
"Created custom field 'ipaddress_dns_record_name'"
|
|
55
|
-
)
|
|
56
|
-
|
|
57
|
-
if not CustomField.objects.filter(
|
|
58
|
-
name="ipaddress_dns_record_ttl",
|
|
59
|
-
type=CustomFieldTypeChoices.TYPE_INTEGER,
|
|
60
|
-
object_types=ipaddress_object_type,
|
|
61
|
-
).exists():
|
|
62
|
-
cf_ttl = CustomField.objects.create(
|
|
63
|
-
name="ipaddress_dns_record_ttl",
|
|
64
|
-
label="TTL",
|
|
65
|
-
type=CustomFieldTypeChoices.TYPE_INTEGER,
|
|
66
|
-
validation_minimum=0,
|
|
67
|
-
validation_maximum=2147483647,
|
|
68
|
-
required=False,
|
|
69
|
-
group_name="DNS",
|
|
70
|
-
)
|
|
71
|
-
cf_ttl.object_types.set([ipaddress_object_type])
|
|
72
|
-
if options.get("verbose"):
|
|
73
|
-
self.stdout.write("Created custom field 'ipaddress_dns_record_ttl'")
|
|
74
|
-
|
|
75
|
-
if not CustomField.objects.filter(
|
|
76
|
-
name="ipaddress_dns_record_disable_ptr",
|
|
77
|
-
type=CustomFieldTypeChoices.TYPE_BOOLEAN,
|
|
78
|
-
object_types=ipaddress_object_type,
|
|
79
|
-
).exists():
|
|
80
|
-
cf_disable_ptr = CustomField.objects.create(
|
|
81
|
-
name="ipaddress_dns_record_disable_ptr",
|
|
82
|
-
label="Disable PTR",
|
|
83
|
-
type=CustomFieldTypeChoices.TYPE_BOOLEAN,
|
|
84
|
-
required=False,
|
|
85
|
-
default=False,
|
|
86
|
-
group_name="DNS",
|
|
87
|
-
)
|
|
88
|
-
cf_disable_ptr.object_types.set([ipaddress_object_type])
|
|
89
|
-
if options.get("verbose"):
|
|
90
|
-
self.stdout.write(
|
|
91
|
-
"Created custom field 'ipaddress_dns_record_disable_ptr'"
|
|
92
|
-
)
|
|
93
|
-
|
|
94
|
-
if not CustomField.objects.filter(
|
|
95
|
-
name="ipaddress_dns_zone_id",
|
|
96
|
-
type=CustomFieldTypeChoices.TYPE_OBJECT,
|
|
97
|
-
object_types=ipaddress_object_type,
|
|
98
|
-
).exists():
|
|
99
|
-
cf_zone = CustomField.objects.create(
|
|
100
|
-
name="ipaddress_dns_zone_id",
|
|
101
|
-
label="Zone",
|
|
102
|
-
type=CustomFieldTypeChoices.TYPE_OBJECT,
|
|
103
|
-
related_object_type=ObjectType.objects.get_for_model(Zone),
|
|
104
|
-
required=False,
|
|
105
|
-
group_name="DNS",
|
|
106
|
-
)
|
|
107
|
-
cf_zone.object_types.set([ipaddress_object_type])
|
|
108
|
-
if options.get("verbose"):
|
|
109
|
-
self.stdout.write("Created custom field 'ipaddress_dns_zone_id'")
|