Update README.md

This commit is contained in:
2025-02-26 15:25:39 +07:00
parent d6acf632e3
commit baf1723a50
69 changed files with 5525 additions and 0 deletions

80
app/schemas/job.py Normal file
View 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"