netbox-plugin-dns 0.21.12__py3-none-any.whl → 0.21.14__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 CHANGED
@@ -9,7 +9,7 @@ except ImportError:
9
9
  # NetBox 3.5.8
10
10
  from extras.plugins.utils import get_plugin_config
11
11
 
12
- __version__ = "0.21.12"
12
+ __version__ = "0.21.14"
13
13
 
14
14
 
15
15
  class DNSConfig(PluginConfig):
@@ -23,6 +23,7 @@ class Command(BaseCommand):
23
23
  for cf in (
24
24
  "ipaddress_dns_record_name",
25
25
  "ipaddress_dns_record_ttl",
26
+ "ipaddress_dns_record_disable_ptr",
26
27
  "ipaddress_dns_zone_id",
27
28
  ):
28
29
  try:
@@ -71,6 +72,25 @@ class Command(BaseCommand):
71
72
  if options.get("verbose"):
72
73
  self.stdout.write("Created custom field 'ipaddress_dns_record_ttl'")
73
74
 
75
+ if not CustomField.objects.filter(
76
+ name="ipaddress_dns_record_disable_ptr",
77
+ type=CustomFieldTypeChoices.TYPE_BOOLEAN,
78
+ content_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.content_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
+
74
94
  if not CustomField.objects.filter(
75
95
  name="ipaddress_dns_zone_id",
76
96
  type=CustomFieldTypeChoices.TYPE_OBJECT,
@@ -7,7 +7,7 @@ import utilities.json
7
7
  class Migration(migrations.Migration):
8
8
  dependencies = [
9
9
  ("netbox_dns", "0025_ipam_coupling_cf"),
10
- ("extras", "0098_webhook_custom_field_data_webhook_tags"),
10
+ ("extras", "0092_delete_jobresult"),
11
11
  ]
12
12
 
13
13
  operations = [
@@ -48,7 +48,7 @@ def ip_address_check_permissions_save(instance, **kwargs):
48
48
 
49
49
  record = get_address_record(instance)
50
50
  if record is not None:
51
- name, ttl, zone_id = ipaddress_cf_data(instance)
51
+ name, ttl, disable_ptr, zone_id = ipaddress_cf_data(instance)
52
52
  if zone_id is not None:
53
53
  update_address_record(record, instance)
54
54
  record.full_clean()
@@ -112,7 +112,7 @@ def ip_address_update_dns_information(instance, **kwargs):
112
112
  if not get_plugin_config("netbox_dns", "feature_ipam_coupling"):
113
113
  return
114
114
 
115
- name, ttl, zone_id = ipaddress_cf_data(instance)
115
+ name, ttl, disable_ptr, zone_id = ipaddress_cf_data(instance)
116
116
 
117
117
  if zone_id is not None:
118
118
  instance.dns_name = f"{name}.{Zone.objects.get(pk=zone_id).name}"
@@ -120,6 +120,7 @@ def ip_address_update_dns_information(instance, **kwargs):
120
120
  instance.dns_name = ""
121
121
  instance.custom_field_data["ipaddress_dns_record_name"] = None
122
122
  instance.custom_field_data["ipaddress_dns_record_ttl"] = None
123
+ instance.custom_field_data["ipaddress_dns_record_disable_ptr"] = False
123
124
  instance.custom_field_data["ipaddress_dns_zone_id"] = None
124
125
 
125
126
 
@@ -131,7 +132,7 @@ def ip_address_update_address_record(instance, **kwargs):
131
132
  if not get_plugin_config("netbox_dns", "feature_ipam_coupling"):
132
133
  return
133
134
 
134
- name, ttl, zone_id = ipaddress_cf_data(instance)
135
+ name, ttl, disable_ptr, zone_id = ipaddress_cf_data(instance)
135
136
 
136
137
  if zone_id is None:
137
138
  #
@@ -1,3 +1,6 @@
1
+ from packaging import version
2
+ from django.conf import settings
3
+
1
4
  try:
2
5
  # NetBox 3.5.0 - 3.5.7, 3.5.9+
3
6
  from extras.plugins import get_plugin_config
@@ -118,7 +121,11 @@ class RelatedDNSObjects(PluginTemplateExtension):
118
121
  )
119
122
 
120
123
 
121
- template_extensions = [RelatedDNSObjects]
124
+ template_extensions = list()
125
+
126
+ if version.parse(settings.VERSION) < version.parse("3.7.0"):
127
+ template_extensions.append(RelatedDNSObjects)
128
+
122
129
  if get_plugin_config("netbox_dns", "feature_ipam_coupling"):
123
130
  template_extensions.append(RelatedDNSRecords)
124
131
  elif get_plugin_config("netbox_dns", "feature_ipam_dns_info"):
@@ -2,9 +2,17 @@
2
2
 
3
3
  {% if perms.netbox_dns.view_record %}
4
4
  {% if related_address_records %}
5
+ {% if related_address_records.rows|length == 1 %}
6
+ {% include 'inc/panel_table.html' with table=related_address_records heading='Related DNS Address Record' %}
7
+ {% else %}
5
8
  {% include 'inc/panel_table.html' with table=related_address_records heading='Related DNS Address Records' %}
6
9
  {% endif %}
10
+ {% endif %}
7
11
  {% if related_pointer_records %}
12
+ {% if related_pointer_records.rows|length == 1 %}
13
+ {% include 'inc/panel_table.html' with table=related_pointer_records heading='Related DNS Pointer Record' %}
14
+ {% else %}
8
15
  {% include 'inc/panel_table.html' with table=related_pointer_records heading='Related DNS Pointer Records' %}
9
16
  {% endif %}
10
17
  {% endif %}
18
+ {% endif %}
@@ -80,7 +80,7 @@
80
80
  {% endif %}
81
81
  <tr>
82
82
  <th scope="row">TTL</th>
83
- <td>{{ object.ttl }}</td>
83
+ <td>{{ object.ttl|placeholder }}</td>
84
84
  </tr>
85
85
  {% if object.type == 'A' or object.type == 'AAAA' %}
86
86
  <tr>
@@ -11,12 +11,15 @@ class DNSPermissionDenied(Exception):
11
11
  def ipaddress_cf_data(ip_address):
12
12
  name = ip_address.custom_field_data.get("ipaddress_dns_record_name")
13
13
  ttl = ip_address.custom_field_data.get("ipaddress_dns_record_ttl")
14
+ disable_ptr = ip_address.custom_field_data.get(
15
+ "ipaddress_dns_record_disable_ptr", False
16
+ )
14
17
  zone_id = ip_address.custom_field_data.get("ipaddress_dns_zone_id")
15
18
 
16
19
  if name is None or zone_id is None:
17
- return None, None, None
20
+ return None, None, False, None
18
21
 
19
- return name, ttl, zone_id
22
+ return name, ttl, disable_ptr, zone_id
20
23
 
21
24
 
22
25
  def address_record_type(ip_address):
@@ -36,7 +39,7 @@ def get_address_record(ip_address):
36
39
 
37
40
 
38
41
  def new_address_record(instance):
39
- name, ttl, zone_id = ipaddress_cf_data(instance)
42
+ name, ttl, disable_ptr, zone_id = ipaddress_cf_data(instance)
40
43
 
41
44
  if zone_id is None:
42
45
  return None
@@ -45,6 +48,7 @@ def new_address_record(instance):
45
48
  name=name,
46
49
  zone_id=zone_id,
47
50
  ttl=ttl,
51
+ disable_ptr=disable_ptr,
48
52
  status=address_record_status(instance),
49
53
  type=address_record_type(instance),
50
54
  value=str(instance.address.ip),
@@ -54,10 +58,11 @@ def new_address_record(instance):
54
58
 
55
59
 
56
60
  def update_address_record(record, ip_address):
57
- name, ttl, zone_id = ipaddress_cf_data(ip_address)
61
+ name, ttl, disable_ptr, zone_id = ipaddress_cf_data(ip_address)
58
62
 
59
63
  record.name = name
60
64
  record.ttl = ttl
65
+ record.disable_ptr = disable_ptr
61
66
  record.zone_id = zone_id
62
67
  record.status = address_record_status(ip_address)
63
68
  record.value = str(ip_address.address.ip)
@@ -86,6 +91,8 @@ def dns_changed(old, new):
86
91
  != new.custom_field_data.get("ipaddress_dns_record_name"),
87
92
  old.custom_field_data.get("ipaddress_dns_record_ttl")
88
93
  != new.custom_field_data.get("ipaddress_dns_record_ttl"),
94
+ old.custom_field_data.get("ipaddress_dns_record_disable_ptr")
95
+ != new.custom_field_data.get("ipaddress_dns_record_disable_ptr"),
89
96
  old.custom_field_data.get("ipaddress_dns_zone_id")
90
97
  != new.custom_field_data.get("ipaddress_dns_zone_id"),
91
98
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: netbox-plugin-dns
3
- Version: 0.21.12
3
+ Version: 0.21.14
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
@@ -35,11 +35,11 @@ Description-Content-Type: text/markdown
35
35
 
36
36
  ## Features
37
37
 
38
- * Manage DNS name servers
39
- * Manage DNS zone information, automatically generating SOA and NS records
40
- * Manage DNS records
41
- * Automatically create and update PTR records for A and AAAA records
42
- * Optionally organize DNS zones in views to cater for split horizon DNS and multi-site deployments
38
+ * Manage name servers, zones and records
39
+ * Automatically generate SOA and NS records for zones
40
+ * Automatically create and update PTR records for IPv4 and IPv6 records
41
+ * Optionally organize DNS zones in views for split horizon DNS and multi-site deployments
42
+ * Optionally maintain domain registrar and registrant information for zones
43
43
 
44
44
  NetBox DNS is using the standardized NetBox plugin interface, so it also takes advantage of the NetBox tagging and change log features.
45
45
 
@@ -57,7 +57,7 @@ $ source /opt/netbox/venv/bin/activate
57
57
  (venv) $ pip install netbox-plugin-dns
58
58
  ```
59
59
 
60
- ### Configuration
60
+ ### NetBox Configuration
61
61
 
62
62
  Add the plugin to the NetBox config. `~/netbox/configuration.py`
63
63
 
@@ -67,7 +67,7 @@ PLUGINS = [
67
67
  ]
68
68
  ```
69
69
 
70
- To permanently mount the plugin when updating NetBox:
70
+ To permanently keep the plugin installed when updating NetBox via `update.sh`:
71
71
 
72
72
  ```
73
73
  echo netbox-plugin-dns >> ~/netbox/local_requirements.txt
@@ -79,23 +79,16 @@ To add the required netbox_dns tables to your database run the following command
79
79
  ./manage.py migrate
80
80
  ```
81
81
 
82
- Full reference: [Using Plugins - NetBox Documentation](https://netbox.readthedocs.io/en/stable/plugins/)
83
-
84
- ## Screenshots
85
-
86
- ![Zones](https://raw.githubusercontent.com/peteeckel/netbox-plugin-dns/main/docs/images/ZoneList.png)
87
-
88
- ![Zone Detail](https://raw.githubusercontent.com/peteeckel/netbox-plugin-dns/main/docs/images/ZoneDetail.png)
89
-
90
- ![Records](https://raw.githubusercontent.com/peteeckel/netbox-plugin-dns/main/docs/images/RecordList.png)
91
-
92
- ![Record Detail](https://raw.githubusercontent.com/peteeckel/netbox-plugin-dns/main/docs/images/RecordDetail.png)
82
+ Full documentation on using plugins with NetBox: [Using Plugins - NetBox Documentation](https://netbox.readthedocs.io/en/stable/plugins/)
93
83
 
94
84
  ## Contribute
95
85
 
96
86
  Contributions are always welcome! Please see: [contributing guide](CONTRIBUTING.md)
97
87
 
88
+ ## Documentation
89
+
90
+ For further information, please refer to the full documentation: [Using NetBox DNS](docs/using_netbox_dns.md)
91
+
98
92
  ## License
99
93
 
100
94
  MIT
101
-
@@ -1,4 +1,4 @@
1
- netbox_dns/__init__.py,sha256=Wc-jMRuWBjHSxrRHK8MiBVBq1nYiJFdtkrCaD1Av3QM,2255
1
+ netbox_dns/__init__.py,sha256=X8Tj6rsscS3qFlbj6YMuEeynqvcxx9Y3DjYfbs0yPD8,2255
2
2
  netbox_dns/api/nested_serializers.py,sha256=Do1wWwWrZ5a4OUuW0Sj8AU3AVlaCu675PAG78RT3dv4,2616
3
3
  netbox_dns/api/serializers.py,sha256=RXSETFLwRZQrUus8uzMt7q7wuB-QVoiHBQumQQxyX3s,7673
4
4
  netbox_dns/api/urls.py,sha256=R9VmmWtdrjvr35i5d_SfZK2lGn6JzmPuWEKTQlZ8MJo,575
@@ -30,7 +30,7 @@ netbox_dns/graphql/schema.py,sha256=D_dDusogaI55tmGx_dr1owsgzXS5fd2S-kPZ7xcXxs8,
30
30
  netbox_dns/graphql/view.py,sha256=S_61hYlQCtPQen1lI1UQs38UBWKQTaWfUxzlbpO07zA,467
31
31
  netbox_dns/graphql/zone.py,sha256=QDBxocezhLSHBGDV4RJnmarBfOsiUTeE9KzBGJ3gJi8,467
32
32
  netbox_dns/management/commands/cleanup_database.py,sha256=fGkzOPXDsZWTlwetnerzkMmdpluV4vo34XXB_z8-yHU,6035
33
- netbox_dns/management/commands/setup_coupling.py,sha256=nfMZmbhIVzXUMKYLO_zT9hfJQTbdGDWeGKQqTaoDYMg,3676
33
+ netbox_dns/management/commands/setup_coupling.py,sha256=Yn1nffPR7fBgB6WWBdDqdnp3k8z1QK8k6qi9xbx4U6Y,4580
34
34
  netbox_dns/management/commands/update_soa.py,sha256=qvlApMngTVpauj0CU0yeOy9r3lxxDciKorMxFsyvQhs,661
35
35
  netbox_dns/migrations/0001_initial.py,sha256=R9FbIQ7nO1ROb12NL8YQDkFQuP1r6-TtMcPwg4rwjus,4153
36
36
  netbox_dns/migrations/0001_squashed_netbox_dns_0_15.py,sha256=nxktsb-1oyiw1bHiBpnp8Vq4ugT0p0UMdJcYiq-UHoo,11466
@@ -58,7 +58,7 @@ netbox_dns/migrations/0022_search.py,sha256=KW1ffEZ4-0dppGQ_KD1EN7iw8eQJOnDco-xf
58
58
  netbox_dns/migrations/0023_alter_record_value.py,sha256=4_4v8YZzU8_jadJqIUUjH6SIhNTeALWhclozTqYDmv0,378
59
59
  netbox_dns/migrations/0024_tenancy.py,sha256=3kc5l5_AyfhOI6g6mbCfReUAbSgb2DAv0MDMZqJ-3YQ,1745
60
60
  netbox_dns/migrations/0025_ipam_coupling_cf.py,sha256=7uHujclWrsYw5QMLWft0Po78Ow5Q8MjPuU7moKyQ2qs,620
61
- netbox_dns/migrations/0026_domain_registration.py,sha256=iBgyZZfsy3MOBl1UoDNWHOq0VZH35-_EuK-ShieaImA,5818
61
+ netbox_dns/migrations/0026_domain_registration.py,sha256=qUJ1oUGHIGGNWD7QRLnxElbM5eNp7dYNNn_OYIw8Xvo,5796
62
62
  netbox_dns/migrations/0027_alter_registrar_iana_id.py,sha256=QUtRIrqqfkraFmzzeJFZWAEv4PfrOouoHtrV6FRn8Kc,404
63
63
  netbox_dns/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
64
  netbox_dns/models/__init__.py,sha256=Q7UIEe2vGh18AZN4er6CykciwXPQGgUq0L-9718wZqU,182
@@ -70,7 +70,7 @@ netbox_dns/models/view.py,sha256=ljs3Q2xQR63ZOSyja5H7DEdFbm7MX2ZjlR6uNVrAsVo,920
70
70
  netbox_dns/models/zone.py,sha256=wfOgvGnu8aT0A6xwthI0KDFSU3XY-R-Ut75mJ5-GkfQ,18076
71
71
  netbox_dns/navigation.py,sha256=IutEr_TcPgDGzqTT1ZzV4IUABLSOFU9v364BfpCqbro,4587
72
72
  netbox_dns/signals/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
- netbox_dns/signals/ipam_coupling.py,sha256=VXNNeOm47llpywpeGJJaPwmQiKWDBJ11m6-u_RMvijg,5043
73
+ netbox_dns/signals/ipam_coupling.py,sha256=nLBIWaVBnqcsr51YjPJAjwgDUcnN2uAu6O0p7bFTuRk,5161
74
74
  netbox_dns/tables/__init__.py,sha256=Aw8HrCTjaJfu5JSwJsQRHfOUz4zKwAmZNByT9q6BrFU,136
75
75
  netbox_dns/tables/contact.py,sha256=HpblHKrlQqQAPC59gvw8wUV3tc6UBAphHPE6CfN2uVM,747
76
76
  netbox_dns/tables/nameserver.py,sha256=7Ap0px5gAHtgk5XFMpZCHccy9N-v8UKy19GP7fdWuPc,819
@@ -78,12 +78,12 @@ netbox_dns/tables/record.py,sha256=t5m7SAg1syq9zkG38E-dV8SHAJGtvxiPy7YPig7FFKk,3
78
78
  netbox_dns/tables/registrar.py,sha256=fnClFyukZ5Un-jUigrjDRYK5_2YE2BAtbm6lqctbeJ4,621
79
79
  netbox_dns/tables/view.py,sha256=r9CLS96m-KojX3OYZ-k45FbVseHO20nPxRzlKrRrLio,501
80
80
  netbox_dns/tables/zone.py,sha256=KxnsaptTkffaPMC4SjMyAWro8adGvwqqrq3hz6K7aHE,1633
81
- netbox_dns/template_content.py,sha256=DmmXhZavOJUr3aPQTXuxiQgMRtkh5SQ_w8HIQe4QVQ4,3772
81
+ netbox_dns/template_content.py,sha256=dGy-CGnk03DA-MN6lXTjirY_spZ2l-Qb1ZWqsNynNjc,3936
82
82
  netbox_dns/templates/netbox_dns/contact.html,sha256=3qHGChgLYfqUgO3_z9jQ-lFIGS0ZehJdxJy04r3T0Tc,2858
83
83
  netbox_dns/templates/netbox_dns/nameserver.html,sha256=3AJVbsuhKg4Jy74rlvwrGSHd_IoDRdLT_XuK4EH3Djg,1623
84
84
  netbox_dns/templates/netbox_dns/record/managed.html,sha256=G6LPG1koUGuzUiwYdv1okdVa4sKaofiQegDBnsFL0kA,89
85
- netbox_dns/templates/netbox_dns/record/related.html,sha256=UhW0rwLrJdC1KqctthxdzKNlu0KFziNgaSphzqErM1M,378
86
- netbox_dns/templates/netbox_dns/record.html,sha256=iXEQe8mkGVqzxj4n06ffYPn5Qaz0PjLdGxDKlQxiw5c,5328
85
+ netbox_dns/templates/netbox_dns/record/related.html,sha256=Aqor8uGcuHQTHjlX-Xmni2Yp4N7lOBrMOqQiszrQOC0,742
86
+ netbox_dns/templates/netbox_dns/record.html,sha256=cLxYGnIMyLRkABu7RLhiJUqBqAOyWbzQwp8KORjVGGk,5340
87
87
  netbox_dns/templates/netbox_dns/registrar.html,sha256=Ijy8w0P3UPiyVFkIjk92d4n3GCqsm-0kQjk-QJ-2BCw,1956
88
88
  netbox_dns/templates/netbox_dns/related_dns_objects.html,sha256=KSzlnw1cStrJa3poKkwrt_ycIH0oH0STWIHRNy3ks4g,806
89
89
  netbox_dns/templates/netbox_dns/view.html,sha256=_lDjd2xY3upfGpNpemXXMzgsaKZlX3-PzPPAdYkIjvs,1350
@@ -95,7 +95,7 @@ netbox_dns/templates/netbox_dns/zone/registration.html,sha256=3R5uqLXZxIJkp9_LVn
95
95
  netbox_dns/templates/netbox_dns/zone.html,sha256=oz_GopJpox3aK_w6F5iqeKuA7-vROQceowGdgTfrj1Y,5852
96
96
  netbox_dns/urls.py,sha256=_ET6CstIhCk-H2sVX0XXyfPmWQmCFHVndph_KkTY8-M,8987
97
97
  netbox_dns/utilities/__init__.py,sha256=UjYHNp3RxToJgjOLs6iPn5ekETCpES2yWUfuqJXkDyU,1915
98
- netbox_dns/utilities/ipam_coupling.py,sha256=VbPKTkcSJfgeSirnJ1yoX_HzBYgRgNYKNFjKB7kAPUA,2702
98
+ netbox_dns/utilities/ipam_coupling.py,sha256=mlvacddnUfmRqxmy6Wd9cp3NehOF5xn6kIf_xuDqCvs,3078
99
99
  netbox_dns/validators.py,sha256=mauW5-7a-sjTxyP4qWiRi-kfffGEj9Ma7N2o-BJjx38,2232
100
100
  netbox_dns/views/__init__.py,sha256=Aw8HrCTjaJfu5JSwJsQRHfOUz4zKwAmZNByT9q6BrFU,136
101
101
  netbox_dns/views/contact.py,sha256=6-oCfK98-submcUTmi0ejw7QBscNn3S9bnS0oUTXOaY,2235
@@ -104,7 +104,7 @@ netbox_dns/views/record.py,sha256=eT-M-rqhCrcmhpEyKOnQ8SWnxAVUgams5e86nVL9uc0,25
104
104
  netbox_dns/views/registrar.py,sha256=aznSKt1L5tILMLGgcZiBR7u7B8rNl-jM1B2-N0fTeK8,2072
105
105
  netbox_dns/views/view.py,sha256=uUvtlNEh5MYoEALvWWaCOqj_Zj8dpGOL2PUyg-UPfEA,1895
106
106
  netbox_dns/views/zone.py,sha256=j1wxqEQKYxkQv2DqOHo0gP6e_hZrD2RTyZhkx5CCXFE,3988
107
- netbox_plugin_dns-0.21.12.dist-info/LICENSE,sha256=tziMJKpkMbySr09L6bIwsu7Ca9ICoqpMO3yAXgEMQA4,1076
108
- netbox_plugin_dns-0.21.12.dist-info/METADATA,sha256=nLJKgq6_2w7PmJwfIgEIL5IsnRsKc2dQDaxYRv09vog,3932
109
- netbox_plugin_dns-0.21.12.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
110
- netbox_plugin_dns-0.21.12.dist-info/RECORD,,
107
+ netbox_plugin_dns-0.21.14.dist-info/LICENSE,sha256=tziMJKpkMbySr09L6bIwsu7Ca9ICoqpMO3yAXgEMQA4,1076
108
+ netbox_plugin_dns-0.21.14.dist-info/METADATA,sha256=klHn2w4aIP-ZzgwW2gQBg9ZMWHVOE7o1G2pV1dKtZ98,3716
109
+ netbox_plugin_dns-0.21.14.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
110
+ netbox_plugin_dns-0.21.14.dist-info/RECORD,,