Skip to content

Commit 84918ab

Browse files
committed
feat: Adding new Source-Fields to ACLStandard Rule
1 parent e262ba8 commit 84918ab

File tree

1 file changed

+60
-5
lines changed

1 file changed

+60
-5
lines changed

netbox_acls/models/access_list_rules.py

Lines changed: 60 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from django.db import models
88
from django.urls import reverse
99
from netbox.models import NetBoxModel
10+
from ipam.models import Prefix, IPRange, IPAddress, Aggregate, Service
1011

1112
from ..choices import ACLProtocolChoices, ACLRuleActionChoices, ACLTypeChoices
1213
from .access_lists import AccessList
@@ -17,7 +18,6 @@
1718
"ACLExtendedRule",
1819
)
1920

20-
2121
class ACLRule(NetBoxModel):
2222
"""
2323
Abstract model for ACL Rules.
@@ -43,16 +43,57 @@ class ACLRule(NetBoxModel):
4343
choices=ACLRuleActionChoices,
4444
max_length=30,
4545
)
46+
4647
source_prefix = models.ForeignKey(
4748
blank=True,
4849
null=True,
4950
on_delete=models.PROTECT,
5051
related_name="+",
51-
to="ipam.Prefix",
52+
to=Prefix,
5253
verbose_name="Source Prefix",
5354
)
55+
source_iprange = models.ForeignKey(
56+
blank=True,
57+
null=True,
58+
on_delete=models.PROTECT,
59+
related_name="+",
60+
to=IPRange,
61+
verbose_name="Source IP-Range",
62+
)
63+
source_ipaddress = models.ForeignKey(
64+
blank=True,
65+
null=True,
66+
on_delete=models.PROTECT,
67+
related_name="+",
68+
to=IPAddress,
69+
verbose_name="Source IP-Address",
70+
)
71+
source_aggregate = models.ForeignKey(
72+
blank=True,
73+
null=True,
74+
on_delete=models.PROTECT,
75+
related_name="+",
76+
to=Aggregate,
77+
verbose_name="Source Aggregate",
78+
)
79+
source_service = models.ForeignKey(
80+
blank=True,
81+
null=True,
82+
on_delete=models.PROTECT,
83+
related_name="+",
84+
to=Service,
85+
verbose_name="Source Service",
86+
)
5487

55-
clone_fields = ("access_list", "action", "source_prefix")
88+
clone_fields = (
89+
"access_list",
90+
"action",
91+
"source_prefix",
92+
"source_iprange",
93+
"source_ipaddress",
94+
"source_aggregate",
95+
"source_service"
96+
)
5697

5798
def __str__(self):
5899
return f"{self.access_list}: Rule {self.index}"
@@ -62,7 +103,14 @@ def get_action_color(self):
62103

63104
@classmethod
64105
def get_prerequisite_models(cls):
65-
return [apps.get_model("ipam.Prefix"), AccessList]
106+
return [
107+
Prefix,
108+
IPRange,
109+
IPAddress,
110+
Aggregate,
111+
Service,
112+
AccessList
113+
]
66114

67115
class Meta:
68116
"""
@@ -99,7 +147,14 @@ def get_absolute_url(self):
99147

100148
@classmethod
101149
def get_prerequisite_models(cls):
102-
return [AccessList]
150+
return [
151+
Prefix,
152+
IPRange,
153+
IPAddress,
154+
Aggregate,
155+
Service,
156+
AccessList
157+
]
103158

104159
class Meta(ACLRule.Meta):
105160
"""

0 commit comments

Comments
 (0)