47 lines
1.1 KiB
Python
47 lines
1.1 KiB
Python
from datetime import datetime
|
|
from typing import Literal
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
JobState = Literal["accepted", "busy", "running", "completed", "failed", "cancelled"]
|
|
|
|
|
|
class JobRequest(BaseModel):
|
|
url: str
|
|
requester_id: str | None = None
|
|
requester_name: str | None = None
|
|
origin: str | None = None
|
|
requested_at: datetime | None = None
|
|
|
|
|
|
class JobStatus(BaseModel):
|
|
job_id: str
|
|
state: JobState
|
|
url: str
|
|
message: str | None = None
|
|
phase: str | None = None
|
|
disposition: str | None = None
|
|
requester_id: str | None = None
|
|
requester_name: str | None = None
|
|
origin: str | None = None
|
|
result_path: str | None = None
|
|
command: list[str] = Field(default_factory=list)
|
|
returncode: int | None = None
|
|
created_at: datetime = Field(default_factory=datetime.utcnow)
|
|
updated_at: datetime = Field(default_factory=datetime.utcnow)
|
|
|
|
|
|
class CurrentJobResponse(BaseModel):
|
|
active: bool
|
|
job: JobStatus | None = None
|
|
|
|
|
|
class HealthResponse(BaseModel):
|
|
status: Literal["ok"]
|
|
|
|
|
|
class VersionResponse(BaseModel):
|
|
version: str
|
|
active_job: bool
|