Skip to content

Commit 51d585c

Browse files
authored
Merge pull request #252 from cruse1977/main
Updates
2 parents 04c7778 + 91f4db0 commit 51d585c

File tree

16 files changed

+764
-247
lines changed

16 files changed

+764
-247
lines changed

develop/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
ARG python_ver=3.12
22
FROM python:${python_ver}
33

4-
ARG netbox_ver=v4.2.1
4+
ARG netbox_ver=v4.3.1
55
ENV PYTHONUNBUFFERED 1
66

77
RUN mkdir -p /opt

netbox_bgp/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ class BGPConfig(PluginConfig):
1111
author_email = '[email protected]'
1212
base_url = 'bgp'
1313
required_settings = []
14-
min_version = '4.2.0'
15-
max_version = '4.2.99'
14+
# min_version = '4.2.0'
15+
# max_version = '4.2.99'
1616
default_settings = {
1717
'device_ext_page': 'right',
1818
'top_level_menu' : False,

netbox_bgp/api/serializers.py

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
from rest_framework.serializers import HyperlinkedIdentityField, ValidationError
22
from rest_framework.relations import PrimaryKeyRelatedField
3-
43
from netbox.api.fields import ChoiceField, SerializedPKRelatedField
5-
64
from netbox.api.serializers import NetBoxModelSerializer
75
from ipam.api.serializers import IPAddressSerializer, ASNSerializer, PrefixSerializer
86
from tenancy.api.serializers import TenantSerializer
97
from dcim.api.serializers import SiteSerializer, DeviceSerializer
10-
118
from ipam.api.field_serializers import IPNetworkField
9+
from virtualization.api.serializers import VirtualMachineSerializer
1210

1311
from netbox_bgp.models import (
1412
BGPSession,
@@ -30,7 +28,7 @@ class RoutingPolicySerializer(NetBoxModelSerializer):
3028

3129
class Meta:
3230
model = RoutingPolicy
33-
fields = [
31+
fields = (
3432
"id",
3533
"url",
3634
"display",
@@ -39,7 +37,7 @@ class Meta:
3937
"tags",
4038
"custom_fields",
4139
"comments",
42-
]
40+
)
4341
brief_fields = ("id", "url", "display", "name", "description")
4442

4543

@@ -48,7 +46,7 @@ class PrefixListSerializer(NetBoxModelSerializer):
4846

4947
class Meta:
5048
model = PrefixList
51-
fields = [
49+
fields = (
5250
"id",
5351
"url",
5452
"name",
@@ -58,7 +56,7 @@ class Meta:
5856
"tags",
5957
"custom_fields",
6058
"comments",
61-
]
59+
)
6260
brief_fields = ("id", "url", "display", "name", "description")
6361

6462

@@ -84,7 +82,7 @@ class BGPPeerGroupSerializer(NetBoxModelSerializer):
8482

8583
class Meta:
8684
model = BGPPeerGroup
87-
fields = [
85+
fields = (
8886
"id",
8987
"url",
9088
"display",
@@ -94,7 +92,7 @@ class Meta:
9492
"export_policies",
9593
"comments",
9694
"custom_fields",
97-
]
95+
)
9896
brief_fields = ("id", "url", "display", "name", "description")
9997

10098

@@ -104,6 +102,7 @@ class BGPSessionSerializer(NetBoxModelSerializer):
104102
site = SiteSerializer(nested=True, required=False, allow_null=True)
105103
tenant = TenantSerializer(nested=True, required=False, allow_null=True)
106104
device = DeviceSerializer(nested=True, required=False, allow_null=True)
105+
virtualmachine = VirtualMachineSerializer(nested=True, required=False, allow_null=True)
107106
local_address = IPAddressSerializer(nested=True, required=True, allow_null=False)
108107
remote_address = IPAddressSerializer(nested=True, required=True, allow_null=False)
109108
local_as = ASNSerializer(nested=True, required=True, allow_null=False)
@@ -130,7 +129,7 @@ class BGPSessionSerializer(NetBoxModelSerializer):
130129

131130
class Meta:
132131
model = BGPSession
133-
fields = [
132+
fields = (
134133
"id",
135134
"url",
136135
"tags",
@@ -140,6 +139,7 @@ class Meta:
140139
"site",
141140
"tenant",
142141
"device",
142+
"virtualmachine",
143143
"local_address",
144144
"remote_address",
145145
"local_as",
@@ -154,7 +154,7 @@ class Meta:
154154
"name",
155155
"description",
156156
"comments",
157-
]
157+
)
158158
brief_fields = ("id", "url", "display", "name", "description")
159159

160160
def to_representation(self, instance):
@@ -192,7 +192,7 @@ class CommunitySerializer(NetBoxModelSerializer):
192192

193193
class Meta:
194194
model = Community
195-
fields = [
195+
fields = (
196196
"id",
197197
"url",
198198
"tags",
@@ -207,7 +207,7 @@ class Meta:
207207
"site",
208208
"role",
209209
"comments",
210-
]
210+
)
211211
brief_fields = ("id", "url", "display", "value", "description")
212212

213213

@@ -216,7 +216,7 @@ class CommunityListSerializer(NetBoxModelSerializer):
216216

217217
class Meta:
218218
model = CommunityList
219-
fields = [
219+
fields = (
220220
"id",
221221
"url",
222222
"name",
@@ -225,7 +225,7 @@ class Meta:
225225
"tags",
226226
"custom_fields",
227227
"comments",
228-
]
228+
)
229229
brief_fields = ("id", "url", "display", "name", "description")
230230

231231

@@ -235,7 +235,7 @@ class CommunityListRuleSerializer(NetBoxModelSerializer):
235235

236236
class Meta:
237237
model = CommunityListRule
238-
fields = [
238+
fields = (
239239
"id",
240240
"tags",
241241
"custom_fields",
@@ -247,7 +247,7 @@ class Meta:
247247
"action",
248248
"community",
249249
"comments",
250-
]
250+
)
251251
brief_fields = ("id", "display", "description")
252252

253253

@@ -289,7 +289,7 @@ class RoutingPolicyRuleSerializer(NetBoxModelSerializer):
289289

290290
class Meta:
291291
model = RoutingPolicyRule
292-
fields = [
292+
fields = (
293293
"id",
294294
"index",
295295
"display",
@@ -306,7 +306,7 @@ class Meta:
306306
"tags",
307307
"custom_fields",
308308
"comments",
309-
]
309+
)
310310
brief_fields = ("id", "display", "description")
311311

312312

@@ -317,7 +317,7 @@ class PrefixListRuleSerializer(NetBoxModelSerializer):
317317

318318
class Meta:
319319
model = PrefixListRule
320-
fields = [
320+
fields = (
321321
"id",
322322
"description",
323323
"tags",
@@ -333,5 +333,5 @@ class Meta:
333333
"le",
334334
"prefix",
335335
"comments",
336-
]
336+
)
337337
brief_fields = ("id", "display", "description")

netbox_bgp/filtersets.py

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@
1212
)
1313
from ipam.models import IPAddress, ASN
1414
from dcim.models import Device, Site
15-
15+
from virtualization.models import VirtualMachine
1616

1717
class CommunityFilterSet(NetBoxModelFilterSet, TenancyFilterSet):
1818

1919
class Meta:
2020
model = Community
21-
fields = ['id', 'value', 'description', 'status', 'tenant']
21+
fields = ('id', 'value', 'description', 'status', 'tenant',)
2222

2323
def search(self, queryset, name, value):
2424
"""Perform the filtered search."""
@@ -35,7 +35,7 @@ class CommunityListFilterSet(NetBoxModelFilterSet):
3535

3636
class Meta:
3737
model = CommunityList
38-
fields = ['id', 'name', 'description']
38+
fields = ('id', 'name', 'description',)
3939

4040
def search(self, queryset, name, value):
4141
"""Perform the filtered search."""
@@ -52,7 +52,7 @@ class CommunityListRuleFilterSet(NetBoxModelFilterSet):
5252

5353
class Meta:
5454
model = CommunityListRule
55-
fields = ['id', 'action', 'community_list', 'community_list_id']
55+
fields = ('id', 'action', 'community_list', 'community_list_id',)
5656

5757
def search(self, queryset, name, value):
5858
"""Perform the filtered search."""
@@ -137,6 +137,18 @@ class BGPSessionFilterSet(NetBoxModelFilterSet, TenancyFilterSet):
137137
to_field_name='name',
138138
label='Device (name)',
139139
)
140+
virtualmachine_id = django_filters.ModelMultipleChoiceFilter(
141+
field_name='virtualmachine__id',
142+
queryset=VirtualMachine.objects.all(),
143+
to_field_name='id',
144+
label='VirtualMachine (ID)',
145+
)
146+
virtualmachine = django_filters.ModelMultipleChoiceFilter(
147+
field_name='virtualmachine__name',
148+
queryset=VirtualMachine.objects.all(),
149+
to_field_name='name',
150+
label='VirtualMachine (name)',
151+
)
140152
site_id = django_filters.ModelMultipleChoiceFilter(
141153
field_name='site__id',
142154
queryset=Site.objects.all(),
@@ -160,7 +172,7 @@ class BGPSessionFilterSet(NetBoxModelFilterSet, TenancyFilterSet):
160172

161173
class Meta:
162174
model = BGPSession
163-
fields = ['id', 'name', 'description', 'status', 'tenant']
175+
fields = ('id', 'name', 'description', 'status', 'tenant',)
164176

165177
def search(self, queryset, name, value):
166178
"""Perform the filtered search."""
@@ -197,7 +209,7 @@ class RoutingPolicyFilterSet(NetBoxModelFilterSet):
197209

198210
class Meta:
199211
model = RoutingPolicy
200-
fields = ['id', 'name', 'description']
212+
fields = ('id', 'name', 'description',)
201213

202214
def search(self, queryset, name, value):
203215
"""Perform the filtered search."""
@@ -214,7 +226,7 @@ class RoutingPolicyRuleFilterSet(NetBoxModelFilterSet):
214226

215227
class Meta:
216228
model = RoutingPolicyRule
217-
fields = ['id', 'index', 'action', 'description', 'routing_policy_id', 'continue_entry']
229+
fields = ('id', 'index', 'action', 'description', 'routing_policy_id', 'continue_entry',)
218230

219231
def search(self, queryset, name, value):
220232
"""Perform the filtered search."""
@@ -234,7 +246,7 @@ class BGPPeerGroupFilterSet(NetBoxModelFilterSet):
234246

235247
class Meta:
236248
model = BGPPeerGroup
237-
fields = ['id', 'name', 'description']
249+
fields = ('id', 'name', 'description',)
238250

239251
def search(self, queryset, name, value):
240252
"""Perform the filtered search."""
@@ -251,7 +263,7 @@ class PrefixListFilterSet(NetBoxModelFilterSet):
251263

252264
class Meta:
253265
model = PrefixList
254-
fields = ['id', 'name', 'description', 'family']
266+
fields = ('id', 'name', 'description', 'family',)
255267

256268
def search(self, queryset, name, value):
257269
"""Perform the filtered search."""
@@ -268,7 +280,7 @@ class PrefixListRuleFilterSet(NetBoxModelFilterSet):
268280
class Meta:
269281
model = PrefixListRule
270282
#fields = ['index', 'action', 'prefix_custom', 'ge', 'le', 'prefix_list', 'prefix_list_id']
271-
fields = ['id', 'index', 'action', 'ge', 'le', 'prefix_list', 'prefix_list_id']
283+
fields = ('id', 'index', 'action', 'ge', 'le', 'prefix_list', 'prefix_list_id',)
272284

273285
def search(self, queryset, name, value):
274286
"""Perform the filtered search."""

0 commit comments

Comments
 (0)