mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-31 04:46:26 -06:00
extend circuit model and device model to add tenant info (#53)
* extend circuit model and device model to add tenant info * update netbox circuit plugin with latest version 1.6.1
This commit is contained in:
parent
5ec7badd33
commit
85ca5301c5
@ -9,15 +9,16 @@ from dcim.api.nested_serializers import (
|
||||
NestedCableSerializer,
|
||||
)
|
||||
from dcim.choices import InterfaceTypeChoices, InterfaceModeChoices
|
||||
from dcim.models import Interface, Cable
|
||||
from dcim.models import Interface, Cable, Device
|
||||
from ipam.api.nested_serializers import NestedPrefixSerializer
|
||||
from ipam.models import VLAN, Prefix
|
||||
from tenancy.api.nested_serializers import NestedTenantGroupSerializer
|
||||
from tenancy.api.nested_serializers import NestedTenantGroupSerializer, NestedTenantSerializer
|
||||
from tenancy.models import Tenant as Customer
|
||||
from utilities.utils import dynamic_import
|
||||
from netbox.api import ChoiceField, ValidatedModelSerializer, SerializedPKRelatedField, WritableNestedSerializer
|
||||
|
||||
from netbox_virtual_circuit_plugin.models import VirtualCircuitVLAN, VirtualCircuit
|
||||
from circuits.models import Circuit, CircuitTermination
|
||||
|
||||
|
||||
def get_serializer_for_model(model, prefix=''):
|
||||
@ -32,6 +33,13 @@ def get_serializer_for_model(model, prefix=''):
|
||||
override_serializer_name = 'vapor.api.serializers.{}VLAN{}Serializer'.format(
|
||||
prefix, model_name
|
||||
)
|
||||
|
||||
# To extend Circuit model to support tenant field
|
||||
if model_name == 'CircuitTermination':
|
||||
override_serializer_name = 'vapor.api.serializers.{}Vapor{}Serializer'.format(
|
||||
prefix, model_name
|
||||
)
|
||||
|
||||
try:
|
||||
return dynamic_import(override_serializer_name)
|
||||
except AttributeError:
|
||||
@ -56,6 +64,15 @@ class NestedVirtualCircuitSerializer(ValidatedModelSerializer):
|
||||
fields = ['vcid', 'name', 'status', 'context']
|
||||
|
||||
|
||||
class NestedVaporDeviceSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:device-detail')
|
||||
tenant = NestedTenantSerializer()
|
||||
|
||||
class Meta:
|
||||
model = Device
|
||||
fields = ['id', 'url', 'name', 'display_name', 'tenant']
|
||||
|
||||
|
||||
class NestedVaporVLANSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:vlan-detail')
|
||||
|
||||
@ -80,7 +97,7 @@ class NestedVaporVLANSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedVLANInterfaceSerializer(WritableNestedSerializer):
|
||||
device = NestedDeviceSerializer(read_only=True)
|
||||
device = NestedVaporDeviceSerializer(read_only=True)
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:interface-detail')
|
||||
type = ChoiceField(choices=InterfaceTypeChoices, required=False)
|
||||
|
||||
@ -166,9 +183,27 @@ class CustomerSerializer(TaggedObjectSerializer, CustomFieldModelSerializer):
|
||||
]
|
||||
|
||||
|
||||
class NestedCircuitSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='circuits-api:circuit-detail')
|
||||
tenant = NestedTenantSerializer()
|
||||
|
||||
class Meta:
|
||||
model = Circuit
|
||||
fields = ['id', 'url', 'cid', 'tenant']
|
||||
|
||||
|
||||
class NestedVaporCircuitTerminationSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='circuits-api:circuittermination-detail')
|
||||
circuit = NestedCircuitSerializer()
|
||||
|
||||
class Meta:
|
||||
model = CircuitTermination
|
||||
fields = ['id', 'url', 'circuit', 'term_side']
|
||||
|
||||
|
||||
class InterfaceSerializer(TaggedObjectSerializer, CableTerminationSerializer, ConnectedEndpointSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:interface-detail')
|
||||
device = NestedDeviceSerializer()
|
||||
device = NestedVaporDeviceSerializer()
|
||||
type = ChoiceField(choices=InterfaceTypeChoices)
|
||||
lag = NestedInterfaceSerializer(required=False, allow_null=True)
|
||||
mode = ChoiceField(choices=InterfaceModeChoices, required=False, allow_null=True)
|
||||
|
@ -1,3 +1,3 @@
|
||||
django-allauth==0.42.0
|
||||
netbox-virtual-circuit-plugin==1.6.0
|
||||
netbox-virtual-circuit-plugin==1.6.1
|
||||
django-storages[google]==1.11.1
|
||||
|
Loading…
Reference in New Issue
Block a user