| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249 |
- from rest_framework import serializers
- from dcim.constants import CONNECTION_STATUS_CHOICES
- from dcim.models import (
- Cable, ConsolePort, ConsoleServerPort, Device, DeviceBay, DeviceType, DeviceRole, FrontPort, FrontPortTemplate,
- Interface, Manufacturer, Platform, PowerOutlet, PowerPort, Rack, RackGroup, RackRole, RearPort, RearPortTemplate,
- Region, Site, VirtualChassis,
- )
- from utilities.api import ChoiceField, WritableNestedSerializer
- __all__ = [
- 'NestedCableSerializer',
- 'NestedConsolePortSerializer',
- 'NestedConsoleServerPortSerializer',
- 'NestedDeviceBaySerializer',
- 'NestedDeviceRoleSerializer',
- 'NestedDeviceSerializer',
- 'NestedDeviceTypeSerializer',
- 'NestedFrontPortSerializer',
- 'NestedFrontPortTemplateSerializer',
- 'NestedInterfaceSerializer',
- 'NestedManufacturerSerializer',
- 'NestedPlatformSerializer',
- 'NestedPowerOutletSerializer',
- 'NestedPowerPortSerializer',
- 'NestedRackGroupSerializer',
- 'NestedRackRoleSerializer',
- 'NestedRackSerializer',
- 'NestedRearPortSerializer',
- 'NestedRearPortTemplateSerializer',
- 'NestedRegionSerializer',
- 'NestedSiteSerializer',
- 'NestedVirtualChassisSerializer',
- ]
- #
- # Regions/sites
- #
- class NestedRegionSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:region-detail')
- class Meta:
- model = Region
- fields = ['id', 'url', 'name', 'slug']
- class NestedSiteSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:site-detail')
- class Meta:
- model = Site
- fields = ['id', 'url', 'name', 'slug']
- #
- # Racks
- #
- class NestedRackGroupSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rackgroup-detail')
- class Meta:
- model = RackGroup
- fields = ['id', 'url', 'name', 'slug']
- class NestedRackRoleSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rackrole-detail')
- class Meta:
- model = RackRole
- fields = ['id', 'url', 'name', 'slug']
- class NestedRackSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rack-detail')
- class Meta:
- model = Rack
- fields = ['id', 'url', 'name', 'display_name']
- #
- # Device types
- #
- class NestedManufacturerSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:manufacturer-detail')
- class Meta:
- model = Manufacturer
- fields = ['id', 'url', 'name', 'slug']
- class NestedDeviceTypeSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:devicetype-detail')
- manufacturer = NestedManufacturerSerializer(read_only=True)
- class Meta:
- model = DeviceType
- fields = ['id', 'url', 'manufacturer', 'model', 'slug']
- class NestedRearPortTemplateSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rearporttemplate-detail')
- class Meta:
- model = RearPortTemplate
- fields = ['id', 'url', 'name']
- class NestedFrontPortTemplateSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:frontporttemplate-detail')
- class Meta:
- model = FrontPortTemplate
- fields = ['id', 'url', 'name']
- #
- # Devices
- #
- class NestedDeviceRoleSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:devicerole-detail')
- class Meta:
- model = DeviceRole
- fields = ['id', 'url', 'name', 'slug']
- class NestedPlatformSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:platform-detail')
- class Meta:
- model = Platform
- fields = ['id', 'url', 'name', 'slug']
- class NestedDeviceSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:device-detail')
- class Meta:
- model = Device
- fields = ['id', 'url', 'name', 'display_name']
- class NestedConsoleServerPortSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:consoleserverport-detail')
- device = NestedDeviceSerializer(read_only=True)
- connection_status = ChoiceField(choices=CONNECTION_STATUS_CHOICES, read_only=True)
- class Meta:
- model = ConsoleServerPort
- fields = ['id', 'url', 'device', 'name', 'cable', 'connection_status']
- class NestedConsolePortSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:consoleport-detail')
- device = NestedDeviceSerializer(read_only=True)
- connection_status = ChoiceField(choices=CONNECTION_STATUS_CHOICES, read_only=True)
- class Meta:
- model = ConsolePort
- fields = ['id', 'url', 'device', 'name', 'cable', 'connection_status']
- class NestedPowerOutletSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:poweroutlet-detail')
- device = NestedDeviceSerializer(read_only=True)
- connection_status = ChoiceField(choices=CONNECTION_STATUS_CHOICES, read_only=True)
- class Meta:
- model = PowerOutlet
- fields = ['id', 'url', 'device', 'name', 'cable', 'connection_status']
- class NestedPowerPortSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:powerport-detail')
- device = NestedDeviceSerializer(read_only=True)
- connection_status = ChoiceField(choices=CONNECTION_STATUS_CHOICES, read_only=True)
- class Meta:
- model = PowerPort
- fields = ['id', 'url', 'device', 'name', 'cable', 'connection_status']
- class NestedInterfaceSerializer(WritableNestedSerializer):
- device = NestedDeviceSerializer(read_only=True)
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:interface-detail')
- connection_status = ChoiceField(choices=CONNECTION_STATUS_CHOICES, read_only=True)
- class Meta:
- model = Interface
- fields = ['id', 'url', 'device', 'name', 'cable', 'connection_status']
- class NestedRearPortSerializer(WritableNestedSerializer):
- device = NestedDeviceSerializer(read_only=True)
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rearport-detail')
- class Meta:
- model = RearPort
- fields = ['id', 'url', 'device', 'name', 'cable']
- class NestedFrontPortSerializer(WritableNestedSerializer):
- device = NestedDeviceSerializer(read_only=True)
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:frontport-detail')
- class Meta:
- model = FrontPort
- fields = ['id', 'url', 'device', 'name', 'cable']
- class NestedDeviceBaySerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rearport-detail')
- device = NestedDeviceSerializer(read_only=True)
- class Meta:
- model = DeviceBay
- fields = ['id', 'url', 'device', 'name']
- #
- # Cables
- #
- class NestedCableSerializer(serializers.ModelSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:cable-detail')
- class Meta:
- model = Cable
- fields = ['id', 'url', 'label']
- #
- # Virtual chassis
- #
- class NestedVirtualChassisSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:virtualchassis-detail')
- master = NestedDeviceSerializer()
- class Meta:
- model = VirtualChassis
- fields = ['id', 'url', 'master']
|