netbox-plugin-dns 0.21.4__py3-none-any.whl → 1.4.7__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.
Files changed (232) hide show
  1. netbox_dns/__init__.py +106 -41
  2. netbox_dns/api/field_serializers.py +25 -0
  3. netbox_dns/api/nested_serializers.py +95 -52
  4. netbox_dns/api/serializers.py +14 -296
  5. netbox_dns/api/serializers_/__init__.py +0 -0
  6. netbox_dns/api/serializers_/dnssec_key_template.py +69 -0
  7. netbox_dns/api/serializers_/dnssec_policy.py +165 -0
  8. netbox_dns/api/serializers_/nameserver.py +56 -0
  9. netbox_dns/api/serializers_/prefix.py +18 -0
  10. netbox_dns/api/serializers_/record.py +105 -0
  11. netbox_dns/api/serializers_/record_template.py +71 -0
  12. netbox_dns/api/serializers_/registrar.py +45 -0
  13. netbox_dns/api/serializers_/registration_contact.py +50 -0
  14. netbox_dns/api/serializers_/view.py +81 -0
  15. netbox_dns/api/serializers_/zone.py +247 -0
  16. netbox_dns/api/serializers_/zone_template.py +157 -0
  17. netbox_dns/api/urls.py +13 -2
  18. netbox_dns/api/views.py +96 -58
  19. netbox_dns/choices/__init__.py +4 -0
  20. netbox_dns/choices/dnssec_key_template.py +67 -0
  21. netbox_dns/choices/dnssec_policy.py +40 -0
  22. netbox_dns/choices/record.py +104 -0
  23. netbox_dns/choices/utilities.py +4 -0
  24. netbox_dns/choices/zone.py +119 -0
  25. netbox_dns/fields/__init__.py +4 -0
  26. netbox_dns/fields/address.py +22 -16
  27. netbox_dns/fields/choice_array.py +33 -0
  28. netbox_dns/fields/ipam.py +15 -0
  29. netbox_dns/fields/network.py +42 -18
  30. netbox_dns/fields/rfc2317.py +97 -0
  31. netbox_dns/fields/timeperiod.py +33 -0
  32. netbox_dns/filters.py +7 -0
  33. netbox_dns/filtersets/__init__.py +12 -0
  34. netbox_dns/filtersets/dnssec_key_template.py +57 -0
  35. netbox_dns/filtersets/dnssec_policy.py +101 -0
  36. netbox_dns/filtersets/nameserver.py +46 -0
  37. netbox_dns/filtersets/record.py +135 -0
  38. netbox_dns/filtersets/record_template.py +59 -0
  39. netbox_dns/{filters → filtersets}/registrar.py +8 -1
  40. netbox_dns/{filters/contact.py → filtersets/registration_contact.py} +9 -3
  41. netbox_dns/filtersets/view.py +45 -0
  42. netbox_dns/filtersets/zone.py +254 -0
  43. netbox_dns/filtersets/zone_template.py +165 -0
  44. netbox_dns/forms/__init__.py +5 -1
  45. netbox_dns/forms/dnssec_key_template.py +250 -0
  46. netbox_dns/forms/dnssec_policy.py +654 -0
  47. netbox_dns/forms/nameserver.py +121 -27
  48. netbox_dns/forms/record.py +215 -104
  49. netbox_dns/forms/record_template.py +285 -0
  50. netbox_dns/forms/registrar.py +108 -31
  51. netbox_dns/forms/registration_contact.py +282 -0
  52. netbox_dns/forms/view.py +331 -20
  53. netbox_dns/forms/zone.py +769 -373
  54. netbox_dns/forms/zone_template.py +463 -0
  55. netbox_dns/graphql/__init__.py +25 -22
  56. netbox_dns/graphql/enums.py +41 -0
  57. netbox_dns/graphql/filter_lookups.py +13 -0
  58. netbox_dns/graphql/filters/__init__.py +12 -0
  59. netbox_dns/graphql/filters/dnssec_key_template.py +63 -0
  60. netbox_dns/graphql/filters/dnssec_policy.py +124 -0
  61. netbox_dns/graphql/filters/nameserver.py +32 -0
  62. netbox_dns/graphql/filters/record.py +89 -0
  63. netbox_dns/graphql/filters/record_template.py +55 -0
  64. netbox_dns/graphql/filters/registrar.py +30 -0
  65. netbox_dns/graphql/filters/registration_contact.py +27 -0
  66. netbox_dns/graphql/filters/view.py +28 -0
  67. netbox_dns/graphql/filters/zone.py +147 -0
  68. netbox_dns/graphql/filters/zone_template.py +97 -0
  69. netbox_dns/graphql/schema.py +89 -7
  70. netbox_dns/graphql/types.py +355 -0
  71. netbox_dns/locale/de/LC_MESSAGES/django.mo +0 -0
  72. netbox_dns/locale/en/LC_MESSAGES/django.mo +0 -0
  73. netbox_dns/locale/fr/LC_MESSAGES/django.mo +0 -0
  74. netbox_dns/management/commands/cleanup_database.py +175 -156
  75. netbox_dns/management/commands/cleanup_rrset_ttl.py +64 -0
  76. netbox_dns/management/commands/rebuild_dnssync.py +23 -0
  77. netbox_dns/management/commands/setup_dnssync.py +140 -0
  78. netbox_dns/migrations/0001_squashed_netbox_dns_0_15.py +0 -27
  79. netbox_dns/migrations/0001_squashed_netbox_dns_0_22.py +557 -0
  80. netbox_dns/migrations/{0013_add_nameserver_zone_record_description.py → 0002_contact_description_registrar_description.py} +4 -9
  81. netbox_dns/migrations/0003_default_view.py +15 -0
  82. netbox_dns/migrations/0004_create_and_assign_default_view.py +26 -0
  83. netbox_dns/migrations/0005_alter_zone_view_not_null.py +18 -0
  84. netbox_dns/migrations/0006_templating.py +172 -0
  85. netbox_dns/migrations/0007_alter_ordering_options.py +25 -0
  86. netbox_dns/migrations/0008_view_prefixes.py +18 -0
  87. netbox_dns/migrations/0009_rename_contact_registrationcontact.py +36 -0
  88. netbox_dns/migrations/0010_view_ip_address_filter.py +18 -0
  89. netbox_dns/migrations/0011_rename_related_fields.py +63 -0
  90. netbox_dns/migrations/0012_natural_ordering.py +88 -0
  91. netbox_dns/migrations/0013_zonetemplate_soa_mname_zonetemplate_soa_rname.py +30 -0
  92. netbox_dns/migrations/0014_alter_unique_constraints_lowercase.py +42 -0
  93. netbox_dns/migrations/0015_dnssec.py +168 -0
  94. netbox_dns/migrations/{0015_add_record_status.py → 0016_dnssec_policy_status.py} +5 -4
  95. netbox_dns/migrations/0017_dnssec_policy_zone_zone_template.py +41 -0
  96. netbox_dns/migrations/0018_zone_domain_status_zone_expiration_date.py +23 -0
  97. netbox_dns/migrations/0019_dnssecpolicy_parental_agents.py +25 -0
  98. netbox_dns/migrations/0020_netbox_3_4.py +1 -1
  99. netbox_dns/migrations/0020_remove_dnssecpolicy_parental_agents_and_more.py +29 -0
  100. netbox_dns/migrations/0021_alter_record_ptr_record.py +25 -0
  101. netbox_dns/migrations/0021_record_ip_address.py +1 -1
  102. netbox_dns/migrations/0022_alter_record_ipam_ip_address.py +26 -0
  103. netbox_dns/migrations/0023_disable_ptr_false.py +27 -0
  104. netbox_dns/migrations/0024_zonetemplate_parental_agents.py +25 -0
  105. netbox_dns/migrations/0025_remove_zone_inline_signing_and_more.py +22 -0
  106. netbox_dns/migrations/0026_alter_dnssecpolicy_nsec3_opt_out.py +18 -0
  107. netbox_dns/migrations/0026_domain_registration.py +1 -1
  108. netbox_dns/migrations/0027_zone_comments.py +18 -0
  109. netbox_dns/migrations/0028_alter_zone_default_ttl_alter_zone_soa_minimum_and_more.py +54 -0
  110. netbox_dns/migrations/0028_rfc2317_fields.py +44 -0
  111. netbox_dns/migrations/0029_alter_registrationcontact_street.py +18 -0
  112. netbox_dns/migrations/0029_record_fqdn.py +30 -0
  113. netbox_dns/mixins/__init__.py +1 -0
  114. netbox_dns/mixins/object_modification.py +57 -0
  115. netbox_dns/models/__init__.py +5 -1
  116. netbox_dns/models/dnssec_key_template.py +114 -0
  117. netbox_dns/models/dnssec_policy.py +203 -0
  118. netbox_dns/models/nameserver.py +61 -30
  119. netbox_dns/models/record.py +781 -234
  120. netbox_dns/models/record_template.py +198 -0
  121. netbox_dns/models/registrar.py +34 -15
  122. netbox_dns/models/{contact.py → registration_contact.py} +72 -43
  123. netbox_dns/models/view.py +129 -9
  124. netbox_dns/models/zone.py +806 -242
  125. netbox_dns/models/zone_template.py +209 -0
  126. netbox_dns/navigation.py +176 -76
  127. netbox_dns/signals/__init__.py +0 -0
  128. netbox_dns/signals/dnssec.py +32 -0
  129. netbox_dns/signals/ipam_dnssync.py +216 -0
  130. netbox_dns/tables/__init__.py +5 -1
  131. netbox_dns/tables/dnssec_key_template.py +49 -0
  132. netbox_dns/tables/dnssec_policy.py +140 -0
  133. netbox_dns/tables/ipam_dnssync.py +12 -0
  134. netbox_dns/tables/nameserver.py +14 -17
  135. netbox_dns/tables/record.py +117 -59
  136. netbox_dns/tables/record_template.py +91 -0
  137. netbox_dns/tables/registrar.py +20 -10
  138. netbox_dns/tables/{contact.py → registration_contact.py} +22 -11
  139. netbox_dns/tables/view.py +47 -3
  140. netbox_dns/tables/zone.py +62 -31
  141. netbox_dns/tables/zone_template.py +78 -0
  142. netbox_dns/template_content.py +124 -38
  143. netbox_dns/templates/netbox_dns/dnsseckeytemplate.html +70 -0
  144. netbox_dns/templates/netbox_dns/dnssecpolicy.html +163 -0
  145. netbox_dns/templates/netbox_dns/nameserver.html +31 -28
  146. netbox_dns/templates/netbox_dns/record/managed.html +2 -1
  147. netbox_dns/templates/netbox_dns/record/related.html +17 -6
  148. netbox_dns/templates/netbox_dns/record.html +140 -93
  149. netbox_dns/templates/netbox_dns/recordtemplate.html +96 -0
  150. netbox_dns/templates/netbox_dns/registrar.html +41 -34
  151. netbox_dns/templates/netbox_dns/registrationcontact.html +76 -0
  152. netbox_dns/templates/netbox_dns/view/button.html +10 -0
  153. netbox_dns/templates/netbox_dns/view/prefix.html +44 -0
  154. netbox_dns/templates/netbox_dns/view/related.html +33 -0
  155. netbox_dns/templates/netbox_dns/view.html +62 -18
  156. netbox_dns/templates/netbox_dns/zone/base.html +6 -3
  157. netbox_dns/templates/netbox_dns/zone/child.html +6 -5
  158. netbox_dns/templates/netbox_dns/zone/child_zone.html +18 -0
  159. netbox_dns/templates/netbox_dns/zone/delegation_record.html +18 -0
  160. netbox_dns/templates/netbox_dns/zone/managed_record.html +1 -1
  161. netbox_dns/templates/netbox_dns/zone/record.html +6 -5
  162. netbox_dns/templates/netbox_dns/zone/registration.html +43 -24
  163. netbox_dns/templates/netbox_dns/zone/rfc2317_child_zone.html +18 -0
  164. netbox_dns/templates/netbox_dns/zone.html +178 -119
  165. netbox_dns/templates/netbox_dns/zonetemplate/child.html +46 -0
  166. netbox_dns/templates/netbox_dns/zonetemplate.html +124 -0
  167. netbox_dns/templatetags/netbox_dns.py +10 -0
  168. netbox_dns/urls.py +50 -210
  169. netbox_dns/utilities/__init__.py +3 -0
  170. netbox_dns/{utilities.py → utilities/conversions.py} +55 -7
  171. netbox_dns/utilities/dns.py +11 -0
  172. netbox_dns/utilities/ipam_dnssync.py +370 -0
  173. netbox_dns/validators/__init__.py +4 -0
  174. netbox_dns/validators/dns_name.py +116 -0
  175. netbox_dns/validators/dns_value.py +147 -0
  176. netbox_dns/validators/dnssec.py +148 -0
  177. netbox_dns/validators/rfc2317.py +28 -0
  178. netbox_dns/views/__init__.py +5 -1
  179. netbox_dns/views/dnssec_key_template.py +78 -0
  180. netbox_dns/views/dnssec_policy.py +146 -0
  181. netbox_dns/views/nameserver.py +34 -15
  182. netbox_dns/views/record.py +156 -15
  183. netbox_dns/views/record_template.py +93 -0
  184. netbox_dns/views/registrar.py +32 -13
  185. netbox_dns/views/registration_contact.py +101 -0
  186. netbox_dns/views/view.py +58 -14
  187. netbox_dns/views/zone.py +130 -33
  188. netbox_dns/views/zone_template.py +82 -0
  189. netbox_plugin_dns-1.4.7.dist-info/METADATA +132 -0
  190. netbox_plugin_dns-1.4.7.dist-info/RECORD +201 -0
  191. {netbox_plugin_dns-0.21.4.dist-info → netbox_plugin_dns-1.4.7.dist-info}/WHEEL +2 -1
  192. {netbox_plugin_dns-0.21.4.dist-info → netbox_plugin_dns-1.4.7.dist-info/licenses}/LICENSE +2 -1
  193. netbox_plugin_dns-1.4.7.dist-info/top_level.txt +1 -0
  194. netbox_dns/filters/__init__.py +0 -6
  195. netbox_dns/filters/nameserver.py +0 -18
  196. netbox_dns/filters/record.py +0 -53
  197. netbox_dns/filters/view.py +0 -18
  198. netbox_dns/filters/zone.py +0 -112
  199. netbox_dns/forms/contact.py +0 -211
  200. netbox_dns/graphql/contact.py +0 -19
  201. netbox_dns/graphql/nameserver.py +0 -19
  202. netbox_dns/graphql/record.py +0 -19
  203. netbox_dns/graphql/registrar.py +0 -19
  204. netbox_dns/graphql/view.py +0 -19
  205. netbox_dns/graphql/zone.py +0 -19
  206. netbox_dns/management/commands/setup_coupling.py +0 -75
  207. netbox_dns/management/commands/update_soa.py +0 -22
  208. netbox_dns/middleware.py +0 -226
  209. netbox_dns/migrations/0001_initial.py +0 -115
  210. netbox_dns/migrations/0002_zone_default_ttl.py +0 -18
  211. netbox_dns/migrations/0003_soa_managed_records.py +0 -112
  212. netbox_dns/migrations/0004_create_ptr_for_a_aaaa_records.py +0 -80
  213. netbox_dns/migrations/0005_update_ns_records.py +0 -41
  214. netbox_dns/migrations/0006_zone_soa_serial_auto.py +0 -29
  215. netbox_dns/migrations/0007_alter_zone_soa_serial_auto.py +0 -17
  216. netbox_dns/migrations/0008_zone_status_names.py +0 -21
  217. netbox_dns/migrations/0009_netbox32.py +0 -71
  218. netbox_dns/migrations/0010_update_soa_records.py +0 -58
  219. netbox_dns/migrations/0011_add_view_model.py +0 -70
  220. netbox_dns/migrations/0012_adjust_zone_and_record.py +0 -17
  221. netbox_dns/migrations/0014_add_view_description.py +0 -16
  222. netbox_dns/migrations/0016_cleanup_ptr_records.py +0 -38
  223. netbox_dns/migrations/0017_alter_record_ttl.py +0 -17
  224. netbox_dns/migrations/0018_zone_arpa_network.py +0 -51
  225. netbox_dns/migrations/0019_update_ns_ttl.py +0 -19
  226. netbox_dns/templates/netbox_dns/contact.html +0 -71
  227. netbox_dns/templates/netbox_dns/related_dns_objects.html +0 -21
  228. netbox_dns/templatetags/view_helpers.py +0 -15
  229. netbox_dns/validators.py +0 -57
  230. netbox_dns/views/contact.py +0 -83
  231. netbox_plugin_dns-0.21.4.dist-info/METADATA +0 -101
  232. netbox_plugin_dns-0.21.4.dist-info/RECORD +0 -110
