compose-viz/compose_viz/spec/compose_spec.py

621 lines
17 KiB
Python
Raw Normal View History

2024-04-27 10:55:24 +02:00
# generated by datamodel-codegen:
# filename: compose-spec.json
# timestamp: 2024-04-27T08:31:04+00:00
from __future__ import annotations
from enum import Enum
from typing import Any, Dict, List, Optional, Union
from pydantic import BaseModel, ConfigDict, Field, RootModel
class Cgroup(Enum):
host = "host"
private = "private"
class CredentialSpec(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
config: Optional[str] = None
file: Optional[str] = None
registry: Optional[str] = None
class Condition(Enum):
service_started = "service_started"
service_healthy = "service_healthy"
service_completed_successfully = "service_completed_successfully"
class DependsOn(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
restart: Optional[bool] = None
required: Optional[bool] = True
condition: Condition
class Extends(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
service: str
file: Optional[str] = None
class Logging(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
driver: Optional[str] = None
options: Optional[Dict[str, Optional[Union[str, float]]]] = None
class Ports(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
name: Optional[str] = None
mode: Optional[str] = None
host_ip: Optional[str] = None
target: Optional[int] = None
published: Optional[Union[str, int]] = None
protocol: Optional[str] = None
app_protocol: Optional[str] = None
class PullPolicy(Enum):
always = "always"
never = "never"
if_not_present = "if_not_present"
build = "build"
missing = "missing"
class Selinux(Enum):
z = "z"
Z = "Z"
class Bind(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
propagation: Optional[str] = None
create_host_path: Optional[bool] = None
selinux: Optional[Selinux] = None
class AdditionalVolumeOption(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
nocopy: Optional[bool] = None
subpath: Optional[str] = None
class Size(RootModel[int]):
root: int = Field(..., ge=0)
class Tmpfs(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
size: Optional[Union[Size, str]] = None
mode: Optional[float] = None
class Volumes(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
type: str
source: Optional[str] = None
target: Optional[str] = None
read_only: Optional[bool] = None
consistency: Optional[str] = None
bind: Optional[Bind] = None
volume: Optional[AdditionalVolumeOption] = None
tmpfs: Optional[Tmpfs] = None
class Healthcheck(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
disable: Optional[bool] = None
interval: Optional[str] = None
retries: Optional[float] = None
test: Optional[Union[str, List[str]]] = None
timeout: Optional[str] = None
start_period: Optional[str] = None
start_interval: Optional[str] = None
class Action(Enum):
rebuild = "rebuild"
sync = "sync"
sync_restart = "sync+restart"
class WatchItem(BaseModel):
ignore: Optional[List[str]] = None
path: str
action: Action
target: Optional[str] = None
class Development(BaseModel):
watch: Optional[List[WatchItem]] = None
class Order(Enum):
start_first = "start-first"
stop_first = "stop-first"
class RollbackConfig(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
parallelism: Optional[int] = None
delay: Optional[str] = None
failure_action: Optional[str] = None
monitor: Optional[str] = None
max_failure_ratio: Optional[float] = None
order: Optional[Order] = None
class UpdateConfig(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
parallelism: Optional[int] = None
delay: Optional[str] = None
failure_action: Optional[str] = None
monitor: Optional[str] = None
max_failure_ratio: Optional[float] = None
order: Optional[Order] = None
class Limits(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
cpus: Optional[Union[float, str]] = None
memory: Optional[str] = None
pids: Optional[int] = None
class RestartPolicy(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
condition: Optional[str] = None
delay: Optional[str] = None
max_attempts: Optional[int] = None
window: Optional[str] = None
class Preference(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
spread: Optional[str] = None
class Placement(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
constraints: Optional[List[str]] = None
preferences: Optional[List[Preference]] = None
max_replicas_per_node: Optional[int] = None
class DiscreteResourceSpec(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
kind: Optional[str] = None
value: Optional[float] = None
class GenericResource(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
discrete_resource_spec: Optional[DiscreteResourceSpec] = None
class GenericResources(RootModel[List[GenericResource]]):
root: List[GenericResource]
class ConfigItem(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
subnet: Optional[str] = None
ip_range: Optional[str] = None
gateway: Optional[str] = None
aux_addresses: Optional[Dict[str, str]] = None
class Ipam(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
driver: Optional[str] = None
config: Optional[List[ConfigItem]] = None
options: Optional[Dict[str, str]] = None
class ExternalVolumeNetwork(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
name: Optional[str] = None
class ExternalConfig(BaseModel):
name: Optional[str] = None
class Command(RootModel[Optional[Union[str, List[str]]]]):
root: Optional[Union[str, List[str]]]
class EnvFilePath(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
path: str
required: Optional[bool] = True
class EnvFile(RootModel[Union[str, List[Union[str, EnvFilePath]]]]):
root: Union[str, List[Union[str, EnvFilePath]]]
class ListOfStrings(RootModel[List[str]]):
root: List[str]
class ListOrDict1(RootModel[List[Any]]):
root: List[Any]
class ListOrDict(RootModel[Union[Dict[str, Optional[Union[str, float, bool]]], ListOrDict1]]):
root: Union[Dict[str, Optional[Union[str, float, bool]]], ListOrDict1]
class BlkioLimit(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
path: Optional[str] = None
rate: Optional[Union[int, str]] = None
class BlkioWeight(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
path: Optional[str] = None
weight: Optional[int] = None
class ServiceConfigOrSecret1(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
source: Optional[str] = None
target: Optional[str] = None
uid: Optional[str] = None
gid: Optional[str] = None
mode: Optional[float] = None
class ServiceConfigOrSecret(RootModel[List[Union[str, ServiceConfigOrSecret1]]]):
root: List[Union[str, ServiceConfigOrSecret1]]
class Ulimits1(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
hard: int
soft: int
class Ulimits(RootModel[Dict[str, Union[int, Ulimits1]]]):
root: Dict[str, Union[int, Ulimits1]]
class Constraints(RootModel[Any]):
root: Any
class Build(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
context: Optional[str] = None
dockerfile: Optional[str] = None
dockerfile_inline: Optional[str] = None
entitlements: Optional[List[str]] = None
args: Optional[ListOrDict] = None
ssh: Optional[ListOrDict] = None
labels: Optional[ListOrDict] = None
cache_from: Optional[List[str]] = None
cache_to: Optional[List[str]] = None
no_cache: Optional[bool] = None
additional_contexts: Optional[ListOrDict] = None
network: Optional[str] = None
pull: Optional[bool] = None
target: Optional[str] = None
shm_size: Optional[Union[int, str]] = None
extra_hosts: Optional[ListOrDict] = None
isolation: Optional[str] = None
privileged: Optional[bool] = None
secrets: Optional[ServiceConfigOrSecret] = None
tags: Optional[List[str]] = None
ulimits: Optional[Ulimits] = None
platforms: Optional[List[str]] = None
class BlkioConfig(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
device_read_bps: Optional[List[BlkioLimit]] = None
device_read_iops: Optional[List[BlkioLimit]] = None
device_write_bps: Optional[List[BlkioLimit]] = None
device_write_iops: Optional[List[BlkioLimit]] = None
weight: Optional[int] = None
weight_device: Optional[List[BlkioWeight]] = None
class Networks(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
aliases: Optional[ListOfStrings] = None
ipv4_address: Optional[str] = None
ipv6_address: Optional[str] = None
link_local_ips: Optional[ListOfStrings] = None
mac_address: Optional[str] = None
priority: Optional[float] = None
class Device(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
capabilities: Optional[ListOfStrings] = None
count: Optional[Union[str, int]] = None
device_ids: Optional[ListOfStrings] = None
driver: Optional[str] = None
options: Optional[ListOrDict] = None
class Devices(RootModel[List[Device]]):
root: List[Device]
class Network(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
name: Optional[str] = None
driver: Optional[str] = None
driver_opts: Optional[Dict[str, Union[str, float]]] = None
ipam: Optional[Ipam] = None
external: Optional[ExternalVolumeNetwork] = None
internal: Optional[bool] = None
enable_ipv6: Optional[bool] = None
attachable: Optional[bool] = None
labels: Optional[ListOrDict] = None
class Volume(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
name: Optional[str] = None
driver: Optional[str] = None
driver_opts: Optional[Dict[str, Union[str, float]]] = None
external: Optional[ExternalVolumeNetwork] = None
labels: Optional[ListOrDict] = None
class Secret(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
name: Optional[str] = None
environment: Optional[str] = None
file: Optional[str] = None
external: Optional[ExternalConfig] = None
labels: Optional[ListOrDict] = None
driver: Optional[str] = None
driver_opts: Optional[Dict[str, Union[str, float]]] = None
template_driver: Optional[str] = None
class Config(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
name: Optional[str] = None
content: Optional[str] = None
environment: Optional[str] = None
file: Optional[str] = None
external: Optional[ExternalConfig] = None
labels: Optional[ListOrDict] = None
template_driver: Optional[str] = None
class StringOrList(RootModel[Union[str, ListOfStrings]]):
root: Union[str, ListOfStrings]
class Reservations(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
cpus: Optional[Union[float, str]] = None
memory: Optional[str] = None
generic_resources: Optional[GenericResources] = None
devices: Optional[Devices] = None
class Resources(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
limits: Optional[Limits] = None
reservations: Optional[Reservations] = None
class Deployment(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
mode: Optional[str] = None
endpoint_mode: Optional[str] = None
replicas: Optional[int] = None
labels: Optional[ListOrDict] = None
rollback_config: Optional[RollbackConfig] = None
update_config: Optional[UpdateConfig] = None
resources: Optional[Resources] = None
restart_policy: Optional[RestartPolicy] = None
placement: Optional[Placement] = None
class Include1(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
path: Optional[StringOrList] = None
env_file: Optional[StringOrList] = None
project_directory: Optional[str] = None
class Include(RootModel[Union[str, Include1]]):
root: Union[str, Include1]
class Service(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
develop: Optional[Development] = None
deploy: Optional[Deployment] = None
annotations: Optional[ListOrDict] = None
attach: Optional[bool] = None
build: Optional[Union[str, Build]] = None
blkio_config: Optional[BlkioConfig] = None
cap_add: Optional[List[str]] = None
cap_drop: Optional[List[str]] = None
cgroup: Optional[Cgroup] = None
cgroup_parent: Optional[str] = None
command: Optional[Command] = None
configs: Optional[ServiceConfigOrSecret] = None
container_name: Optional[str] = None
cpu_count: Optional[int] = Field(None, ge=0)
cpu_percent: Optional[int] = Field(None, ge=0, le=100)
cpu_shares: Optional[Union[float, str]] = None
cpu_quota: Optional[Union[float, str]] = None
cpu_period: Optional[Union[float, str]] = None
cpu_rt_period: Optional[Union[float, str]] = None
cpu_rt_runtime: Optional[Union[float, str]] = None
cpus: Optional[Union[float, str]] = None
cpuset: Optional[str] = None
credential_spec: Optional[CredentialSpec] = None
depends_on: Optional[Union[ListOfStrings, Dict[str, DependsOn]]] = None
device_cgroup_rules: Optional[ListOfStrings] = None
devices: Optional[List[str]] = None
dns: Optional[StringOrList] = None
dns_opt: Optional[List[str]] = None
dns_search: Optional[StringOrList] = None
domainname: Optional[str] = None
entrypoint: Optional[Command] = None
env_file: Optional[EnvFile] = None
environment: Optional[ListOrDict] = None
expose: Optional[List[Union[str, float]]] = None
extends: Optional[Union[str, Extends]] = None
external_links: Optional[List[str]] = None
extra_hosts: Optional[ListOrDict] = None
group_add: Optional[List[Union[str, float]]] = None
healthcheck: Optional[Healthcheck] = None
hostname: Optional[str] = None
image: Optional[str] = None
init: Optional[bool] = None
ipc: Optional[str] = None
isolation: Optional[str] = None
labels: Optional[ListOrDict] = None
links: Optional[List[str]] = None
logging: Optional[Logging] = None
mac_address: Optional[str] = None
mem_limit: Optional[Union[float, str]] = None
mem_reservation: Optional[Union[str, int]] = None
mem_swappiness: Optional[int] = None
memswap_limit: Optional[Union[float, str]] = None
network_mode: Optional[str] = None
networks: Optional[Union[ListOfStrings, Dict[str, Optional[Networks]]]] = None
oom_kill_disable: Optional[bool] = None
oom_score_adj: Optional[int] = Field(None, ge=-1000, le=1000)
pid: Optional[str] = None
pids_limit: Optional[Union[float, str]] = None
platform: Optional[str] = None
ports: Optional[List[Union[float, str, Ports]]] = None
privileged: Optional[bool] = None
profiles: Optional[ListOfStrings] = None
pull_policy: Optional[PullPolicy] = None
read_only: Optional[bool] = None
restart: Optional[str] = None
runtime: Optional[str] = None
scale: Optional[int] = None
security_opt: Optional[List[str]] = None
shm_size: Optional[Union[float, str]] = None
secrets: Optional[ServiceConfigOrSecret] = None
sysctls: Optional[ListOrDict] = None
stdin_open: Optional[bool] = None
stop_grace_period: Optional[str] = None
stop_signal: Optional[str] = None
storage_opt: Optional[Dict[str, Any]] = None
tmpfs: Optional[StringOrList] = None
tty: Optional[bool] = None
ulimits: Optional[Ulimits] = None
user: Optional[str] = None
uts: Optional[str] = None
userns_mode: Optional[str] = None
volumes: Optional[List[Union[str, Volumes]]] = None
volumes_from: Optional[List[str]] = None
working_dir: Optional[str] = None
class ComposeSpecification(BaseModel):
model_config = ConfigDict(
extra="forbid",
)
version: Optional[str] = Field(None, description="declared for backward compatibility, ignored.")
name: Optional[str] = Field(
None,
description="define the Compose project name, until user defines one explicitly.",
pattern="^[a-z0-9][a-z0-9_-]*$",
)
include: Optional[List[Include]] = Field(None, description="compose sub-projects to be included.")
services: Optional[Dict[str, Service]] = None
networks: Optional[Dict[str, Optional[Network]]] = None
volumes: Optional[Dict[str, Optional[Volume]]] = None
secrets: Optional[Dict[str, Secret]] = None
configs: Optional[Dict[str, Config]] = None