|
2 | 2 | # Copyright 2024 NetBox Labs Inc
|
3 | 3 | """Diode NetBox Plugin - Serializers."""
|
4 | 4 |
|
5 |
| -import copy |
6 | 5 | import logging
|
7 |
| -from collections import OrderedDict |
8 | 6 |
|
9 | 7 | from dcim.api.serializers import (
|
10 | 8 | DeviceRoleSerializer,
|
|
15 | 13 | PlatformSerializer,
|
16 | 14 | SiteSerializer,
|
17 | 15 | )
|
18 |
| -from django.core.exceptions import FieldDoesNotExist |
19 |
| -from extras.models import ObjectChange |
| 16 | +from django.conf import settings |
| 17 | +from packaging import version |
| 18 | + |
| 19 | +if version.parse(version.parse(settings.VERSION).base_version) >= version.parse("4.1"): |
| 20 | + from core.models import ObjectChange |
| 21 | +else: |
| 22 | + from extras.models import ObjectChange |
20 | 23 | from ipam.api.serializers import IPAddressSerializer, PrefixSerializer
|
21 | 24 | from rest_framework import serializers
|
22 | 25 | from rest_framework.utils.serializer_helpers import ReturnDict
|
23 | 26 | from utilities.api import get_serializer_for_model
|
| 27 | +from virtualization.api.serializers import ( |
| 28 | + ClusterGroupSerializer, |
| 29 | + ClusterSerializer, |
| 30 | + ClusterTypeSerializer, |
| 31 | + VirtualDiskSerializer, |
| 32 | + VirtualMachineSerializer, |
| 33 | + VMInterfaceSerializer, |
| 34 | +) |
24 | 35 |
|
25 | 36 | logger = logging.getLogger("netbox.netbox_diode_plugin.api.serializers")
|
26 | 37 |
|
@@ -254,3 +265,83 @@ class Meta:
|
254 | 265 |
|
255 | 266 | model = PrefixSerializer.Meta.model
|
256 | 267 | fields = PrefixSerializer.Meta.fields
|
| 268 | + |
| 269 | + |
| 270 | +class DiodeClusterGroupSerializer(ClusterGroupSerializer): |
| 271 | + """Diode Cluster Group Serializer.""" |
| 272 | + |
| 273 | + class Meta: |
| 274 | + """Meta class.""" |
| 275 | + |
| 276 | + model = ClusterGroupSerializer.Meta.model |
| 277 | + fields = ClusterGroupSerializer.Meta.fields |
| 278 | + |
| 279 | + |
| 280 | +class DiodeClusterTypeSerializer(ClusterTypeSerializer): |
| 281 | + """Diode Cluster Type Serializer.""" |
| 282 | + |
| 283 | + class Meta: |
| 284 | + """Meta class.""" |
| 285 | + |
| 286 | + model = ClusterTypeSerializer.Meta.model |
| 287 | + fields = ClusterTypeSerializer.Meta.fields |
| 288 | + |
| 289 | + |
| 290 | +class DiodeClusterSerializer(ClusterSerializer): |
| 291 | + """Diode Cluster Serializer.""" |
| 292 | + |
| 293 | + type = DiodeClusterTypeSerializer() |
| 294 | + group = DiodeClusterGroupSerializer() |
| 295 | + status = serializers.CharField() |
| 296 | + site = DiodeSiteSerializer() |
| 297 | + |
| 298 | + class Meta: |
| 299 | + """Meta class.""" |
| 300 | + |
| 301 | + model = ClusterSerializer.Meta.model |
| 302 | + fields = ClusterSerializer.Meta.fields |
| 303 | + |
| 304 | + |
| 305 | +class DiodeVirtualMachineSerializer(VirtualMachineSerializer): |
| 306 | + """Diode Virtual Machine Serializer.""" |
| 307 | + |
| 308 | + status = serializers.CharField() |
| 309 | + site = DiodeSiteSerializer() |
| 310 | + cluster = DiodeClusterSerializer() |
| 311 | + device = DiodeDeviceSerializer() |
| 312 | + role = DiodeDeviceRoleSerializer() |
| 313 | + tenant = serializers.CharField() |
| 314 | + platform = DiodePlatformSerializer() |
| 315 | + primary_ip = DiodeIPAddressSerializer() |
| 316 | + primary_ip4 = DiodeIPAddressSerializer() |
| 317 | + primary_ip6 = DiodeIPAddressSerializer() |
| 318 | + |
| 319 | + class Meta: |
| 320 | + """Meta class.""" |
| 321 | + |
| 322 | + model = VirtualMachineSerializer.Meta.model |
| 323 | + fields = VirtualMachineSerializer.Meta.fields |
| 324 | + |
| 325 | + |
| 326 | +class DiodeVirtualDiskSerializer(VirtualDiskSerializer): |
| 327 | + """Diode Virtual Disk Serializer.""" |
| 328 | + |
| 329 | + virtual_machine = DiodeVirtualMachineSerializer() |
| 330 | + |
| 331 | + class Meta: |
| 332 | + """Meta class.""" |
| 333 | + |
| 334 | + model = VirtualDiskSerializer.Meta.model |
| 335 | + fields = VirtualDiskSerializer.Meta.fields |
| 336 | + |
| 337 | + |
| 338 | +class DiodeVMInterfaceSerializer(VMInterfaceSerializer): |
| 339 | + """Diode VM Interface Serializer.""" |
| 340 | + |
| 341 | + virtual_machine = DiodeVirtualMachineSerializer() |
| 342 | + |
| 343 | + class Meta: |
| 344 | + """Meta class.""" |
| 345 | + |
| 346 | + model = VMInterfaceSerializer.Meta.model |
| 347 | + fields = VMInterfaceSerializer.Meta.fields |
0 commit comments