Skip to content

Commit b36a8f3

Browse files
authored
Merge pull request #48 from k01ek/develop
0.3.6
2 parents bdcdf3a + d015a77 commit b36a8f3

File tree

4 files changed

+189
-5
lines changed

4 files changed

+189
-5
lines changed

netbox_bgp/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class BGPConfig(PluginConfig):
1212
base_url = 'bgp'
1313
required_settings = []
1414
min_version = '2.10.1'
15-
max_version = '2.11.6'
15+
max_version = '2.11.9'
1616
default_settings = {
1717
'device_ext_page': 'right'
1818
}

netbox_bgp/tables.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import django_tables2 as tables
22
from django.utils.safestring import mark_safe
33

4-
from utilities.tables import BaseTable, ChoiceFieldColumn, ToggleColumn
4+
from utilities.tables import BaseTable, ChoiceFieldColumn, ToggleColumn, TagColumn
55

66
from .models import ASN, Community, BGPSession, RoutingPolicy, BGPPeerGroup
77

@@ -40,10 +40,16 @@ class CommunityTable(BaseTable):
4040
tenant = tables.TemplateColumn(
4141
template_code=COL_TENANT
4242
)
43+
tags = TagColumn(
44+
url_name='plugins:netbox_bgp:community_list'
45+
)
4346

4447
class Meta(BaseTable.Meta):
4548
model = Community
46-
fields = ('pk', 'value', 'description', 'status')
49+
fields = ('pk', 'value', 'description', 'status', 'tags')
50+
default_columns = (
51+
'pk', 'value', 'description', 'status', 'tenant'
52+
)
4753

4854

4955
class BGPSessionTable(BaseTable):

netbox_bgp/tests/test_models.py

Lines changed: 179 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
from django.test import TestCase
44

55
from tenancy.models import Tenant
6+
from dcim.models import Site, Device, Manufacturer, DeviceRole, DeviceType
7+
from ipam.models import IPAddress
68

79
from netbox_bgp.models import ASN, BGPSession, Community, RoutingPolicy, BGPPeerGroup
810

@@ -16,7 +18,8 @@ def setUp(self):
1618
)
1719

1820
def test_create_asn(self):
19-
pass
21+
self.assertTrue(isinstance(self.asn, ASN))
22+
self.assertEqual(self.asn.__str__(), str(self.asn.number))
2023

