Skip to content

Commit 57eb10b

Browse files
committed
feat(migrations): Update ACL rule migrations for source/destination
Renames and updates fields in ACLStandardRule and ACLExtendedRule to support generic source and destination objects. Introduces new fields, indices, and foreign key relationships for improved flexibility and query performance. BREAKING CHANGE: Requires migration of existing ACL data to the new field structure.
1 parent 50ad58f commit 57eb10b

File tree

1 file changed

+229
-0
lines changed

1 file changed

+229
-0
lines changed
Lines changed: 229 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,229 @@
1+
import django.db.models.deletion
2+
from django.db import migrations, models
3+
4+
5+
class Migration(migrations.Migration):
6+
dependencies = [
7+
("contenttypes", "0002_remove_content_type_name"),
8+
("extras", "0129_fix_script_paths"),
9+
("ipam", "0082_add_prefix_network_containment_indexes"),
10+
("netbox_acls", "0004_netbox_acls"),
11+
]
12+
13+
operations = [
14+
migrations.RenameField(
15+
model_name="aclextendedrule",
16+
old_name="destination_prefix",
17+
new_name="_destination_prefix",
18+
),
19+
migrations.RenameField(
20+
model_name="aclextendedrule",
21+
old_name="source_prefix",
22+
new_name="_source_prefix",
23+
),
24+
migrations.RenameField(
25+
model_name="aclstandardrule",
26+
old_name="source_prefix",
27+
new_name="_source_prefix",
28+
),
29+
migrations.AddField(
30+
model_name="aclextendedrule",
31+
name="_destination_aggregate",
32+
field=models.ForeignKey(
33+
blank=True,
34+
null=True,
35+
on_delete=django.db.models.deletion.PROTECT,
36+
related_name="_%(class)s_destinations",
37+
to="ipam.aggregate",
38+
),
39+
),
40+
migrations.AddField(
41+
model_name="aclextendedrule",
42+
name="_destination_ipaddress",
43+
field=models.ForeignKey(
44+
blank=True,
45+
null=True,
46+
on_delete=django.db.models.deletion.PROTECT,
47+
related_name="_%(class)s_destinations",
48+
to="ipam.ipaddress",
49+
),
50+
),
51+
migrations.AddField(
52+
model_name="aclextendedrule",
53+
name="_destination_iprange",
54+
field=models.ForeignKey(
55+
blank=True,
56+
null=True,
57+
on_delete=django.db.models.deletion.PROTECT,
58+
related_name="_%(class)s_destinations",
59+
to="ipam.iprange",
60+
),
61+
),
62+
migrations.AddField(
63+
model_name="aclextendedrule",
64+
name="_source_aggregate",
65+
field=models.ForeignKey(
66+
blank=True,
67+
null=True,
68+
on_delete=django.db.models.deletion.PROTECT,
69+
related_name="_%(class)s_sources",
70+
to="ipam.aggregate",
71+
),
72+
),
73+
migrations.AddField(
74+
model_name="aclextendedrule",
75+
name="_source_ipaddress",
76+
field=models.ForeignKey(
77+
blank=True,
78+
null=True,
79+
on_delete=django.db.models.deletion.PROTECT,
80+
related_name="_%(class)s_sources",
81+
to="ipam.ipaddress",
82+
),
83+
),
84+
migrations.AddField(
85+
model_name="aclextendedrule",
86+
name="_source_iprange",
87+
field=models.ForeignKey(
88+
blank=True,
89+
null=True,
90+
on_delete=django.db.models.deletion.PROTECT,
91+
related_name="_%(class)s_sources",
92+
to="ipam.iprange",
93+
),
94+
),
95+
migrations.AddField(
96+
model_name="aclextendedrule",
97+
name="destination_id",
98+
field=models.PositiveBigIntegerField(blank=True, null=True),
99+
),
100+
migrations.AddField(
101+
model_name="aclextendedrule",
102+
name="destination_type",
103+
field=models.ForeignKey(
104+
blank=True,
105+
limit_choices_to=models.Q(
106+
models.Q(("app_label", "ipam"), ("model__in", ("aggregate", "ipaddress", "iprange", "prefix")))
107+
),
108+
null=True,
109+
on_delete=django.db.models.deletion.PROTECT,
110+
related_name="+",
111+
to="contenttypes.contenttype",
112+
),
113+
),
114+
migrations.AddField(
115+
model_name="aclextendedrule",
116+
name="source_id",
117+
field=models.PositiveBigIntegerField(blank=True, null=True),
118+
),
119+
migrations.AddField(
120+
model_name="aclextendedrule",
121+
name="source_type",
122+
field=models.ForeignKey(
123+
blank=True,
124+
limit_choices_to=models.Q(
125+
models.Q(("app_label", "ipam"), ("model__in", ("aggregate", "ipaddress", "iprange", "prefix")))
126+
),
127+
null=True,
128+
on_delete=django.db.models.deletion.PROTECT,
129+
related_name="+",
130+
to="contenttypes.contenttype",
131+
),
132+
),
133+
migrations.AddField(
134+
model_name="aclstandardrule",
135+
name="_source_aggregate",
136+
field=models.ForeignKey(
137+
blank=True,
138+
null=True,
139+
on_delete=django.db.models.deletion.PROTECT,
140+
related_name="_%(class)s_sources",
141+
to="ipam.aggregate",
142+
),
143+
),
144+
migrations.AddField(
145+
model_name="aclstandardrule",
146+
name="_source_ipaddress",
147+
field=models.ForeignKey(
148+
blank=True,
149+
null=True,
150+
on_delete=django.db.models.deletion.PROTECT,
151+
related_name="_%(class)s_sources",
152+
to="ipam.ipaddress",
153+
),
154+
),
155+
migrations.AddField(
156+
model_name="aclstandardrule",
157+
name="_source_iprange",
158+
field=models.ForeignKey(
159+
blank=True,
160+
null=True,
161+
on_delete=django.db.models.deletion.PROTECT,
162+
related_name="_%(class)s_sources",
163+
to="ipam.iprange",
164+
),
165+
),
166+
migrations.AddField(
167+
model_name="aclstandardrule",
168+
name="source_id",
169+
field=models.PositiveBigIntegerField(blank=True, null=True),
170+
),
171+
migrations.AddField(
172+
model_name="aclstandardrule",
173+
name="source_type",
174+
field=models.ForeignKey(
175+
blank=True,
176+
limit_choices_to=models.Q(
177+
models.Q(("app_label", "ipam"), ("model__in", ("aggregate", "ipaddress", "iprange", "prefix")))
178+
),
179+
null=True,
180+
on_delete=django.db.models.deletion.PROTECT,
181+
related_name="+",
182+
to="contenttypes.contenttype",
183+
),
184+
),
185+
migrations.AlterField(
186+
model_name="aclextendedrule",
187+
name="_destination_prefix",
188+
field=models.ForeignKey(
189+
blank=True,
190+
null=True,
191+
on_delete=django.db.models.deletion.PROTECT,
192+
related_name="_%(class)s_destinations",
193+
to="ipam.prefix",
194+
),
195+
),
196+
migrations.AlterField(
197+
model_name="aclextendedrule",
198+
name="_source_prefix",
199+
field=models.ForeignKey(
200+
blank=True,
201+
null=True,
202+
on_delete=django.db.models.deletion.PROTECT,
203+
related_name="_%(class)s_sources",
204+
to="ipam.prefix",
205+
),
206+
),
207+
migrations.AlterField(
208+
model_name="aclstandardrule",
209+
name="_source_prefix",
210+
field=models.ForeignKey(
211+
blank=True,
212+
null=True,
213+
on_delete=django.db.models.deletion.PROTECT,
214+
related_name="_%(class)s_sources",
215+
to="ipam.prefix",
216+
),
217+
),
218+
migrations.AddIndex(
219+
model_name="aclextendedrule",
220+
index=models.Index(
221+
fields=["destination_type", "destination_id", "source_type", "source_id"],
222+
name="netbox_acls_destina_8f93b4_idx",
223+
),
224+
),
225+
migrations.AddIndex(
226+
model_name="aclstandardrule",
227+
index=models.Index(fields=["source_type", "source_id"], name="netbox_acls_source__01d2fa_idx"),
228+
),
229+
]

0 commit comments

Comments
 (0)