Skip to content

Commit 57a8b99

Browse files
authored
Merge pull request #153 from k01ek/develop
Develop
2 parents 0eed31c + 25dfb58 commit 57a8b99

File tree

9 files changed

+74
-36
lines changed

9 files changed

+74
-36
lines changed

Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
PYTHON_VER?=3.8
2-
NETBOX_VER?=v3.5.1
2+
NETBOX_VER?=v3.6.1
33

44
NAME=netbox-bgp
55

README.md

+4-9
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,11 @@ This plugin provide following Models:
1010

1111
## Compatibility
1212

13-
| | |
14-
|-------------|-------|
15-
| NetBox 2.10 | 0.3.9 |
16-
| NetBox 2.11 | 0.3.9 |
17-
| NetBox 3.0 | 0.4.3 |
18-
| NetBox 3.1 | 0.5.0 |
19-
| NetBox 3.2 | >= 0.6.0 |
20-
| NetBox 3.3 | >= 0.8.1 |
21-
| NetBox 3.4 | >= 0.9.0 |
13+
| | |
14+
|-------------|-----------|
15+
| NetBox 3.4 | >= 0.9.0 |
2216
| NetBox 3.5 | >= 0.10.0 |
17+
| NetBox 3.6 | >= 0.11.0 |
2318

2419
## Installation
2520

netbox_bgp/__init__.py