@@ -0,0 +1,557 @@
1
+ # Generated by Django 5.0.1 on 2024-02-12 14:49
2
+
3
+ from dns import name as dns_name
4
+
5
+ import django.core.validators
6
+ import django.db.models.deletion
7
+ import netbox_dns.fields.address
8
+ import netbox_dns.fields.network
9
+ import netbox_dns.fields.rfc2317
10
+ import taggit.managers
11
+ import utilities.json
12
+ from django.db import migrations, models
13
+
14
+ from netbox_dns.choices import RecordTypeChoices
15
+ from netbox_dns.utilities import arpa_to_prefix
16
+
17
+
18
+ def fqdn(record):
19
+ if record.name == "@":
20
+ return f"{record.zone.name}."
21
+
22
+ return f"{record.name}.{record.zone.name}."
23
+
24
+
25
+ def address_from_name(record):
26
+ prefix = arpa_to_prefix(fqdn(record))
27
+ if prefix is not None:
28
+ return prefix.ip
29
+
30
+ return None
31
+
32
+
33
+ def update_ip_addresses(apps, schema_editor):
34
+ Record = apps.get_model("netbox_dns", "Record")
35
+
36
+ for record in Record.objects.filter(type=RecordTypeChoices.PTR):
37
+ record.ip_address = address_from_name(record)
38
+ record.save()
39
+
40
+ for record in Record.objects.filter(
41
+ type__in=(RecordTypeChoices.A, RecordTypeChoices.AAAA)
42
+ ):
43
+ record.ip_address = record.value
44
+ record.save()
45
+
46
+
47
+ def update_record_fqdn(apps, schema_editor):
48
+ Record = apps.get_model("netbox_dns", "Record")
49
+
50
+ for record in Record.objects.filter(fqdn__isnull=True):
51
+ zone = dns_name.from_text(record.zone.name, origin=dns_name.root)
52
+ _fqdn = dns_name.from_text(record.name, origin=zone)
53
+
54
+ record.fqdn = _fqdn.to_text()
55
+
56
+ record.save()
57
+
58
+
59
+ class Migration(migrations.Migration):
60
+ replaces = [
61
+ ("netbox_dns", "0001_squashed_netbox_dns_0_15"),
62
+ ("netbox_dns", "0020_netbox_3_4"),
63
+ ("netbox_dns", "0021_record_ip_address"),
64
+ ("netbox_dns", "0022_search"),
65
+ ("netbox_dns", "0023_alter_record_value"),
66
+ ("netbox_dns", "0024_tenancy"),
67
+ ("netbox_dns", "0025_ipam_coupling_cf"),
68
+ ("netbox_dns", "0026_domain_registration"),
69
+ ("netbox_dns", "0027_alter_registrar_iana_id"),
70
+ ("netbox_dns", "0028_rfc2317_fields"),
71
+ ("netbox_dns", "0029_record_fqdn"),
72
+ ]
73
+
74
+ initial = True
75
+
76
+ dependencies = [
77
+ ("extras", "0073_journalentry_tags_custom_fields"),
78
+ ("ipam", "0066_iprange_mark_utilized"),
79
+ ("tenancy", "0010_tenant_relax_uniqueness"),
80
+ ]
81
+
82
+ operations = [
83
+ migrations.CreateModel(
84
+ name="NameServer",
85
+ fields=[
86
+ ("created", models.DateTimeField(auto_now_add=True, null=True)),
87
+ ("last_updated", models.DateTimeField(auto_now=True, null=True)),
88
+ (
89
+ "custom_field_data",
90
+ models.JSONField(
91
+ blank=True,
92
+ default=dict,
93
+ encoder=utilities.json.CustomFieldJSONEncoder,
94
+ ),
95
+ ),
96
+ (
97
+ "id",
98
+ models.BigAutoField(
99
+ auto_created=True, primary_key=True, serialize=False
100
+ ),
101
+ ),
102
+ ("name", models.CharField(max_length=255, unique=True)),
103
+ (
104
+ "tags",
105
+ taggit.managers.TaggableManager(
106
+ through="extras.TaggedItem", to="extras.Tag"
107
+ ),
108
+ ),
109
+ ("description", models.CharField(blank=True, max_length=200)),
110
+ ],
111
+ options={
112
+ "ordering": ("name",),
113
+ },
114
+ ),
115
+ migrations.CreateModel(
116
+ name="View",
117
+ fields=[
118
+ (
119
+ "id",
120
+ models.BigAutoField(
121
+ auto_created=True, primary_key=True, serialize=False
122
+ ),
123
+ ),
124
+ ("created", models.DateTimeField(auto_now_add=True, null=True)),
125
+ ("last_updated", models.DateTimeField(auto_now=True, null=True)),
126
+ (
127
+ "custom_field_data",
128
+ models.JSONField(
129
+ blank=True,
130
+ default=dict,
131
+ encoder=utilities.json.CustomFieldJSONEncoder,
132
+ ),
133
+ ),
134
+ ("name", models.CharField(max_length=255, unique=True)),
135
+ (
136
+ "tags",
137
+ taggit.managers.TaggableManager(
138
+ through="extras.TaggedItem", to="extras.Tag"
139
+ ),
140
+ ),
141
+ ("description", models.CharField(blank=True, max_length=200)),
142
+ ],
143
+ options={
144
+ "ordering": ("name",),
145
+ },
146
+ ),
147
+ migrations.CreateModel(
148
+ name="Zone",
149
+ fields=[
150
+ ("created", models.DateTimeField(auto_now_add=True, null=True)),
151
+ ("last_updated", models.DateTimeField(auto_now=True, null=True)),
152
+ (
153
+ "custom_field_data",
154
+ models.JSONField(
155
+ blank=True,
156
+ default=dict,
157
+ encoder=utilities.json.CustomFieldJSONEncoder,
158
+ ),
159
+ ),
160
+ (
161
+ "id",
162
+ models.BigAutoField(
163
+ auto_created=True, primary_key=True, serialize=False
164
+ ),
165
+ ),
166
+ ("name", models.CharField(max_length=255)),
167
+ (
168
+ "status",
169
+ models.CharField(blank=True, default="active", max_length=50),
170
+ ),
171
+ (
172
+ "nameservers",
173
+ models.ManyToManyField(
174
+ blank=True, related_name="zones", to="netbox_dns.nameserver"
175
+ ),
176
+ ),
177
+ (
178
+ "tags",
179
+ taggit.managers.TaggableManager(
180
+ through="extras.TaggedItem", to="extras.Tag"
181
+ ),
182
+ ),
183
+ ("description", models.CharField(blank=True, max_length=200)),
184
+ (
185
+ "view",
186
+ models.ForeignKey(
187
+ blank=True,
188
+ null=True,
189
+ on_delete=django.db.models.deletion.PROTECT,
190
+ to="netbox_dns.view",
191
+ ),
192
+ ),
193
+ (
194
+ "default_ttl",
195
+ models.PositiveIntegerField(
196
+ blank=True,
197
+ validators=[django.core.validators.MinValueValidator(1)],
198
+ ),
199
+ ),
200
+ (
201
+ "soa_expire",
202
+ models.PositiveIntegerField(
203
+ validators=[django.core.validators.MinValueValidator(1)]
204
+ ),
205
+ ),
206
+ (
207
+ "soa_minimum",
208
+ models.PositiveIntegerField(
209
+ validators=[django.core.validators.MinValueValidator(1)]
210
+ ),
211
+ ),
212
+ (
213
+ "soa_mname",
214
+ models.ForeignKey(
215
+ on_delete=django.db.models.deletion.PROTECT,
216
+ related_name="zones_soa",
217
+ to="netbox_dns.nameserver",
218
+ ),
219
+ ),
220
+ (
221
+ "soa_refresh",
222
+ models.PositiveIntegerField(
223
+ validators=[django.core.validators.MinValueValidator(1)]
224
+ ),
225
+ ),
226
+ (
227
+ "soa_retry",
228
+ models.PositiveIntegerField(
229
+ validators=[django.core.validators.MinValueValidator(1)]
230
+ ),
231
+ ),
232
+ ("soa_rname", models.CharField(max_length=255)),
233
+ (
234
+ "soa_serial",
235
+ models.BigIntegerField(
236
+ blank=True,
237
+ null=True,
238
+ validators=[
239
+ django.core.validators.MinValueValidator(1),
240
+ django.core.validators.MaxValueValidator(4294967295),
241
+ ],
242
+ ),
243
+ ),
244
+ (
245
+ "soa_ttl",
246
+ models.PositiveIntegerField(
247
+ validators=[django.core.validators.MinValueValidator(1)]
248
+ ),
249
+ ),
250
+ ("soa_serial_auto", models.BooleanField(default=True)),
251
+ (
252
+ "arpa_network",
253
+ netbox_dns.fields.network.NetworkField(blank=True, null=True),
254
+ ),
255
+ ],
256
+ options={
257
+ "ordering": ("view", "name"),
258
+ "unique_together": {("view", "name")},
259
+ },
260
+ ),
261
+ migrations.CreateModel(
262
+ name="Record",
263
+ fields=[
264
+ ("created", models.DateTimeField(auto_now_add=True, null=True)),
265
+ ("last_updated", models.DateTimeField(auto_now=True, null=True)),
266
+ (
267
+ "custom_field_data",
268
+ models.JSONField(
269
+ blank=True,
270
+ default=dict,
271
+ encoder=utilities.json.CustomFieldJSONEncoder,
272
+ ),
273
+ ),
274
+ (
275
+ "id",
276
+ models.BigAutoField(
277
+ auto_created=True, primary_key=True, serialize=False
278
+ ),
279
+ ),
280
+ ("type", models.CharField(max_length=10)),
281
+ ("name", models.CharField(max_length=255)),
282
+ ("value", models.CharField(max_length=1000)),
283
+ ("ttl", models.PositiveIntegerField(blank=True, null=True)),
284
+ (
285
+ "tags",
286
+ taggit.managers.TaggableManager(
287
+ through="extras.TaggedItem", to="extras.Tag"
288
+ ),
289
+ ),
290
+ (
291
+ "zone",
292
+ models.ForeignKey(
293
+ on_delete=django.db.models.deletion.CASCADE,
294
+ to="netbox_dns.zone",
295
+ ),
296
+ ),
297
+ ("status", models.CharField(default="active", max_length=50)),
298
+ ("description", models.CharField(blank=True, max_length=200)),
299
+ ("managed", models.BooleanField(default=False)),
300
+ ("disable_ptr", models.BooleanField(default=False)),
301
+ (
302
+ "ptr_record",
303
+ models.OneToOneField(
304
+ blank=True,
305
+ null=True,
306
+ on_delete=django.db.models.deletion.SET_NULL,
307
+ related_name="address_record",
308
+ to="netbox_dns.record",
309
+ ),
310
+ ),
311
+ (
312
+ "ip_address",
313
+ netbox_dns.fields.address.AddressField(blank=True, null=True),
314
+ ),
315
+ ],
316
+ options={
317
+ "ordering": ("zone", "name", "type", "value", "status"),
318
+ },
319
+ ),
320
+ migrations.AlterField(
321
+ model_name="record",
322
+ name="value",
323
+ field=models.CharField(max_length=65535),
324
+ ),
325
+ migrations.AddField(
326
+ model_name="nameserver",
327
+ name="tenant",
328
+ field=models.ForeignKey(
329
+ blank=True,
330
+ null=True,
331
+ on_delete=django.db.models.deletion.PROTECT,
332
+ related_name="netbox_dns_nameservers",
333
+ to="tenancy.tenant",
334
+ ),
335
+ ),
336
+ migrations.AddField(
337
+ model_name="record",
338
+ name="tenant",
339
+ field=models.ForeignKey(
340
+ blank=True,
341
+ null=True,
342
+ on_delete=django.db.models.deletion.PROTECT,
343
+ related_name="netbox_dns_records",
344
+ to="tenancy.tenant",
345
+ ),
346
+ ),
347
+ migrations.AddField(
348
+ model_name="view",
349
+ name="tenant",
350
+ field=models.ForeignKey(
351
+ blank=True,
352
+ null=True,
353
+ on_delete=django.db.models.deletion.PROTECT,
354
+ related_name="netbox_dns_views",
355
+ to="tenancy.tenant",
356
+ ),
357
+ ),
358
+ migrations.AddField(
359
+ model_name="zone",
360
+ name="tenant",
361
+ field=models.ForeignKey(
362
+ blank=True,
363
+ null=True,
364
+ on_delete=django.db.models.deletion.PROTECT,
365
+ related_name="netbox_dns_zones",
366
+ to="tenancy.tenant",
367
+ ),
368
+ ),
369
+ migrations.AddField(
370
+ model_name="record",
371
+ name="ipam_ip_address",
372
+ field=models.ForeignKey(
373
+ blank=True,
374
+ null=True,
375
+ on_delete=django.db.models.deletion.CASCADE,
376
+ related_name="netbox_dns_records",
377
+ to="ipam.ipaddress",
378
+ ),
379
+ ),
380
+ migrations.CreateModel(
381
+ name="Registrar",
382
+ fields=[
383
+ (
384
+ "id",
385
+ models.BigAutoField(
386
+ auto_created=True, primary_key=True, serialize=False
387
+ ),
388
+ ),
389
+ ("created", models.DateTimeField(auto_now_add=True, null=True)),
390
+ ("last_updated", models.DateTimeField(auto_now=True, null=True)),
391
+ (
392
+ "custom_field_data",
393
+ models.JSONField(
394
+ blank=True,
395
+ default=dict,
396
+ encoder=utilities.json.CustomFieldJSONEncoder,
397
+ ),
398
+ ),
399
+ ("name", models.CharField(max_length=255, unique=True)),
400
+ ("iana_id", models.IntegerField(blank=True, null=True)),
401
+ ("referral_url", models.URLField(blank=True, max_length=255)),
402
+ ("whois_server", models.CharField(blank=True, max_length=255)),
403
+ ("address", models.CharField(blank=True, max_length=200)),
404
+ ("abuse_email", models.EmailField(blank=True, max_length=254)),
405
+ ("abuse_phone", models.CharField(blank=True, max_length=50)),
406
+ (
407
+ "tags",
408
+ taggit.managers.TaggableManager(
409
+ through="extras.TaggedItem", to="extras.Tag"
410
+ ),
411
+ ),
412
+ ],
413
+ options={
414
+ "ordering": ("name", "iana_id"),
415
+ },
416
+ ),
417
+ migrations.CreateModel(
418
+ name="Contact",
419
+ fields=[
420
+ (
421
+ "id",
422
+ models.BigAutoField(
423
+ auto_created=True, primary_key=True, serialize=False
424
+ ),
425
+ ),
426
+ ("created", models.DateTimeField(auto_now_add=True, null=True)),
427
+ ("last_updated", models.DateTimeField(auto_now=True, null=True)),
428
+ (
429
+ "custom_field_data",
430
+ models.JSONField(
431
+ blank=True,
432
+ default=dict,
433
+ encoder=utilities.json.CustomFieldJSONEncoder,
434
+ ),
435
+ ),
436
+ ("name", models.CharField(blank=True, max_length=100)),
437
+ ("contact_id", models.CharField(max_length=50, unique=True)),
438
+ ("organization", models.CharField(blank=True, max_length=200)),
439
+ ("street", models.CharField(blank=True, max_length=50)),
440
+ ("city", models.CharField(blank=True, max_length=50)),
441
+ ("state_province", models.CharField(blank=True, max_length=255)),
442
+ ("postal_code", models.CharField(blank=True, max_length=20)),
443
+ ("country", models.CharField(blank=True, max_length=2)),
444
+ ("phone", models.CharField(blank=True, max_length=50)),
445
+ ("phone_ext", models.CharField(blank=True, max_length=50)),
446
+ ("fax", models.CharField(blank=True, max_length=50)),
447
+ ("fax_ext", models.CharField(blank=True, max_length=50)),
448
+ ("email", models.EmailField(blank=True, max_length=254)),
449
+ (
450
+ "tags",
451
+ taggit.managers.TaggableManager(
452
+ through="extras.TaggedItem", to="extras.Tag"
453
+ ),
454
+ ),
455
+ ],
456
+ options={
457
+ "ordering": ("name", "contact_id"),
458
+ },
459
+ ),
460
+ migrations.AddField(
461
+ model_name="zone",
462
+ name="admin_c",
463
+ field=models.ForeignKey(
464
+ blank=True,
465
+ null=True,
466
+ on_delete=django.db.models.deletion.SET_NULL,
467
+ related_name="admin_c_zones",
468
+ to="netbox_dns.contact",
469
+ ),
470
+ ),
471
+ migrations.AddField(
472
+ model_name="zone",
473
+ name="billing_c",
474
+ field=models.ForeignKey(
475
+ blank=True,
476
+ null=True,
477
+ on_delete=django.db.models.deletion.SET_NULL,
478
+ related_name="billing_c_zones",
479
+ to="netbox_dns.contact",
480
+ ),
481
+ ),
482
+ migrations.AddField(
483
+ model_name="zone",
484
+ name="registrant",
485
+ field=models.ForeignKey(
486
+ blank=True,
487
+ null=True,
488
+ on_delete=django.db.models.deletion.SET_NULL,
489
+ to="netbox_dns.contact",
490
+ ),
491
+ ),
492
+ migrations.AddField(
493
+ model_name="zone",
494
+ name="registrar",
495
+ field=models.ForeignKey(
496
+ blank=True,
497
+ null=True,
498
+ on_delete=django.db.models.deletion.SET_NULL,
499
+ to="netbox_dns.registrar",
500
+ ),
501
+ ),
502
+ migrations.AddField(
503
+ model_name="zone",
504
+ name="registry_domain_id",
505
+ field=models.CharField(blank=True, max_length=50, null=True),
506
+ ),
507
+ migrations.AddField(
508
+ model_name="zone",
509
+ name="tech_c",
510
+ field=models.ForeignKey(
511
+ blank=True,
512
+ null=True,
513
+ on_delete=django.db.models.deletion.SET_NULL,
514
+ related_name="tech_c_zones",
515
+ to="netbox_dns.contact",
516
+ ),
517
+ ),
518
+ migrations.AddField(
519
+ model_name="zone",
520
+ name="rfc2317_prefix",
521
+ field=netbox_dns.fields.rfc2317.RFC2317NetworkField(blank=True, null=True),
522
+ ),
523
+ migrations.AddField(
524
+ model_name="zone",
525
+ name="rfc2317_parent_managed",
526
+ field=models.BooleanField(default=False),
527
+ ),
528
+ migrations.AddField(
529
+ model_name="zone",
530
+ name="rfc2317_parent_zone",
531
+ field=models.ForeignKey(
532
+ blank=True,
533
+ null=True,
534
+ on_delete=django.db.models.deletion.SET_NULL,
535
+ related_name="rfc2317_child_zones",
536
+ to="netbox_dns.zone",
537
+ ),
538
+ ),
539
+ migrations.AddField(
540
+ model_name="record",
541
+ name="rfc2317_cname_record",
542
+ field=models.ForeignKey(
543
+ blank=True,
544
+ null=True,
545
+ on_delete=django.db.models.deletion.SET_NULL,
546
+ related_name="rfc2317_ptr_records",
547
+ to="netbox_dns.record",
548
+ ),
549
+ ),
550
+ migrations.RunPython(update_ip_addresses),
551
+ migrations.AddField(
552
+ model_name="record",
553
+ name="fqdn",
554
+ field=models.CharField(default=None, max_length=255, null=True, blank=True),
555
+ ),
556
+ migrations.RunPython(update_record_fqdn),
557
+ ]
@@ -1,26 +1,21 @@
1
- # Generated by Django 4.0.3 on 2022-07-17 17:41
1
+ # Generated by Django 5.0.1 on 2024-02-24 10:23
2
2
 
