Files
cheechandcharliesnortan8bal…/src/conduit_client/models/compute.py

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