| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- from dcim.choices import *
- from dcim.models import PowerFeed, PowerPanel
- from netbox.api.fields import ChoiceField, RelatedObjectCountField
- from netbox.api.serializers import NetBoxModelSerializer
- from tenancy.api.serializers_.tenants import TenantSerializer
- from .base import ConnectedEndpointsSerializer
- from .cables import CabledObjectSerializer
- from .racks import RackSerializer
- from .sites import LocationSerializer, SiteSerializer
- __all__ = (
- 'PowerFeedSerializer',
- 'PowerPanelSerializer',
- )
- class PowerPanelSerializer(NetBoxModelSerializer):
- site = SiteSerializer(nested=True)
- location = LocationSerializer(
- nested=True,
- required=False,
- allow_null=True,
- default=None
- )
- # Related object counts
- powerfeed_count = RelatedObjectCountField('powerfeeds')
- class Meta:
- model = PowerPanel
- fields = [
- 'id', 'url', 'display_url', 'display', 'site', 'location', 'name', 'description', 'comments', 'tags',
- 'custom_fields', 'powerfeed_count', 'created', 'last_updated',
- ]
- brief_fields = ('id', 'url', 'display', 'name', 'description', 'powerfeed_count')
- class PowerFeedSerializer(NetBoxModelSerializer, CabledObjectSerializer, ConnectedEndpointsSerializer):
- power_panel = PowerPanelSerializer(nested=True)
- rack = RackSerializer(
- nested=True,
- required=False,
- allow_null=True,
- default=None
- )
- type = ChoiceField(
- choices=PowerFeedTypeChoices,
- default=lambda: PowerFeedTypeChoices.TYPE_PRIMARY,
- )
- status = ChoiceField(
- choices=PowerFeedStatusChoices,
- default=lambda: PowerFeedStatusChoices.STATUS_ACTIVE,
- )
- supply = ChoiceField(
- choices=PowerFeedSupplyChoices,
- default=lambda: PowerFeedSupplyChoices.SUPPLY_AC,
- )
- phase = ChoiceField(
- choices=PowerFeedPhaseChoices,
- default=lambda: PowerFeedPhaseChoices.PHASE_SINGLE,
- )
- tenant = TenantSerializer(
- nested=True,
- required=False,
- allow_null=True
- )
- class Meta:
- model = PowerFeed
- fields = [
- 'id', 'url', 'display_url', 'display', 'power_panel', 'rack', 'name', 'status', 'type', 'supply',
- 'phase', 'voltage', 'amperage', 'max_utilization', 'mark_connected', 'cable', 'cable_end', 'link_peers',
- 'link_peers_type', 'connected_endpoints', 'connected_endpoints_type', 'connected_endpoints_reachable',
- 'description', 'tenant', 'comments', 'tags', 'custom_fields', 'created', 'last_updated', '_occupied',
- ]
- brief_fields = ('id', 'url', 'display', 'name', 'description', 'cable', '_occupied')
|