97 lines
2.0 KiB
Python
97 lines
2.0 KiB
Python
"""Models for the Proxmox compute façade."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from pydantic import ConfigDict, Field
|
|
|
|
from .common import ConduitModel
|
|
|
|
|
|
class _AllowExtra(ConduitModel):
|
|
"""Mixin that allows unknown fields to be forwarded to the API."""
|
|
|
|
model_config = ConfigDict(
|
|
populate_by_name=True,
|
|
str_strip_whitespace=True,
|
|
extra="allow",
|
|
)
|
|
|
|
|
|
class ComputeTicketRequest(ConduitModel):
|
|
"""Body for POST /compute/auth/ticket."""
|
|
|
|
username: str
|
|
password: str
|
|
|
|
|
|
class ComputeTicketResponse(ConduitModel):
|
|
"""Response from POST /compute/auth/ticket."""
|
|
|
|
ticket: str
|
|
csrfpreventiontoken: str = Field(..., alias="CSRFPreventionToken")
|
|
username: str
|
|
|
|
|
|
class TaskResponse(ConduitModel):
|
|
"""Response from async compute actions."""
|
|
|
|
task: str
|
|
|
|
|
|
class CreateVmRequest(_AllowExtra):
|
|
"""Body for POST /compute/vms."""
|
|
|
|
node: str
|
|
vmid: int | None = None
|
|
|
|
|
|
class CreateContainerRequest(_AllowExtra):
|
|
"""Body for POST /compute/containers."""
|
|
|
|
node: str
|
|
ostemplate: str
|
|
vmid: int | None = None
|
|
|
|
|
|
class CloneVmRequest(ConduitModel):
|
|
"""Body for POST /compute/vms/{vmid}/clone."""
|
|
|
|
newid: int
|
|
name: str | None = None
|
|
full: bool | None = None
|
|
target: str | None = None
|
|
|
|
|
|
class MigrateVmRequest(ConduitModel):
|
|
"""Body for POST /compute/vms/{vmid}/migrate."""
|
|
|
|
target: str
|
|
online: bool | None = None
|
|
|
|
|
|
class CreateSnapshotRequest(ConduitModel):
|
|
"""Body for POST /compute/vms/{vmid}/snapshots."""
|
|
|
|
snapname: str
|
|
vmstate: bool | None = None
|
|
description: str | None = None
|
|
|
|
|
|
class UploadStorageRequest(ConduitModel):
|
|
"""Body for POST /compute/storage/{storage}/upload."""
|
|
|
|
content: str
|
|
filename: str
|
|
|
|
|
|
class NodeTasksQuery(ConduitModel):
|
|
"""Query parameters for GET /compute/nodes/{node}/tasks."""
|
|
|
|
limit: int | None = None
|
|
|
|
|
|
class StorageQuery(ConduitModel):
|
|
"""Query parameters for storage listing endpoints."""
|
|
|
|
node: str | None = None
|