Coverage for dcim/api/serializers_/cooling.py: 100%
30 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 18:35 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 18:35 +0000
1from dcim.choices import *
2from dcim.models import CoolingFeed, CoolingSource
3from netbox.api.fields import ChoiceField, RelatedObjectCountField
4from netbox.api.serializers import PrimaryModelSerializer
5from netbox.choices import FlowRateUnitChoices
6from tenancy.api.serializers_.tenants import TenantSerializer
8from .racks import RackSerializer
9from .sites import LocationSerializer, SiteSerializer
11__all__ = (
12 'CoolingFeedSerializer',
13 'CoolingSourceSerializer',
14)
17class CoolingSourceSerializer(PrimaryModelSerializer):
18 site = SiteSerializer(nested=True)
19 location = LocationSerializer(
20 nested=True,
21 required=False,
22 allow_null=True,
23 default=None
24 )
25 type = ChoiceField(
26 choices=CoolingSourceTypeChoices
27 )
28 status = ChoiceField(
29 choices=CoolingSourceStatusChoices,
30 default=lambda: CoolingSourceStatusChoices.STATUS_ACTIVE,
31 )
32 fluid_type = ChoiceField(
33 choices=FluidTypeChoices,
34 allow_blank=True,
35 required=False,
36 allow_null=True
37 )
39 # Related object counts
40 coolingfeed_count = RelatedObjectCountField('cooling_feeds')
42 class Meta:
43 model = CoolingSource
44 fields = [
45 'id', 'url', 'display_url', 'display', 'site', 'location', 'name', 'type', 'status', 'fluid_type',
46 'cooling_capacity', 'description', 'owner', 'comments', 'tags',
47 'custom_fields', 'coolingfeed_count', 'created', 'last_updated',
48 ]
49 brief_fields = ('id', 'url', 'display', 'name', 'description', 'coolingfeed_count')
52class CoolingFeedSerializer(PrimaryModelSerializer):
53 cooling_source = CoolingSourceSerializer(nested=True)
54 rack = RackSerializer(
55 nested=True,
56 required=False,
57 allow_null=True,
58 default=None
59 )
60 status = ChoiceField(
61 choices=CoolingFeedStatusChoices,
62 default=lambda: CoolingFeedStatusChoices.STATUS_ACTIVE,
63 )
64 max_flow_unit = ChoiceField(
65 choices=FlowRateUnitChoices,
66 allow_blank=True,
67 required=False,
68 allow_null=True
69 )
70 tenant = TenantSerializer(
71 nested=True,
72 required=False,
73 allow_null=True
74 )
76 class Meta:
77 model = CoolingFeed
78 fields = [
79 'id', 'url', 'display_url', 'display', 'cooling_source', 'rack', 'name', 'status',
80 'cooling_capacity', 'max_flow', 'max_flow_unit', 'description', 'tenant',
81 'owner', 'comments', 'tags', 'custom_fields', 'created', 'last_updated',
82 ]
83 brief_fields = ('id', 'url', 'display', 'name', 'description')