47 lines
1.0 KiB
Python
47 lines
1.0 KiB
Python
from __future__ import annotations
|
|
|
|
from datetime import datetime
|
|
from typing import Any
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class NormalizedEvent(BaseModel):
|
|
source: str = "zabbix"
|
|
correlation_id: str
|
|
received_at: datetime
|
|
remote_addr: str | None = None
|
|
|
|
event_id: str | None = None
|
|
problem_id: str | None = None
|
|
event_type: str = "problem"
|
|
timestamp: datetime | None = None
|
|
|
|
severity: str | None = None
|
|
severity_code: int | None = None
|
|
|
|
host: str | None = None
|
|
host_id: str | None = None
|
|
service: str | None = None
|
|
|
|
trigger_name: str | None = None
|
|
trigger_id: str | None = None
|
|
item_id: str | None = None
|
|
|
|
value: str | None = None
|
|
opdata: str | None = None
|
|
zabbix_url: str | None = None
|
|
|
|
tags: dict[str, str] = Field(default_factory=dict)
|
|
raw_payload: dict[str, Any]
|
|
|
|
|
|
class ReceiverAck(BaseModel):
|
|
accepted: bool
|
|
correlation_id: str
|
|
forwarded_to_processor: bool
|
|
message: str
|
|
|
|
|
|
class ProcessorForwardEnvelope(BaseModel):
|
|
event: NormalizedEvent |