refactor: replace monitor heartbeat-v2 with heartbeat
This commit is contained in:
@@ -175,43 +175,6 @@ def revoke_api_key(server_id: int, db: Session = Depends(get_db), _: models.User
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
class ServerHeartbeat(BaseModel):
|
|
||||||
identifier: str
|
|
||||||
openclaw_version: str | None = None
|
|
||||||
plugin_version: str | None = None
|
|
||||||
agents: List[dict] = []
|
|
||||||
nginx_installed: bool | None = None
|
|
||||||
nginx_sites: List[str] = []
|
|
||||||
cpu_pct: float | None = None
|
|
||||||
mem_pct: float | None = None
|
|
||||||
disk_pct: float | None = None
|
|
||||||
swap_pct: float | None = None
|
|
||||||
|
|
||||||
|
|
||||||
@router.post('/server/heartbeat')
|
|
||||||
def server_heartbeat(payload: ServerHeartbeat, db: Session = Depends(get_db)):
|
|
||||||
server = db.query(MonitoredServer).filter(MonitoredServer.identifier == payload.identifier, MonitoredServer.is_enabled == True).first()
|
|
||||||
if not server:
|
|
||||||
raise HTTPException(status_code=404, detail='unknown server identifier')
|
|
||||||
st = db.query(ServerState).filter(ServerState.server_id == server.id).first()
|
|
||||||
if not st:
|
|
||||||
st = ServerState(server_id=server.id)
|
|
||||||
db.add(st)
|
|
||||||
st.openclaw_version = payload.openclaw_version
|
|
||||||
st.plugin_version = payload.plugin_version
|
|
||||||
st.agents_json = json.dumps(payload.agents, ensure_ascii=False)
|
|
||||||
st.nginx_installed = payload.nginx_installed
|
|
||||||
st.nginx_sites_json = json.dumps(payload.nginx_sites, ensure_ascii=False)
|
|
||||||
st.cpu_pct = payload.cpu_pct
|
|
||||||
st.mem_pct = payload.mem_pct
|
|
||||||
st.disk_pct = payload.disk_pct
|
|
||||||
st.swap_pct = payload.swap_pct
|
|
||||||
st.last_seen_at = datetime.now(timezone.utc)
|
|
||||||
db.commit()
|
|
||||||
return {'ok': True, 'server_id': server.id, 'last_seen_at': st.last_seen_at}
|
|
||||||
|
|
||||||
|
|
||||||
# Heartbeat v2 with API Key authentication
|
|
||||||
class TelemetryPayload(BaseModel):
|
class TelemetryPayload(BaseModel):
|
||||||
identifier: str
|
identifier: str
|
||||||
openclaw_version: str | None = None
|
openclaw_version: str | None = None
|
||||||
@@ -227,13 +190,13 @@ class TelemetryPayload(BaseModel):
|
|||||||
uptime_seconds: int | None = None
|
uptime_seconds: int | None = None
|
||||||
|
|
||||||
|
|
||||||
@router.post('/server/heartbeat-v2')
|
@router.post('/server/heartbeat')
|
||||||
def server_heartbeat_v2(
|
def server_heartbeat(
|
||||||
payload: TelemetryPayload,
|
payload: TelemetryPayload,
|
||||||
x_api_key: str = Header(..., alias='X-API-Key', description='API Key from /admin/servers/{id}/api-key'),
|
x_api_key: str = Header(..., alias='X-API-Key', description='API Key from /admin/servers/{id}/api-key'),
|
||||||
db: Session = Depends(get_db)
|
db: Session = Depends(get_db)
|
||||||
):
|
):
|
||||||
"""Server heartbeat using API Key authentication (no challenge_uuid required)"""
|
"""Server heartbeat using API Key authentication."""
|
||||||
server = db.query(MonitoredServer).filter(
|
server = db.query(MonitoredServer).filter(
|
||||||
MonitoredServer.api_key == x_api_key,
|
MonitoredServer.api_key == x_api_key,
|
||||||
MonitoredServer.is_enabled == True
|
MonitoredServer.is_enabled == True
|
||||||
@@ -256,4 +219,3 @@ def server_heartbeat_v2(
|
|||||||
st.last_seen_at = datetime.now(timezone.utc)
|
st.last_seen_at = datetime.now(timezone.utc)
|
||||||
db.commit()
|
db.commit()
|
||||||
return {'ok': True, 'server_id': server.id, 'identifier': server.identifier, 'last_seen_at': st.last_seen_at}
|
return {'ok': True, 'server_id': server.id, 'identifier': server.identifier, 'last_seen_at': st.last_seen_at}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user