mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Fixes #7455: Fix site/provider network validation for circuit termination API serializer
This commit is contained in:
@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
* [#7442](https://github.com/netbox-community/netbox/issues/7442) - Fix missing actions column on user-configured tables
|
* [#7442](https://github.com/netbox-community/netbox/issues/7442) - Fix missing actions column on user-configured tables
|
||||||
* [#7446](https://github.com/netbox-community/netbox/issues/7446) - Fix exception when viewing a large number of child IPs within a prefix
|
* [#7446](https://github.com/netbox-community/netbox/issues/7446) - Fix exception when viewing a large number of child IPs within a prefix
|
||||||
|
* [#7455](https://github.com/netbox-community/netbox/issues/7455) - Fix site/provider network validation for circuit termination API serializer
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -3,10 +3,10 @@ from rest_framework import serializers
|
|||||||
from circuits.choices import CircuitStatusChoices
|
from circuits.choices import CircuitStatusChoices
|
||||||
from circuits.models import *
|
from circuits.models import *
|
||||||
from dcim.api.nested_serializers import NestedCableSerializer, NestedSiteSerializer
|
from dcim.api.nested_serializers import NestedCableSerializer, NestedSiteSerializer
|
||||||
from dcim.api.serializers import CableTerminationSerializer, ConnectedEndpointSerializer
|
from dcim.api.serializers import CableTerminationSerializer
|
||||||
from netbox.api import ChoiceField
|
from netbox.api import ChoiceField
|
||||||
from netbox.api.serializers import (
|
from netbox.api.serializers import (
|
||||||
BaseModelSerializer, OrganizationalModelSerializer, PrimaryModelSerializer, WritableNestedSerializer
|
OrganizationalModelSerializer, PrimaryModelSerializer, ValidatedModelSerializer, WritableNestedSerializer
|
||||||
)
|
)
|
||||||
from tenancy.api.nested_serializers import NestedTenantSerializer
|
from tenancy.api.nested_serializers import NestedTenantSerializer
|
||||||
from .nested_serializers import *
|
from .nested_serializers import *
|
||||||
@ -90,11 +90,11 @@ class CircuitSerializer(PrimaryModelSerializer):
|
|||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
class CircuitTerminationSerializer(BaseModelSerializer, CableTerminationSerializer):
|
class CircuitTerminationSerializer(ValidatedModelSerializer, CableTerminationSerializer):
|
||||||
url = serializers.HyperlinkedIdentityField(view_name='circuits-api:circuittermination-detail')
|
url = serializers.HyperlinkedIdentityField(view_name='circuits-api:circuittermination-detail')
|
||||||
circuit = NestedCircuitSerializer()
|
circuit = NestedCircuitSerializer()
|
||||||
site = NestedSiteSerializer(required=False)
|
site = NestedSiteSerializer(required=False, allow_null=True)
|
||||||
provider_network = NestedProviderNetworkSerializer(required=False)
|
provider_network = NestedProviderNetworkSerializer(required=False, allow_null=True)
|
||||||
cable = NestedCableSerializer(read_only=True)
|
cable = NestedCableSerializer(read_only=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
@ -136,14 +136,20 @@ class CircuitTerminationTest(APIViewTestCases.APIViewTestCase):
|
|||||||
SIDE_A = CircuitTerminationSideChoices.SIDE_A
|
SIDE_A = CircuitTerminationSideChoices.SIDE_A
|
||||||
SIDE_Z = CircuitTerminationSideChoices.SIDE_Z
|
SIDE_Z = CircuitTerminationSideChoices.SIDE_Z
|
||||||
|
|
||||||
|
provider = Provider.objects.create(name='Provider 1', slug='provider-1')
|
||||||
|
circuit_type = CircuitType.objects.create(name='Circuit Type 1', slug='circuit-type-1')
|
||||||
|
|
||||||
sites = (
|
sites = (
|
||||||
Site(name='Site 1', slug='site-1'),
|
Site(name='Site 1', slug='site-1'),
|
||||||
Site(name='Site 2', slug='site-2'),
|
Site(name='Site 2', slug='site-2'),
|
||||||
)
|
)
|
||||||
Site.objects.bulk_create(sites)
|
Site.objects.bulk_create(sites)
|
||||||
|
|
||||||
provider = Provider.objects.create(name='Provider 1', slug='provider-1')
|
provider_networks = (
|
||||||
circuit_type = CircuitType.objects.create(name='Circuit Type 1', slug='circuit-type-1')
|
ProviderNetwork(provider=provider, name='Provider Network 1'),
|
||||||
|
ProviderNetwork(provider=provider, name='Provider Network 2'),
|
||||||
|
)
|
||||||
|
ProviderNetwork.objects.bulk_create(provider_networks)
|
||||||
|
|
||||||
circuits = (
|
circuits = (
|
||||||
Circuit(cid='Circuit 1', provider=provider, type=circuit_type),
|
Circuit(cid='Circuit 1', provider=provider, type=circuit_type),
|
||||||
@ -153,10 +159,10 @@ class CircuitTerminationTest(APIViewTestCases.APIViewTestCase):
|
|||||||
Circuit.objects.bulk_create(circuits)
|
Circuit.objects.bulk_create(circuits)
|
||||||
|
|
||||||
circuit_terminations = (
|
circuit_terminations = (
|
||||||
CircuitTermination(circuit=circuits[0], site=sites[0], term_side=SIDE_A),
|
CircuitTermination(circuit=circuits[0], term_side=SIDE_A, site=sites[0]),
|
||||||
CircuitTermination(circuit=circuits[0], site=sites[1], term_side=SIDE_Z),
|
CircuitTermination(circuit=circuits[0], term_side=SIDE_Z, provider_network=provider_networks[0]),
|
||||||
CircuitTermination(circuit=circuits[1], site=sites[0], term_side=SIDE_A),
|
CircuitTermination(circuit=circuits[1], term_side=SIDE_A, site=sites[1]),
|
||||||
CircuitTermination(circuit=circuits[1], site=sites[1], term_side=SIDE_Z),
|
CircuitTermination(circuit=circuits[1], term_side=SIDE_Z, provider_network=provider_networks[1]),
|
||||||
)
|
)
|
||||||
CircuitTermination.objects.bulk_create(circuit_terminations)
|
CircuitTermination.objects.bulk_create(circuit_terminations)
|
||||||
|
|
||||||
@ -164,13 +170,13 @@ class CircuitTerminationTest(APIViewTestCases.APIViewTestCase):
|
|||||||
{
|
{
|
||||||
'circuit': circuits[2].pk,
|
'circuit': circuits[2].pk,
|
||||||
'term_side': SIDE_A,
|
'term_side': SIDE_A,
|
||||||
'site': sites[1].pk,
|
'site': sites[0].pk,
|
||||||
'port_speed': 200000,
|
'port_speed': 200000,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'circuit': circuits[2].pk,
|
'circuit': circuits[2].pk,
|
||||||
'term_side': SIDE_Z,
|
'term_side': SIDE_Z,
|
||||||
'site': sites[1].pk,
|
'provider_network': provider_networks[0].pk,
|
||||||
'port_speed': 200000,
|
'port_speed': 200000,
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
Reference in New Issue
Block a user