services.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. from dcim.api.serializers_.devices import DeviceSerializer
  2. from ipam.choices import *
  3. from ipam.models import IPAddress, Service, ServiceTemplate
  4. from netbox.api.fields import ChoiceField, SerializedPKRelatedField
  5. from netbox.api.serializers import NetBoxModelSerializer
  6. from virtualization.api.serializers_.virtualmachines import VirtualMachineSerializer
  7. from .ip import IPAddressSerializer
  8. __all__ = (
  9. 'ServiceSerializer',
  10. 'ServiceTemplateSerializer',
  11. )
  12. class ServiceTemplateSerializer(NetBoxModelSerializer):
  13. protocol = ChoiceField(choices=ServiceProtocolChoices, required=False)
  14. class Meta:
  15. model = ServiceTemplate
  16. fields = [
  17. 'id', 'url', 'display_url', 'display', 'name', 'protocol', 'ports', 'description', 'comments', 'tags',
  18. 'custom_fields', 'created', 'last_updated',
  19. ]
  20. brief_fields = ('id', 'url', 'display', 'name', 'protocol', 'ports', 'description')
  21. class ServiceSerializer(NetBoxModelSerializer):
  22. device = DeviceSerializer(nested=True, required=False, allow_null=True)
  23. virtual_machine = VirtualMachineSerializer(nested=True, required=False, allow_null=True)
  24. protocol = ChoiceField(choices=ServiceProtocolChoices, required=False)
  25. ipaddresses = SerializedPKRelatedField(
  26. queryset=IPAddress.objects.all(),
  27. serializer=IPAddressSerializer,
  28. nested=True,
  29. required=False,
  30. many=True
  31. )
  32. class Meta:
  33. model = Service
  34. fields = [
  35. 'id', 'url', 'display_url', 'display', 'device', 'virtual_machine', 'name', 'protocol', 'ports',
  36. 'ipaddresses', 'description', 'comments', 'tags', 'custom_fields', 'created', 'last_updated',
  37. ]
  38. brief_fields = ('id', 'url', 'display', 'name', 'protocol', 'ports', 'description')