compose-viz/compose_viz/spec/compose_spec.py

593 lines
16 KiB
Python
Raw Normal View History

2022-05-27 08:17:04 +02:00
# generated by datamodel-codegen:
# filename: compose-spec.json
# timestamp: 2023-05-03T07:42:00+00:00
2022-05-27 08:17:04 +02:00
from __future__ import annotations
from typing import Any, Dict, List, Optional, Union
from pydantic import Extra, Field, conint, constr
2023-01-10 14:33:08 +01:00
from pydantic_yaml import YamlModel, YamlStrEnum
class Cgroup(YamlStrEnum):
host = "host"
private = "private"
2022-05-27 08:17:04 +02:00
class CredentialSpec(YamlModel):
2022-05-27 08:17:04 +02:00
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
config: Optional[str] = None
file: Optional[str] = None
registry: Optional[str] = None
2023-01-10 14:33:08 +01:00
class Condition(YamlStrEnum):
2022-05-27 08:17:04 +02:00
service_started = "service_started"
service_healthy = "service_healthy"
service_completed_successfully = "service_completed_successfully"
class DependsOn(YamlModel):
2022-05-27 08:17:04 +02:00
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
restart: Optional[bool] = None
2022-05-27 08:17:04 +02:00
condition: Condition
class Extend(YamlModel):
2022-05-27 08:17:04 +02:00
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
service: str
file: Optional[str] = None
class Logging(YamlModel):
2022-05-27 08:17:04 +02:00
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
driver: Optional[str] = None
options: Optional[Dict[constr(regex=r"^.+$"), Optional[Union[str, float]]]] = None # type: ignore # noqa: F722
2022-05-27 08:17:04 +02:00
class Port(YamlModel):
2022-05-27 08:17:04 +02:00
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
mode: Optional[str] = None
host_ip: Optional[str] = None
target: Optional[int] = None
published: Optional[Union[str, int]] = None
protocol: Optional[str] = None
2023-01-10 14:33:08 +01:00
class PullPolicy(YamlStrEnum):
2022-05-27 08:17:04 +02:00
always = "always"
never = "never"
if_not_present = "if_not_present"
build = "build"
missing = "missing"
class Ulimit(YamlModel):
2022-05-27 08:17:04 +02:00
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
hard: int
soft: int
2023-01-10 14:33:08 +01:00
class Selinux(YamlStrEnum):
2022-05-27 08:17:04 +02:00
z = "z"
Z = "Z"
class Bind(YamlModel):
2022-05-27 08:17:04 +02:00
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
propagation: Optional[str] = None
create_host_path: Optional[bool] = None
selinux: Optional[Selinux] = None
class AdditionalVolumeOption(YamlModel):
2022-05-27 08:17:04 +02:00
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
nocopy: Optional[bool] = None
class Tmpfs(YamlModel):
2022-05-27 08:17:04 +02:00
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
size: Optional[Union[conint(ge=0), str]] = None # type: ignore
2022-05-27 08:17:04 +02:00
mode: Optional[float] = None
class ServiceVolume(YamlModel):
2022-05-27 08:17:04 +02:00
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
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(YamlModel):
2022-05-27 08:17:04 +02:00
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
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
2023-01-10 14:33:08 +01:00
class Order(YamlStrEnum):
2022-05-27 08:17:04 +02:00
start_first = "start-first"
stop_first = "stop-first"
class RollbackConfig(YamlModel):
2022-05-27 08:17:04 +02:00
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
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
2023-01-10 14:33:08 +01:00
class ConfigOrder(YamlStrEnum):
2022-05-27 08:17:04 +02:00
start_first = "start-first"
stop_first = "stop-first"
class UpdateConfig(YamlModel):
2022-05-27 08:17:04 +02:00
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
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[ConfigOrder] = None
class Limits(YamlModel):
2022-05-27 08:17:04 +02:00
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
cpus: Optional[Union[float, str]] = None
memory: Optional[str] = None
pids: Optional[int] = None
class RestartPolicy(YamlModel):
2022-05-27 08:17:04 +02:00
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
condition: Optional[str] = None
delay: Optional[str] = None
max_attempts: Optional[int] = None
window: Optional[str] = None
class Preference(YamlModel):
2022-05-27 08:17:04 +02:00
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
spread: Optional[str] = None
class Placement(YamlModel):
2022-05-27 08:17:04 +02:00
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
constraints: Optional[List[str]] = None
preferences: Optional[List[Preference]] = None
max_replicas_per_node: Optional[int] = None
class DiscreteResourceSpec(YamlModel):
2022-05-27 08:17:04 +02:00
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
kind: Optional[str] = None
value: Optional[float] = None
class GenericResource(YamlModel):
2022-05-27 08:17:04 +02:00
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
discrete_resource_spec: Optional[DiscreteResourceSpec] = None
class GenericResources(YamlModel):
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
__root__: List[GenericResource]
class ConfigItem(YamlModel):
2022-05-27 08:17:04 +02:00
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
subnet: Optional[str] = None
ip_range: Optional[str] = None
gateway: Optional[str] = None
aux_addresses: Optional[Dict[constr(regex=r"^.+$"), str]] = None # type: ignore # noqa: F722
2022-05-27 08:17:04 +02:00
class Ipam(YamlModel):
2022-05-27 08:17:04 +02:00
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
driver: Optional[str] = None
config: Optional[List[ConfigItem]] = None
options: Optional[Dict[constr(regex=r"^.+$"), str]] = None # type: ignore # noqa: F722
2022-05-27 08:17:04 +02:00
class ExternalNetwork(YamlModel):
2022-05-27 08:17:04 +02:00
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
name: Optional[str] = None
class ExternalVolume(YamlModel):
2022-05-27 08:17:04 +02:00
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
name: Optional[str] = None
class ExternalSecret(YamlModel):
2022-05-27 08:17:04 +02:00
name: Optional[str] = None
class ExternalConfig(YamlModel):
2022-05-27 08:17:04 +02:00
name: Optional[str] = None
class ListOfStrings(YamlModel):
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
__root__: List[str] = Field(..., unique_items=True)
class ListOrDict(YamlModel):
class Config:
extra = Extra.allow
2023-01-10 14:33:08 +01:00
__root__: Union[
Dict[constr(regex=r".+"), Optional[Union[str, float, bool]]], List[str] # type: ignore # noqa: F722
2023-01-10 14:33:08 +01:00
]
2022-05-27 08:17:04 +02:00
class BlkioLimit(YamlModel):
2022-05-27 08:17:04 +02:00
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
path: Optional[str] = None
rate: Optional[Union[int, str]] = None
class BlkioWeight(YamlModel):
2022-05-27 08:17:04 +02:00
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
path: Optional[str] = None
weight: Optional[int] = None
class ServiceConfigOrSecretItem(YamlModel):
2022-05-27 08:17:04 +02:00
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
source: Optional[str] = None
target: Optional[str] = None
uid: Optional[str] = None
gid: Optional[str] = None
mode: Optional[float] = None
class ServiceConfigOrSecret(YamlModel):
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
__root__: List[Union[str, ServiceConfigOrSecretItem]]
class Constraints(YamlModel):
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
__root__: Any
class BuildItem(YamlModel):
2022-05-27 08:17:04 +02:00
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
context: Optional[str] = None
dockerfile: Optional[str] = None
dockerfile_inline: Optional[str] = None
2022-05-27 08:17:04 +02:00
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
2022-05-27 08:17:04 +02:00
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
2023-01-10 14:33:08 +01:00
privileged: Optional[bool] = None
2022-05-27 08:17:04 +02:00
secrets: Optional[ServiceConfigOrSecret] = None
tags: Optional[List[str]] = None
2023-01-10 14:33:08 +01:00
platforms: Optional[List[str]] = None
2022-05-27 08:17:04 +02:00
class BlkioConfig(YamlModel):
2022-05-27 08:17:04 +02:00
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
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 ServiceNetwork(YamlModel):
2022-05-27 08:17:04 +02:00
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
aliases: Optional[ListOfStrings] = None
ipv4_address: Optional[str] = None
ipv6_address: Optional[str] = None
link_local_ips: Optional[ListOfStrings] = None
priority: Optional[float] = None
class Device(YamlModel):
2022-05-27 08:17:04 +02:00
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
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(YamlModel):
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
__root__: List[Device]
class Network(YamlModel):
2022-05-27 08:17:04 +02:00
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
name: Optional[str] = None
driver: Optional[str] = None
driver_opts: Optional[Dict[constr(regex=r"^.+$"), Union[str, float]]] = None # type: ignore # noqa: F722
2022-05-27 08:17:04 +02:00
ipam: Optional[Ipam] = None
external: Optional[bool | ExternalNetwork] = None
2022-05-27 08:17:04 +02:00
internal: Optional[bool] = None
enable_ipv6: Optional[bool] = None
attachable: Optional[bool] = None
labels: Optional[ListOrDict] = None
class Volume(YamlModel):
2022-05-27 08:17:04 +02:00
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
name: Optional[str] = None
driver: Optional[str] = None
driver_opts: Optional[Dict[constr(regex=r"^.+$"), Union[str, float]]] = None # type: ignore # noqa: F722
2022-05-27 08:17:04 +02:00
external: Optional[ExternalVolume] = None
labels: Optional[ListOrDict] = None
class Secret(YamlModel):
2022-05-27 08:17:04 +02:00
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
name: Optional[str] = None
2023-01-10 14:33:08 +01:00
environment: Optional[str] = None
2022-05-27 08:17:04 +02:00
file: Optional[str] = None
external: Optional[ExternalSecret] = None
labels: Optional[ListOrDict] = None
driver: Optional[str] = None
driver_opts: Optional[Dict[constr(regex=r"^.+$"), Union[str, float]]] = None # type: ignore # noqa: F722
2022-05-27 08:17:04 +02:00
template_driver: Optional[str] = None
class Config(YamlModel):
2022-05-27 08:17:04 +02:00
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
name: Optional[str] = None
file: Optional[str] = None
external: Optional[ExternalConfig] = None
labels: Optional[ListOrDict] = None
template_driver: Optional[str] = None
class StringOrList(YamlModel):
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
__root__: Union[str, ListOfStrings]
class Reservations(YamlModel):
2022-05-27 08:17:04 +02:00
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
cpus: Optional[Union[float, str]] = None
memory: Optional[str] = None
generic_resources: Optional[GenericResources] = None
devices: Optional[Devices] = None
class Resources(YamlModel):
2022-05-27 08:17:04 +02:00
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
limits: Optional[Limits] = None
reservations: Optional[Reservations] = None
class Deployment(YamlModel):
2022-05-27 08:17:04 +02:00
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
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 Service(YamlModel):
2022-05-27 08:17:04 +02:00
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
deploy: Optional[Deployment] = None
build: Optional[Union[str, BuildItem]] = None
blkio_config: Optional[BlkioConfig] = None
cap_add: Optional[List[str]] = Field(None, unique_items=True)
cap_drop: Optional[List[str]] = Field(None, unique_items=True)
2023-01-10 14:33:08 +01:00
cgroup: Optional[Cgroup] = None
2022-05-27 08:17:04 +02:00
cgroup_parent: Optional[str] = None
command: Optional[Union[str, List[str]]] = None
2022-05-27 08:17:04 +02:00
configs: Optional[ServiceConfigOrSecret] = None
container_name: Optional[str] = None
cpu_count: Optional[conint(ge=0)] = None # type: ignore
cpu_percent: Optional[conint(ge=0, le=100)] = None # type: ignore
2022-05-27 08:17:04 +02:00
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
2023-01-10 14:33:08 +01:00
depends_on: Optional[
Union[ListOfStrings, Dict[constr(regex=r"^[a-zA-Z0-9._-]+$"), DependsOn]] # type: ignore # noqa: F722, E501
2023-01-10 14:33:08 +01:00
] = None
2022-05-27 08:17:04 +02:00
device_cgroup_rules: Optional[ListOfStrings] = None
devices: Optional[List[str]] = Field(None, unique_items=True)
dns: Optional[StringOrList] = None
dns_opt: Optional[List[str]] = Field(None, unique_items=True)
dns_search: Optional[StringOrList] = None
domainname: Optional[str] = None
entrypoint: Optional[Union[str, List[str]]] = None
2022-05-27 08:17:04 +02:00
env_file: Optional[StringOrList] = None
environment: Optional[ListOrDict] = None
expose: Optional[List[Union[str, float]]] = Field(None, unique_items=True)
extends: Optional[Union[str, Extend]] = None
external_links: Optional[List[str]] = Field(None, unique_items=True)
extra_hosts: Optional[ListOrDict] = None
group_add: Optional[List[Union[str, float]]] = Field(None, unique_items=True)
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]] = Field(None, unique_items=True)
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
2023-01-10 14:33:08 +01:00
networks: Optional[
Union[
ListOfStrings, Dict[constr(regex=r"^[a-zA-Z0-9._-]+$"), Optional[ServiceNetwork]] # type: ignore # noqa: F722, E501
2023-01-10 14:33:08 +01:00
]
] = None
2022-05-27 08:17:04 +02:00
oom_kill_disable: Optional[bool] = None
oom_score_adj: Optional[conint(ge=-1000, le=1000)] = None # type: ignore
2023-01-10 14:33:08 +01:00
pid: Optional[str] = None
2022-05-27 08:17:04 +02:00
pids_limit: Optional[Union[float, str]] = None
platform: Optional[str] = None
ports: Optional[List[Union[float, str, Port]]] = Field(None, unique_items=True)
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]] = Field(None, unique_items=True)
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[Dict[constr(regex=r"^[a-z]+$"), Union[int, Ulimit]]] = None # type: ignore # noqa: F722
2022-05-27 08:17:04 +02:00
user: Optional[str] = None
2023-01-10 14:33:08 +01:00
uts: Optional[str] = None
2022-05-27 08:17:04 +02:00
userns_mode: Optional[str] = None
volumes: Optional[List[Union[str, ServiceVolume]]] = Field(None, unique_items=True)
2022-05-27 08:17:04 +02:00
volumes_from: Optional[List[str]] = Field(None, unique_items=True)
working_dir: Optional[str] = None
class ComposeSpecification(YamlModel):
2022-05-27 08:17:04 +02:00
class Config:
extra = Extra.allow
2022-05-27 08:17:04 +02:00
version: Optional[str] = Field(None, description="declared for backward compatibility, ignored.")
name: Optional[constr(regex=r"^[a-z0-9][a-z0-9_-]*$")] = Field( # type: ignore # noqa: F722
2022-05-27 08:17:04 +02:00
None,
description="define the Compose project name, until user defines one explicitly.",
)
services: Optional[Dict[constr(regex=r"^[a-zA-Z0-9._-]+$"), Service]] = None # type: ignore # noqa: F722
networks: Optional[Dict[constr(regex=r"^[a-zA-Z0-9._-]+$"), Optional[Network]]] = None # type: ignore # noqa: F722
volumes: Optional[Dict[constr(regex=r"^[a-zA-Z0-9._-]+$"), Optional[Volume]]] = None # type: ignore # noqa: F722
secrets: Optional[Dict[constr(regex=r"^[a-zA-Z0-9._-]+$"), Secret]] = None # type: ignore # noqa: F722
configs: Optional[Dict[constr(regex=r"^[a-zA-Z0-9._-]+$"), Config]] = None # type: ignore # noqa: F722