3
3
  from django.db import migrations, models
4
4
 
5
5
 
6
6
  class Migration(migrations.Migration):
7
7
  dependencies = [
8
- ("netbox_dns", "0001_initial"),
8
+ ("netbox_dns", "0001_squashed_netbox_dns_0_22"),
9
9
  ]
10
10
 
11
11
  operations = [
12
12
  migrations.AddField(
13
- model_name="nameserver",
13
+ model_name="contact",
14
14
  name="description",
15
15
  field=models.CharField(blank=True, max_length=200),
16
16
  ),
17
17
  migrations.AddField(
18
- model_name="record",
19
- name="description",
20
- field=models.CharField(blank=True, max_length=200),
21
- ),
22
- migrations.AddField(
23
- model_name="zone",
18
+ model_name="registrar",
24
19
  name="description",
25
20
  field=models.CharField(blank=True, max_length=200),
26
21
  ),
@@ -0,0 +1,15 @@
1
+ from django.db import migrations, models
2
+
3
+
4
+ class Migration(migrations.Migration):
5
+ dependencies = [
6
+ ("netbox_dns", "0002_contact_description_registrar_description"),
7
+ ]
8
+
9
+ operations = [
10
+ migrations.AddField(
11
+ model_name="view",
12
+ name="default_view",
13
+ field=models.BooleanField(default=False),
14
+ ),
15
+ ]
@@ -0,0 +1,26 @@
1
+ from django.db import migrations
2
+
3
+
4
+ def create_and_assign_default_view(apps, schema_editor):
5
+ View = apps.get_model("netbox_dns", "View")
6
+ Zone = apps.get_model("netbox_dns", "Zone")
7
+
8
+ default_view = View.objects.create(
9
+ name="_default_",
10
+ description="Default View",
11
+ default_view=True,
12
+ )
13
+
14
+ for zone in Zone.objects.filter(view=None):
15
+ zone.view = default_view
16
+ zone.save()
17
+
18
+
19
+ class Migration(migrations.Migration):
20
+ dependencies = [
21
+ ("netbox_dns", "0003_default_view"),
22
+ ]
23
+
24
+ operations = [
25
+ migrations.RunPython(create_and_assign_default_view),
26
+ ]
@@ -0,0 +1,18 @@
1
+ import django.db.models.deletion
2
+ from django.db import migrations, models
3
+
4
+
5
+ class Migration(migrations.Migration):
6
+ dependencies = [
7
+ ("netbox_dns", "0004_create_and_assign_default_view"),
8
+ ]
9
+
10
+ operations = [
11
+ migrations.AlterField(
12
+ model_name="zone",
13
+ name="view",
14
+ field=models.ForeignKey(
15
+ on_delete=django.db.models.deletion.PROTECT, to="netbox_dns.view"
16
+ ),
17
+ ),
18
+ ]