Skip to content

Commit 9bb67da

Browse files
authored
Merge pull request #160 from k01ek/develop
Develop
2 parents 57a8b99 + d655f62 commit 9bb67da

File tree

5 files changed

+122
-80
lines changed

5 files changed

+122
-80
lines changed

netbox_bgp/api/serializers.py

+10-4
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from dcim.api.nested_serializers import NestedSiteSerializer, NestedDeviceSerializer
99
from tenancy.api.nested_serializers import NestedTenantSerializer
1010
from ipam.api.nested_serializers import NestedIPAddressSerializer, NestedASNSerializer, NestedPrefixSerializer
11+
from ipam.api.field_serializers import IPNetworkField
1112

1213

1314
from netbox_bgp.models import (
@@ -31,7 +32,7 @@ def to_representation(self, value):
3132
class RoutingPolicySerializer(NetBoxModelSerializer):
3233
class Meta:
3334
model = RoutingPolicy
34-
fields = '__all__'
35+
fields = ['id', 'name', 'description']
3536

3637

3738
class NestedRoutingPolicySerializer(WritableNestedSerializer):
@@ -42,6 +43,7 @@ class Meta:
4243
fields = ['id', 'url', 'name', 'display', 'description']
4344
validators = []
4445

46+
4547
class BGPPeerGroupSerializer(NetBoxModelSerializer):
4648
import_policies = SerializedPKRelatedField(
4749
queryset=RoutingPolicy.objects.all(),
@@ -60,7 +62,7 @@ class BGPPeerGroupSerializer(NetBoxModelSerializer):
6062

6163
class Meta:
6264
model = BGPPeerGroup
63-
fields = '__all__'
65+
fields = ['id', 'name', 'description', 'import_policies', 'export_policies']
6466

6567

6668
class NestedBGPPeerGroupSerializer(WritableNestedSerializer):
@@ -164,10 +166,12 @@ class Meta:
164166
model = PrefixList
165167
fields = ['id', 'url', 'display', 'name']
166168

169+
167170
class PrefixListSerializer(NetBoxModelSerializer):
168171
class Meta:
169172
model = PrefixList
170-
fields = '__all__'
173+
fields = ['id', 'name', 'description', 'family']
174+
171175

172176
class RoutingPolicyRuleSerializer(NetBoxModelSerializer):
173177
match_ip_address = SerializedPKRelatedField(
@@ -189,11 +193,13 @@ class RoutingPolicyRuleSerializer(NetBoxModelSerializer):
189193

190194
class Meta:
191195
model = RoutingPolicyRule
192-
fields = '__all__'
196+
fields = ['id', 'index', 'action', 'match_ip_address', 'routing_policy', 'match_community']
197+
193198

194199
class PrefixListRuleSerializer(NetBoxModelSerializer):
195200
prefix_list = NestedPrefixListSerializer()
196201
prefix = NestedPrefixSerializer(required=False, allow_null=True)
202+
prefix_custom = IPNetworkField(required=False, allow_null=True)
197203

198204
class Meta:
199205
model = PrefixListRule

netbox_bgp/filters.py

+24-50
Original file line numberDiff line numberDiff line change
@@ -7,38 +7,27 @@
77

88
from .models import Community, BGPSession, RoutingPolicy, RoutingPolicyRule, BGPPeerGroup, PrefixList, PrefixListRule
99
from ipam.models import IPAddress, ASN
10-
from dcim.models import Device
10+
from dcim.models import Device, Site
1111

1212

1313
class CommunityFilterSet(NetBoxModelFilterSet):
14-
q = django_filters.CharFilter(
15-
method='search',
16-
label='Search',
17-
)
18-
tag = TagFilter()
1914

2015
class Meta:
2116
model = Community
22-
fields = ['value', 'description', 'status', 'tenant']
17+
fields = ['id', 'value', 'description', 'status', 'tenant']
2318

2419
def search(self, queryset, name, value):
2520
"""Perform the filtered search."""
2621
if not value.strip():
2722
return queryset
2823
qs_filter = (
29-
Q(id__icontains=value)
30-
| Q(value__icontains=value)
24+
Q(value__icontains=value)
3125
| Q(description__icontains=value)
3226
)
3327
return queryset.filter(qs_filter)
3428

3529

3630
class BGPSessionFilterSet(NetBoxModelFilterSet):
37-
q = django_filters.CharFilter(
38-
method='search',
39-
label='Search',
40-
)
41-
tag = TagFilter()
4231

4332
remote_as = django_filters.ModelMultipleChoiceFilter(
4433
field_name='remote_as__asn',
@@ -109,6 +98,18 @@ class BGPSessionFilterSet(NetBoxModelFilterSet):
10998
to_field_name='name',
11099
label='Device (name)',
111100
)
101+
site_id = django_filters.ModelMultipleChoiceFilter(
102+
field_name='site__id',
103+
queryset=Site.objects.all(),
104+
to_field_name='id',
105+
label='Site (ID)',
106+
)
107+
site = django_filters.ModelMultipleChoiceFilter(
108+
field_name='site__name',
109+
queryset=Site.objects.all(),
110+
to_field_name='name',
111+
label='DSite (name)',
112+
)
112113
by_remote_address = django_filters.CharFilter(
113114
method='search_by_remote_ip',
114115
label='Remote Address',
@@ -120,7 +121,7 @@ class BGPSessionFilterSet(NetBoxModelFilterSet):
120121

121122
class Meta:
122123
model = BGPSession
123-
fields = ['name', 'description', 'status', 'tenant']
124+
fields = ['id', 'name', 'description', 'status', 'tenant']
124125

125126
def search(self, queryset, name, value):
126127
"""Perform the filtered search."""
@@ -154,15 +155,10 @@ def search_by_local_ip(self, queryset, name, value):
154155

155156

156157
class RoutingPolicyFilterSet(NetBoxModelFilterSet):
157-
q = django_filters.CharFilter(
158-
method='search',
159-
label='Search',
160-
)
161-
tag = TagFilter()
162158

163159
class Meta:
164160
model = RoutingPolicy
165-
fields = ['name', 'description']
161+
fields = ['id', 'name', 'description']
166162

167163
def search(self, queryset, name, value):
168164
"""Perform the filtered search."""
@@ -175,12 +171,7 @@ def search(self, queryset, name, value):
175171
return queryset.filter(qs_filter)
176172

177173

178-
class RoutingPolicyRuleFilterSet(django_filters.FilterSet):
179-
q = django_filters.CharFilter(
180-
method='search',
181-
label='Search',
182-
)
183-
tag = TagFilter()
174+
class RoutingPolicyRuleFilterSet(NetBoxModelFilterSet):
184175

185176
class Meta:
186177
model = RoutingPolicyRule
@@ -191,8 +182,7 @@ def search(self, queryset, name, value):
191182
if not value.strip():
192183
return queryset
193184
qs_filter = (
194-
Q(id__icontains=value)
195-
| Q(index__icontains=value)
185+
Q(index__icontains=value)
196186
| Q(action__icontains=value)
197187
| Q(description__icontains=value)
198188
| Q(routing_policy_id__icontains=value)
@@ -201,16 +191,11 @@ def search(self, queryset, name, value):
201191
return queryset.filter(qs_filter)
202192

203193

204-
class BGPPeerGroupFilterSet(django_filters.FilterSet):
205-
q = django_filters.CharFilter(
206-
method='search',
207-
label='Search',
208-
)
209-
tag = TagFilter()
194+
class BGPPeerGroupFilterSet(NetBoxModelFilterSet):
210195

211196
class Meta:
212197
model = BGPPeerGroup
213-
fields = ['name', 'description']
198+
fields = ['id', 'name', 'description']
214199

215200
def search(self, queryset, name, value):
216201
"""Perform the filtered search."""
@@ -224,15 +209,10 @@ def search(self, queryset, name, value):
224209

225210

226211
class PrefixListFilterSet(NetBoxModelFilterSet):
227-
q = django_filters.CharFilter(
228-
method='search',
229-
label='Search',
230-
)
231-
tag = TagFilter()
232212

233213
class Meta:
234214
model = PrefixList
235-
fields = ['name', 'description']
215+
fields = ['id', 'name', 'description']
236216

237217
def search(self, queryset, name, value):
238218
"""Perform the filtered search."""
@@ -244,12 +224,7 @@ def search(self, queryset, name, value):
244224
)
245225
return queryset.filter(qs_filter)
246226

247-
class PrefixListRuleFilterSet(django_filters.FilterSet):
248-
q = django_filters.CharFilter(
249-
method='search',
250-
label='Search',
251-
)
252-
tag = TagFilter()
227+
class PrefixListRuleFilterSet(NetBoxModelFilterSet):
253228

254229
class Meta:
255230
model = PrefixListRule
@@ -261,8 +236,7 @@ def search(self, queryset, name, value):
261236
if not value.strip():
262237
return queryset
263238
qs_filter = (
264-
Q(id__icontains=value)
265-
| Q(index__icontains=value)
239+
Q(index__icontains=value)
266240
| Q(action__icontains=value)
267241
#| Q(prefix_custom__icontains=value)
268242
| Q(ge__icontains=value)

netbox_bgp/forms.py

+7-23
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
from django.core.exceptions import MultipleObjectsReturned, ObjectDoesNotExist, ValidationError
44
from django.utils.translation import gettext as _
55

6-
from extras.models import Tag
76
from tenancy.models import Tenant
87
from dcim.models import Device, Site
98
from ipam.models import IPAddress, Prefix, ASN
@@ -25,10 +24,6 @@
2524

2625

2726
class CommunityForm(NetBoxModelForm):
28-
tags = DynamicModelMultipleChoiceField(
29-
queryset=Tag.objects.all(),
30-
required=False
31-
)
3227
status = forms.ChoiceField(
3328
required=False,
3429
choices=CommunityStatusChoices,
@@ -114,10 +109,6 @@ class BGPSessionForm(NetBoxModelForm):
114109
max_length=64,
115110
required=True
116111
)
117-
tags = DynamicModelMultipleChoiceField(
118-
queryset=Tag.objects.all(),
119-
required=False
120-
)
121112
site = DynamicModelChoiceField(
122113
queryset=Site.objects.all(),
123114
required=False
@@ -236,6 +227,11 @@ class BGPSessionFilterForm(NetBoxModelFilterSetForm):
236227
required=False,
237228
label=_('Device')
238229
)
230+
site_id = DynamicModelMultipleChoiceField(
231+
queryset=Site.objects.all(),
232+
required=False,
233+
label=_('Site')
234+
)
239235
status = forms.MultipleChoiceField(
240236
choices=SessionStatusChoices,
241237
required=False,
@@ -280,10 +276,6 @@ class RoutingPolicyFilterForm(NetBoxModelFilterSetForm):
280276

281277

282278
class RoutingPolicyForm(NetBoxModelForm):
283-
tags = DynamicModelMultipleChoiceField(
284-
queryset=Tag.objects.all(),
285-
required=False
286-
)
287279

288280
class Meta:
289281
model = RoutingPolicy
@@ -315,10 +307,6 @@ class BGPPeerGroupForm(NetBoxModelForm):
315307
api_url='/api/plugins/bgp/routing-policy/'
316308
)
317309
)
318-
tags = DynamicModelMultipleChoiceField(
319-
queryset=Tag.objects.all(),
320-
required=False
321-
)
322310

323311
class Meta:
324312
model = BGPPeerGroup
@@ -361,7 +349,7 @@ class Meta:
361349
fields = [
362350
'routing_policy', 'index', 'action', 'continue_entry', 'match_community',
363351
'match_ip_address', 'match_ipv6_address', 'match_custom',
364-
'set_actions', 'description',
352+
'set_actions', 'description', 'tags'
365353
]
366354

367355

@@ -376,10 +364,6 @@ class PrefixListFilterForm(NetBoxModelFilterSetForm):
376364

377365

378366
class PrefixListForm(NetBoxModelForm):
379-
tags = DynamicModelMultipleChoiceField(
380-
queryset=Tag.objects.all(),
381-
required=False
382-
)
383367

384368
class Meta:
385369
model = PrefixList
@@ -411,5 +395,5 @@ class Meta:
411395
fields = [
412396
'prefix_list', 'index',
413397
'action', 'prefix', 'prefix_custom',
414-
'ge', 'le'
398+
'ge', 'le', 'tags'
415399
]

0 commit comments

Comments
 (0)