Improve timestamp handling and event navigation
This commit is contained in:
@@ -5,6 +5,8 @@ from uuid import UUID
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, field_validator
|
||||
|
||||
from .timeutil import require_utc_datetime
|
||||
|
||||
ID_PATTERN = r"^[A-Za-z0-9._:-]+$"
|
||||
UUIDV7_PATTERN = r"^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
|
||||
ID_RE = re.compile(ID_PATTERN)
|
||||
@@ -80,6 +82,11 @@ class HeartbeatRequest(BaseModel):
|
||||
features: AgentFeatures
|
||||
labels: dict[str, str] = Field(default_factory=dict)
|
||||
|
||||
@field_validator("observed_at")
|
||||
@classmethod
|
||||
def _observed_at_must_be_utc(cls, v: datetime) -> datetime:
|
||||
return require_utc_datetime(v)
|
||||
|
||||
@field_validator("labels")
|
||||
@classmethod
|
||||
def _check_labels(cls, v: dict[str, str]) -> dict[str, str]:
|
||||
@@ -109,6 +116,11 @@ class CheckResultEvent(BaseModel):
|
||||
notifications_enabled: bool = True
|
||||
incident_key: str | None = Field(default=None, max_length=256)
|
||||
|
||||
@field_validator("observed_at")
|
||||
@classmethod
|
||||
def _observed_at_must_be_utc(cls, v: datetime) -> datetime:
|
||||
return require_utc_datetime(v)
|
||||
|
||||
@field_validator("output")
|
||||
@classmethod
|
||||
def _check_output_bytes(cls, v: str | None) -> str | None:
|
||||
|
||||
Reference in New Issue
Block a user