2124
def test_invalid_asn0(self):
2225
asn = ASN(number=0)
@@ -35,3 +38,178 @@ def test_uniqueconstraint_asn2(self):
3538
asn = ASN.objects.create(number=65001, tenant=self.tenant)
3639
self.assertEqual(str(asn), '65001')
3740
# todo cre another 65001 tenant=self.tenant
41+
42+
43+
class RoutingPolicyTestCase(TestCase):
44+
def setUp(self):
45+
rp_name = 'test_policy'
46+
self.rp = RoutingPolicy.objects.create(
47+
name=rp_name,
48+
description=rp_name
49+
)
50+
51+
def test_create_routing_policy(self):
52+
self.assertTrue(isinstance(self.rp, RoutingPolicy))
53+
self.assertEqual(self.rp.__str__(), self.rp.name)
54+
55+
def test_unique_together(self):
56+
rp = RoutingPolicy(name=self.rp.name, description=self.rp.description)
57+
with self.assertRaises(IntegrityError):
58+
rp.save()
59+
60+
61+
class BGPPeerGroupTestCase(TestCase):
62+
def setUp(self):
63+
self.in_policy1 = RoutingPolicy.objects.create(
64+
name='in_policy_1'
65+
)
66+
self.in_policy2 = RoutingPolicy.objects.create(
67+
name='in_policy_2'
68+
)
69+
self.out_policy1 = RoutingPolicy.objects.create(
70+
name='out_policy_1'
71+
)
72+
self.out_policy2 = RoutingPolicy.objects.create(
73+
name='out_policy_2'
74+
)
75+
self.peer_group = BGPPeerGroup.objects.create(
76+
name='peer_group',
77+
description='peer_group'
78+
)
79+
80+
def test_create_peer_group(self):
81+
self.assertTrue(isinstance(self.peer_group, BGPPeerGroup))
82+
self.assertEqual(self.peer_group.__str__(), self.peer_group.name)
83+
84+
def test_peer_group_polciy_realtions(self):
85+
peer_group = BGPPeerGroup.objects.create(
86+
name='group1',
87+
)
88+
peer_group.import_policies.add(self.in_policy1)
89+
peer_group.import_policies.add(self.in_policy2)
90+
peer_group.export_policies.add(self.out_policy1)
91+
peer_group.export_policies.add(self.out_policy2)
92+
self.assertEqual(
93+
peer_group.import_policies.get(
94+
pk=self.in_policy1.pk
95+
),
96+
self.in_policy1
97+
)
98+
self.assertEqual(
99+
peer_group.import_policies.get(
100+
pk=self.in_policy2.pk
101+
),
102+
self.in_policy2
103+
)
104+
self.assertEqual(
105+
peer_group.export_policies.get(
106+
pk=self.out_policy1.pk
107+
),
108+
self.out_policy1
109+
)
110+
self.assertEqual(
111+
peer_group.export_policies.get(
112+
pk=self.out_policy2.pk
113+
),
114+
self.out_policy2
115+
)
116+
117+
def test_unique_together(self):
118+
peer_group = BGPPeerGroup(
119+
name='peer_group',
120+
description='peer_group'
121+
)
122+
with self.assertRaises(IntegrityError):
123+
peer_group.save()
124+
125+
def test_ununique_together(self):
126+
peer_group1 = BGPPeerGroup(
127+
name='peer_group1',
128+
description='peer_group'
129+
)
130+
peer_group1.save()
131+
132+
133+
class CommunityTestCase(TestCase):
134+
def setUp(self):
135+
self.community = Community.objects.create(
136+
value='65001:65001',
137+
description='test_community'
138+
)
139+
140+
def test_create_community(self):
141+
self.assertTrue(isinstance(self.community, Community))
142+
self.assertEqual(self.community.__str__(), self.community.value)
143+
144+
def test_invalid_community(self):
145+
community = Community(value=0)
146+
self.assertRaises(ValidationError, community.full_clean)
147+
148+
149+
class BGPSessionTestCase(TestCase):
150+
def setUp(self):
151+
manufacturer = Manufacturer.objects.create(
152+
name='manufacturer'
153+
)
154+
device_type = DeviceType.objects.create(
155+
manufacturer=manufacturer,
156+
model='device type'
157+
)
158+
device_role = DeviceRole.objects.create(
159+
name='device role'
160+
)
161+
self.site = Site.objects.create(
162+
name='site'
163+
)
164+
self.tenant = Tenant.objects.create(
165+
name='tenant'
166+
)
167+
self.device = Device.objects.create(
168+
name='device',
169+
site=self.site,
170+
device_role=device_role,
171+
device_type=device_type
172+
)
173+
self.local_as = ASN.objects.create(
174+
number=65001,
175+
)
176+
self.remote_as = ASN.objects.create(
177+
number=65002,
178+
)
179+
self.peer_group = BGPPeerGroup.objects.create(
180+
name='peer_group'
181+
)
182+
self.routing_policy_in = RoutingPolicy.objects.create(
183+
name='policy_in'
184+
)
185+
self.routing_policy_out = RoutingPolicy.objects.create(
186+
name='policy_out'
187+
)
188+
self.local_ip = IPAddress.objects.create(
189+
address='1.1.1.1/32'
190+
)
191+
self.remote_ip = IPAddress.objects.create(
192+
address='1.1.1.2/32'
193+
)
194+
self.session = BGPSession.objects.create(
195+
name='session',
196+
site=self.site,
197+
tenant=self.tenant,
198+
device=self.device,
199+
local_address=self.local_ip,
200+
remote_address=self.remote_ip,
201+
local_as=self.local_as,
202+
remote_as=self.remote_as,
203+
status='active',
204+
peer_group=self.peer_group,
205+
)
206+
207+
def test_create_session(self):
208+
self.assertTrue(isinstance(self.session, BGPSession))
209+
self.assertEqual(self.session.__str__(), f'{self.session.device}:{self.session.name}')
210+
211+
def test_policies(self):
212+
pass
213+
214+
def test_unique_together(self):
215+
pass

netbox_bgp/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "0.3.5"
1+
__version__ = "0.3.6"

0 commit comments

Comments
 (0)