+1-1
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 = '3.5.0'
15-
max_version = '3.5.99'
15+
max_version = '3.6.99'
1616
default_settings = {
1717
'device_ext_page': 'right',
1818
'top_level_menu' : False,

netbox_bgp/api/serializers.py

+38-14
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from netbox.api.serializers import NetBoxModelSerializer
88
from dcim.api.nested_serializers import NestedSiteSerializer, NestedDeviceSerializer
99
from tenancy.api.nested_serializers import NestedTenantSerializer
10-
from ipam.api.nested_serializers import NestedIPAddressSerializer, NestedASNSerializer
10+
from ipam.api.nested_serializers import NestedIPAddressSerializer, NestedASNSerializer, NestedPrefixSerializer
1111

1212

1313
from netbox_bgp.models import (
@@ -30,7 +30,7 @@ def to_representation(self, value):
3030

3131
class RoutingPolicySerializer(NetBoxModelSerializer):
3232
class Meta:
33-
model = RoutingPolicy
33+
model = RoutingPolicy
3434
fields = '__all__'
3535

3636

@@ -39,8 +39,8 @@ class NestedRoutingPolicySerializer(WritableNestedSerializer):
3939

4040
class Meta:
4141
model = RoutingPolicy
42-
fields = ['id', 'url', 'name', 'description']
43-
42+
fields = ['id', 'url', 'name', 'display', 'description']
43+
validators = []
4444

4545
class BGPPeerGroupSerializer(NetBoxModelSerializer):
4646
import_policies = SerializedPKRelatedField(
@@ -147,17 +147,14 @@ class Meta:
147147
'value', 'site', 'role'
148148
]
149149

150+
class NestedCommunitySerializer(WritableNestedSerializer):
151+
url = HyperlinkedIdentityField(view_name='plugins:netbox_bgp:community')
150152

151-
class RoutingPolicyRuleSerializer(NetBoxModelSerializer):
152153
class Meta:
153-
model = RoutingPolicyRule
154-
fields = '__all__'
155-
156-
157-
class PrefixListSerializer(NetBoxModelSerializer):
158-
class Meta:
159-
model = PrefixList
160-
fields = '__all__'
154+
model = Community
155+
fields = [
156+
'id', 'url', 'display', 'value'
157+
]
161158

162159

163160
class NestedPrefixListSerializer(WritableNestedSerializer):
@@ -167,9 +164,36 @@ class Meta:
167164
model = PrefixList
168165
fields = ['id', 'url', 'display', 'name']
169166

167+
class PrefixListSerializer(NetBoxModelSerializer):
168+
class Meta:
169+
model = PrefixList
170+
fields = '__all__'
171+
172+
class RoutingPolicyRuleSerializer(NetBoxModelSerializer):
173+
match_ip_address = SerializedPKRelatedField(
174+
queryset=PrefixList.objects.all(),
175+
serializer=NestedPrefixListSerializer,
176+
required=False,
177+
allow_null=True,
178+
many=True
179+
)
180+
routing_policy = NestedRoutingPolicySerializer()
181+
match_community = SerializedPKRelatedField(
182+
queryset=Community.objects.all(),
183+
serializer=NestedCommunitySerializer,
184+
required=False,
185+
allow_null=True,
186+
many=True
187+
)
188+
189+
190+
class Meta:
191+
model = RoutingPolicyRule
192+
fields = '__all__'
170193

171194
class PrefixListRuleSerializer(NetBoxModelSerializer):
172-
prefix_list = NestedPrefixListSerializer()
195+
prefix_list = NestedPrefixListSerializer()
196+
prefix = NestedPrefixSerializer(required=False, allow_null=True)
173197

174198
class Meta:
175199
model = PrefixListRule

netbox_bgp/api/views.py

+9-8
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from rest_framework.viewsets import ModelViewSet
1+
from netbox.api.viewsets import NetBoxModelViewSet
22

33
from .serializers import (
44
BGPSessionSerializer, RoutingPolicySerializer, BGPPeerGroupSerializer,
@@ -11,42 +11,43 @@
1111
)
1212

1313

14-
class BGPSessionViewSet(ModelViewSet):
14+
class BGPSessionViewSet(NetBoxModelViewSet):
1515
queryset = BGPSession.objects.all()
1616
serializer_class = BGPSessionSerializer
1717
filterset_class = BGPSessionFilterSet
1818

1919

20-
class RoutingPolicyViewSet(ModelViewSet):
20+
class RoutingPolicyViewSet(NetBoxModelViewSet):
2121
queryset = RoutingPolicy.objects.all()
2222
serializer_class = RoutingPolicySerializer
2323
filterset_class = RoutingPolicyFilterSet
2424

2525

26-
class RoutingPolicyRuleViewSet(ModelViewSet):
26+
class RoutingPolicyRuleViewSet(NetBoxModelViewSet):
2727
queryset = RoutingPolicyRule.objects.all()
2828
serializer_class = RoutingPolicyRuleSerializer
2929
filterset_class = RoutingPolicyRuleFilterSet
3030

3131

32-
class BGPPeerGroupViewSet(ModelViewSet):
32+
class BGPPeerGroupViewSet(NetBoxModelViewSet):
3333
queryset = BGPPeerGroup.objects.all()
3434
serializer_class = BGPPeerGroupSerializer
3535
filterset_class = BGPPeerGroupFilterSet
3636

3737

38-
class CommunityViewSet(ModelViewSet):
38+
class CommunityViewSet(NetBoxModelViewSet):
3939
queryset = Community.objects.all()
4040
serializer_class = CommunitySerializer
4141
filterset_class = CommunityFilterSet
4242

4343

44-
class PrefixListViewSet(ModelViewSet):
44+
class PrefixListViewSet(NetBoxModelViewSet):
4545
queryset = PrefixList.objects.all()
4646
serializer_class = PrefixListSerializer
4747
filterset_class = PrefixListFilterSet
4848

49-
class PrefixListRuleViewSet(ModelViewSet):
49+
class PrefixListRuleViewSet(NetBoxModelViewSet):
50+
5051
queryset = PrefixListRule.objects.all()
5152
serializer_class = PrefixListRuleSerializer
5253
filterset_class = PrefixListRuleFilterSet

netbox_bgp/forms.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,7 @@ class PrefixListForm(NetBoxModelForm):
383383

384384
class Meta:
385385
model = PrefixList
386-
fields = ['name', 'description', 'tags']
386+
fields = ['name', 'description', 'family', 'tags']
387387

388388

389389
class PrefixListRuleForm(NetBoxModelForm):
+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Generated by Django 4.1.9 on 2023-09-19 05:03
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('netbox_bgp', '0028_netbox_bgp'),
10+
]
11+
12+
operations = [
13+
migrations.AlterField(
14+
model_name='bgpsession',
15+
name='name',
16+
field=models.CharField(blank=True, max_length=256, null=True),
17+
),
18+
]

netbox_bgp/models.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ def get_absolute_url(self):
122122

123123
class BGPSession(NetBoxModel):
124124
name = models.CharField(
125-
max_length=64,
125+
max_length=256,
126126
blank=True,
127127
null=True
128128
)

netbox_bgp/version.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "0.10.2"
1+
__version__ = "0.11.0"

0 commit comments

Comments
 (0)