Add web auth, infinite-scroll, agent admission and review fixes across agent/server/web
This commit is contained in:
@@ -7,8 +7,10 @@ from fastapi import APIRouter, Depends, HTTPException, Query, status
|
||||
from sqlalchemy import and_, or_, select
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from .. import metrics
|
||||
from ..agent_auth import AgentCredential, get_agent_credential
|
||||
from ..db import get_session
|
||||
from ..logging_config import get_logger
|
||||
from ..models import Event
|
||||
from ..schemas import (
|
||||
ID_PATTERN,
|
||||
@@ -22,6 +24,8 @@ from ..timeutil import to_utc
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
log = get_logger("monlet.events")
|
||||
|
||||
|
||||
def _encode_cursor(received_at: datetime, event_id) -> str:
|
||||
raw = f"{to_utc(received_at).isoformat()}|{event_id}".encode()
|
||||
@@ -52,12 +56,24 @@ async def events(
|
||||
) -> EventBatchAcceptedResponse:
|
||||
agent = await accepted_agent_for_key(session, credential)
|
||||
if agent is None:
|
||||
await session.commit()
|
||||
return EventBatchAcceptedResponse(accepted=0, deduplicated=0)
|
||||
raise HTTPException(status_code=403, detail="agent not accepted")
|
||||
accepted = 0
|
||||
deduplicated = 0
|
||||
for ev in body.events:
|
||||
ok = await ingest_event(session, agent.agent_id, ev)
|
||||
try:
|
||||
async with session.begin_nested():
|
||||
ok = await ingest_event(session, agent.agent_id, ev)
|
||||
except HTTPException as exc:
|
||||
if exc.status_code != 400:
|
||||
raise
|
||||
log.warning(
|
||||
"event_rejected",
|
||||
check_id=ev.check_id,
|
||||
agent_id=agent.agent_id,
|
||||
code=exc.detail,
|
||||
)
|
||||
metrics.events_total.labels(result="rejected").inc()
|
||||
continue
|
||||
if ok:
|
||||
accepted += 1
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user