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
 | 
			
		||||
* [#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.models import *
 | 
			
		||||
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.serializers import (
 | 
			
		||||
    BaseModelSerializer, OrganizationalModelSerializer, PrimaryModelSerializer, WritableNestedSerializer
 | 
			
		||||
    OrganizationalModelSerializer, PrimaryModelSerializer, ValidatedModelSerializer, WritableNestedSerializer
 | 
			
		||||
)
 | 
			
		||||
from tenancy.api.nested_serializers import NestedTenantSerializer
 | 
			
		||||
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')
 | 
			
		||||
    circuit = NestedCircuitSerializer()
 | 
			
		||||
    site = NestedSiteSerializer(required=False)
 | 
			
		||||
    provider_network = NestedProviderNetworkSerializer(required=False)
 | 
			
		||||
    site = NestedSiteSerializer(required=False, allow_null=True)
 | 
			
		||||
    provider_network = NestedProviderNetworkSerializer(required=False, allow_null=True)
 | 
			
		||||
    cable = NestedCableSerializer(read_only=True)
 | 
			
		||||
 | 
			
		||||
    class Meta:
 | 
			
		||||
 
 | 
			
		||||
@@ -136,14 +136,20 @@ class CircuitTerminationTest(APIViewTestCases.APIViewTestCase):
 | 
			
		||||
        SIDE_A = CircuitTerminationSideChoices.SIDE_A
 | 
			
		||||
        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 = (
 | 
			
		||||
            Site(name='Site 1', slug='site-1'),
 | 
			
		||||
            Site(name='Site 2', slug='site-2'),
 | 
			
		||||
        )
 | 
			
		||||
        Site.objects.bulk_create(sites)
 | 
			
		||||
 | 
			
		||||
        provider = Provider.objects.create(name='Provider 1', slug='provider-1')
 | 
			
		||||
        circuit_type = CircuitType.objects.create(name='Circuit Type 1', slug='circuit-type-1')
 | 
			
		||||
        provider_networks = (
 | 
			
		||||
            ProviderNetwork(provider=provider, name='Provider Network 1'),
 | 
			
		||||
            ProviderNetwork(provider=provider, name='Provider Network 2'),
 | 
			
		||||
        )
 | 
			
		||||
        ProviderNetwork.objects.bulk_create(provider_networks)
 | 
			
		||||
 | 
			
		||||
        circuits = (
 | 
			
		||||
            Circuit(cid='Circuit 1', provider=provider, type=circuit_type),
 | 
			
		||||
@@ -153,10 +159,10 @@ class CircuitTerminationTest(APIViewTestCases.APIViewTestCase):
 | 
			
		||||
        Circuit.objects.bulk_create(circuits)
 | 
			
		||||
 | 
			
		||||
        circuit_terminations = (
 | 
			
		||||
            CircuitTermination(circuit=circuits[0], site=sites[0], term_side=SIDE_A),
 | 
			
		||||
            CircuitTermination(circuit=circuits[0], site=sites[1], term_side=SIDE_Z),
 | 
			
		||||
            CircuitTermination(circuit=circuits[1], site=sites[0], term_side=SIDE_A),
 | 
			
		||||
            CircuitTermination(circuit=circuits[1], site=sites[1], term_side=SIDE_Z),
 | 
			
		||||
            CircuitTermination(circuit=circuits[0], term_side=SIDE_A, site=sites[0]),
 | 
			
		||||
            CircuitTermination(circuit=circuits[0], term_side=SIDE_Z, provider_network=provider_networks[0]),
 | 
			
		||||
            CircuitTermination(circuit=circuits[1], term_side=SIDE_A, site=sites[1]),
 | 
			
		||||
            CircuitTermination(circuit=circuits[1], term_side=SIDE_Z, provider_network=provider_networks[1]),
 | 
			
		||||
        )
 | 
			
		||||
        CircuitTermination.objects.bulk_create(circuit_terminations)
 | 
			
		||||
 | 
			
		||||
@@ -164,13 +170,13 @@ class CircuitTerminationTest(APIViewTestCases.APIViewTestCase):
 | 
			
		||||
            {
 | 
			
		||||
                'circuit': circuits[2].pk,
 | 
			
		||||
                'term_side': SIDE_A,
 | 
			
		||||
                'site': sites[1].pk,
 | 
			
		||||
                'site': sites[0].pk,
 | 
			
		||||
                'port_speed': 200000,
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                'circuit': circuits[2].pk,
 | 
			
		||||
                'term_side': SIDE_Z,
 | 
			
		||||
                'site': sites[1].pk,
 | 
			
		||||
                'provider_network': provider_networks[0].pk,
 | 
			
		||||
                'port_speed': 200000,
 | 
			
		||||
            },
 | 
			
		||||
        ]
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user