old_console/devices/serializers/sensor_serializers.py
2024-11-02 14:12:45 +03:00

48 lines
1.7 KiB
Python

import logging
from rest_framework import serializers
from rest_framework.exceptions import ValidationError
from core.validators import ValidateFileExtension
from devices.fields import DeviceGroupRelatedField
from devices.models.device import DeviceGroup
from devices.models.sensor import ArmaSensor
from devices.services.sensor.service import SensorService
_log = logging.getLogger(__name__)
class CreateSensorSerializer(serializers.ModelSerializer):
class Meta:
model = ArmaSensor
fields = ['name', 'ip', 'port']
class SensorSerializer(serializers.ModelSerializer):
group = DeviceGroupRelatedField(queryset=DeviceGroup.objects.all(), default=None, allow_null=True)
status = serializers.SerializerMethodField()
class Meta:
model = ArmaSensor
fields = '__all__'
def get_status(self, endpoint: ArmaSensor) -> dict:
return SensorService(endpoint).get_status()
def validate_span_interface(self, span_interface):
actually_interfaces = SensorService(sensor=self.instance).get_interfaces()
interfaces_names = [interface['interface'] for interface in actually_interfaces['data']]
if span_interface in interfaces_names:
return span_interface
raise ValidationError('select actually span interface')
class ZeekProtocolsDisableSerializer(serializers.Serializer):
"""Serializer validate upload protocol list."""
disable_protocols = serializers.ListField(child=serializers.CharField(), default=[])
class ZeekSettingsUpdateSerializer(serializers.Serializer):
"""Serializer validate upload local.zeek file."""
file = serializers.FileField(validators=[ValidateFileExtension(allowed_extensions=[".zeek"])])