Update README.md
This commit is contained in:
80
app/schemas/job.py
Normal file
80
app/schemas/job.py
Normal file
@ -0,0 +1,80 @@
|
||||
from pydantic import BaseModel, Field
|
||||
from typing import Dict, Any, List, Optional
|
||||
|
||||
|
||||
class JobSpecification(BaseModel):
|
||||
"""
|
||||
Nomad job specification. This is a simplified schema as the actual
|
||||
Nomad job spec is quite complex and varies by job type.
|
||||
"""
|
||||
id: Optional[str] = Field(None, description="Job ID")
|
||||
ID: Optional[str] = Field(None, description="Job ID (Nomad format)")
|
||||
name: Optional[str] = Field(None, description="Job name")
|
||||
Name: Optional[str] = Field(None, description="Job name (Nomad format)")
|
||||
type: Optional[str] = Field(None, description="Job type (service, batch, system)")
|
||||
Type: Optional[str] = Field(None, description="Job type (Nomad format)")
|
||||
datacenters: Optional[List[str]] = Field(None, description="List of datacenters")
|
||||
Datacenters: Optional[List[str]] = Field(None, description="List of datacenters (Nomad format)")
|
||||
task_groups: Optional[List[Dict[str, Any]]] = Field(None, description="Task groups")
|
||||
TaskGroups: Optional[List[Dict[str, Any]]] = Field(None, description="Task groups (Nomad format)")
|
||||
meta: Optional[Dict[str, str]] = Field(None, description="Job metadata")
|
||||
Meta: Optional[Dict[str, str]] = Field(None, description="Job metadata (Nomad format)")
|
||||
|
||||
# Allow additional fields (to handle the complete Nomad job spec)
|
||||
class Config:
|
||||
extra = "allow"
|
||||
|
||||
|
||||
class JobOperation(BaseModel):
|
||||
"""Response after a job operation (start, stop, etc.)"""
|
||||
job_id: str = Field(..., description="The ID of the job")
|
||||
eval_id: Optional[str] = Field(None, description="The evaluation ID")
|
||||
status: str = Field(..., description="The status of the operation")
|
||||
warnings: Optional[str] = Field(None, description="Any warnings from Nomad")
|
||||
|
||||
|
||||
class JobResponse(BaseModel):
|
||||
"""
|
||||
Job response schema. This is a simplified version as the actual
|
||||
Nomad job response is quite complex and varies by job type.
|
||||
"""
|
||||
ID: str = Field(..., description="Job ID")
|
||||
Name: str = Field(..., description="Job name")
|
||||
Status: str = Field(..., description="Job status")
|
||||
Type: str = Field(..., description="Job type")
|
||||
repository: Optional[str] = Field(None, description="Associated repository if any")
|
||||
|
||||
# Allow additional fields (to handle the complete Nomad job response)
|
||||
class Config:
|
||||
extra = "allow"
|
||||
|
||||
|
||||
class TaskGroup(BaseModel):
|
||||
"""Task group schema."""
|
||||
Name: str
|
||||
Count: int
|
||||
Tasks: List[Dict[str, Any]]
|
||||
|
||||
class Config:
|
||||
extra = "allow"
|
||||
|
||||
|
||||
class Task(BaseModel):
|
||||
"""Task schema."""
|
||||
Name: str
|
||||
Driver: str
|
||||
Config: Dict[str, Any]
|
||||
|
||||
class Config:
|
||||
extra = "allow"
|
||||
|
||||
|
||||
class Allocation(BaseModel):
|
||||
"""Allocation schema."""
|
||||
ID: str
|
||||
JobID: str
|
||||
TaskGroup: str
|
||||
ClientStatus: str
|
||||
|
||||
class Config:
|
||||
extra = "allow"
|
Reference in New Issue
Block a user