| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364 |
- from rest_framework import serializers
- from dcim import models
- from netbox.api.serializers import BaseModelSerializer, WritableNestedSerializer
- __all__ = [
- 'NestedCableSerializer',
- 'NestedConsolePortSerializer',
- 'NestedConsolePortTemplateSerializer',
- 'NestedConsoleServerPortSerializer',
- 'NestedConsoleServerPortTemplateSerializer',
- 'NestedDeviceBaySerializer',
- 'NestedDeviceBayTemplateSerializer',
- 'NestedDeviceRoleSerializer',
- 'NestedDeviceSerializer',
- 'NestedDeviceTypeSerializer',
- 'NestedFrontPortSerializer',
- 'NestedFrontPortTemplateSerializer',
- 'NestedInterfaceSerializer',
- 'NestedInterfaceTemplateSerializer',
- 'NestedInventoryItemSerializer',
- 'NestedManufacturerSerializer',
- 'NestedPlatformSerializer',
- 'NestedPowerFeedSerializer',
- 'NestedPowerOutletSerializer',
- 'NestedPowerOutletTemplateSerializer',
- 'NestedPowerPanelSerializer',
- 'NestedPowerPortSerializer',
- 'NestedPowerPortTemplateSerializer',
- 'NestedLocationSerializer',
- 'NestedRackReservationSerializer',
- 'NestedRackRoleSerializer',
- 'NestedRackSerializer',
- 'NestedRearPortSerializer',
- 'NestedRearPortTemplateSerializer',
- 'NestedRegionSerializer',
- 'NestedSiteSerializer',
- 'NestedSiteGroupSerializer',
- 'NestedVirtualChassisSerializer',
- ]
- #
- # Regions/sites
- #
- class NestedRegionSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:region-detail')
- site_count = serializers.IntegerField(read_only=True)
- _depth = serializers.IntegerField(source='level', read_only=True)
- class Meta:
- model = models.Region
- fields = ['id', 'url', 'display', 'name', 'slug', 'site_count', '_depth']
- class NestedSiteGroupSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:sitegroup-detail')
- site_count = serializers.IntegerField(read_only=True)
- _depth = serializers.IntegerField(source='level', read_only=True)
- class Meta:
- model = models.SiteGroup
- fields = ['id', 'url', 'display', 'name', 'slug', 'site_count', '_depth']
- class NestedSiteSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:site-detail')
- class Meta:
- model = models.Site
- fields = ['id', 'url', 'display', 'name', 'slug']
- #
- # Racks
- #
- class NestedLocationSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:location-detail')
- rack_count = serializers.IntegerField(read_only=True)
- _depth = serializers.IntegerField(source='level', read_only=True)
- class Meta:
- model = models.Location
- fields = ['id', 'url', 'display', 'name', 'slug', 'rack_count', '_depth']
- class NestedRackRoleSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rackrole-detail')
- rack_count = serializers.IntegerField(read_only=True)
- class Meta:
- model = models.RackRole
- fields = ['id', 'url', 'display', 'name', 'slug', 'rack_count']
- class NestedRackSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rack-detail')
- device_count = serializers.IntegerField(read_only=True)
- class Meta:
- model = models.Rack
- fields = ['id', 'url', 'display', 'name', 'device_count']
- class NestedRackReservationSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rackreservation-detail')
- user = serializers.SerializerMethodField(read_only=True)
- class Meta:
- model = models.RackReservation
- fields = ['id', 'url', 'display', 'user', 'units']
- def get_user(self, obj):
- return obj.user.username
- #
- # Device types
- #
- class NestedManufacturerSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:manufacturer-detail')
- devicetype_count = serializers.IntegerField(read_only=True)
- class Meta:
- model = models.Manufacturer
- fields = ['id', 'url', 'display', 'name', 'slug', 'devicetype_count']
- class NestedDeviceTypeSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:devicetype-detail')
- manufacturer = NestedManufacturerSerializer(read_only=True)
- device_count = serializers.IntegerField(read_only=True)
- class Meta:
- model = models.DeviceType
- fields = ['id', 'url', 'display', 'manufacturer', 'model', 'slug', 'device_count']
- class NestedConsolePortTemplateSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:consoleporttemplate-detail')
- class Meta:
- model = models.ConsolePortTemplate
- fields = ['id', 'url', 'display', 'name']
- class NestedConsoleServerPortTemplateSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:consoleserverporttemplate-detail')
- class Meta:
- model = models.ConsoleServerPortTemplate
- fields = ['id', 'url', 'display', 'name']
- class NestedPowerPortTemplateSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:powerporttemplate-detail')
- class Meta:
- model = models.PowerPortTemplate
- fields = ['id', 'url', 'display', 'name']
- class NestedPowerOutletTemplateSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:poweroutlettemplate-detail')
- class Meta:
- model = models.PowerOutletTemplate
- fields = ['id', 'url', 'display', 'name']
- class NestedInterfaceTemplateSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:interfacetemplate-detail')
- class Meta:
- model = models.InterfaceTemplate
- fields = ['id', 'url', 'display', 'name']
- class NestedRearPortTemplateSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rearporttemplate-detail')
- class Meta:
- model = models.RearPortTemplate
- fields = ['id', 'url', 'display', 'name']
- class NestedFrontPortTemplateSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:frontporttemplate-detail')
- class Meta:
- model = models.FrontPortTemplate
- fields = ['id', 'url', 'display', 'name']
- class NestedDeviceBayTemplateSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:devicebaytemplate-detail')
- class Meta:
- model = models.DeviceBayTemplate
- fields = ['id', 'url', 'display', 'name']
- #
- # Devices
- #
- class NestedDeviceRoleSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:devicerole-detail')
- device_count = serializers.IntegerField(read_only=True)
- virtualmachine_count = serializers.IntegerField(read_only=True)
- class Meta:
- model = models.DeviceRole
- fields = ['id', 'url', 'display', 'name', 'slug', 'device_count', 'virtualmachine_count']
- class NestedPlatformSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:platform-detail')
- device_count = serializers.IntegerField(read_only=True)
- virtualmachine_count = serializers.IntegerField(read_only=True)
- class Meta:
- model = models.Platform
- fields = ['id', 'url', 'display', 'name', 'slug', 'device_count', 'virtualmachine_count']
- class NestedDeviceSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:device-detail')
- class Meta:
- model = models.Device
- fields = ['id', 'url', 'display', 'name']
- class NestedConsoleServerPortSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:consoleserverport-detail')
- device = NestedDeviceSerializer(read_only=True)
- class Meta:
- model = models.ConsoleServerPort
- fields = ['id', 'url', 'display', 'device', 'name', 'cable', '_occupied']
- class NestedConsolePortSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:consoleport-detail')
- device = NestedDeviceSerializer(read_only=True)
- class Meta:
- model = models.ConsolePort
- fields = ['id', 'url', 'display', 'device', 'name', 'cable', '_occupied']
- class NestedPowerOutletSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:poweroutlet-detail')
- device = NestedDeviceSerializer(read_only=True)
- class Meta:
- model = models.PowerOutlet
- fields = ['id', 'url', 'display', 'device', 'name', 'cable', '_occupied']
- class NestedPowerPortSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:powerport-detail')
- device = NestedDeviceSerializer(read_only=True)
- class Meta:
- model = models.PowerPort
- fields = ['id', 'url', 'display', 'device', 'name', 'cable', '_occupied']
- class NestedInterfaceSerializer(WritableNestedSerializer):
- device = NestedDeviceSerializer(read_only=True)
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:interface-detail')
- class Meta:
- model = models.Interface
- fields = ['id', 'url', 'display', 'device', 'name', 'cable', '_occupied']
- class NestedRearPortSerializer(WritableNestedSerializer):
- device = NestedDeviceSerializer(read_only=True)
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rearport-detail')
- class Meta:
- model = models.RearPort
- fields = ['id', 'url', 'display', 'device', 'name', 'cable', '_occupied']
- class NestedFrontPortSerializer(WritableNestedSerializer):
- device = NestedDeviceSerializer(read_only=True)
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:frontport-detail')
- class Meta:
- model = models.FrontPort
- fields = ['id', 'url', 'display', 'device', 'name', 'cable', '_occupied']
- class NestedDeviceBaySerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:devicebay-detail')
- device = NestedDeviceSerializer(read_only=True)
- class Meta:
- model = models.DeviceBay
- fields = ['id', 'url', 'display', 'device', 'name']
- class NestedInventoryItemSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:inventoryitem-detail')
- device = NestedDeviceSerializer(read_only=True)
- _depth = serializers.IntegerField(source='level', read_only=True)
- class Meta:
- model = models.InventoryItem
- fields = ['id', 'url', 'display', 'device', 'name', '_depth']
- #
- # Cables
- #
- class NestedCableSerializer(BaseModelSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:cable-detail')
- class Meta:
- model = models.Cable
- fields = ['id', 'url', 'display', 'label']
- #
- # Virtual chassis
- #
- class NestedVirtualChassisSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:virtualchassis-detail')
- master = NestedDeviceSerializer()
- member_count = serializers.IntegerField(read_only=True)
- class Meta:
- model = models.VirtualChassis
- fields = ['id', 'url', 'display', 'name', 'master', 'member_count']
- #
- # Power panels/feeds
- #
- class NestedPowerPanelSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:powerpanel-detail')
- powerfeed_count = serializers.IntegerField(read_only=True)
- class Meta:
- model = models.PowerPanel
- fields = ['id', 'url', 'display', 'name', 'powerfeed_count']
- class NestedPowerFeedSerializer(WritableNestedSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='dcim-api:powerfeed-detail')
- class Meta:
- model = models.PowerFeed
- fields = ['id', 'url', 'display', 'name', 'cable', '_occupied']
|