mirror of
https://github.com/linuxserver/docker-lsio-api.git
synced 2026-01-16 18:01:28 +08:00
131 lines
2.7 KiB
Python
131 lines
2.7 KiB
Python
from pydantic import BaseModel
|
|
|
|
# Increment when updating schema or forcing an update on start
|
|
IMAGES_SCHEMA_VERSION = 3
|
|
SCARF_SCHEMA_VERSION = 1
|
|
|
|
|
|
class Tag(BaseModel):
|
|
tag: str
|
|
desc: str
|
|
|
|
class Architecture(BaseModel):
|
|
arch: str
|
|
tag: str
|
|
|
|
class Changelog(BaseModel):
|
|
date: str
|
|
desc: str
|
|
|
|
class Volume(BaseModel):
|
|
path: str
|
|
host_path: str
|
|
desc: str
|
|
optional: bool
|
|
|
|
class Port(BaseModel):
|
|
external: str
|
|
internal: str
|
|
desc: str
|
|
optional: bool
|
|
|
|
class EnvVar(BaseModel):
|
|
name: str
|
|
value: str
|
|
desc: str
|
|
optional: bool
|
|
|
|
class EnvVar(BaseModel):
|
|
name: str
|
|
value: str
|
|
desc: str
|
|
optional: bool
|
|
|
|
class Custom(BaseModel):
|
|
name: str
|
|
name_compose: str
|
|
value: str | list[str]
|
|
desc: str
|
|
optional: bool
|
|
|
|
class SecurityOpt(BaseModel):
|
|
run_var: str
|
|
compose_var: str
|
|
desc: str
|
|
optional: bool
|
|
|
|
class Device(BaseModel):
|
|
path: str
|
|
host_path: str
|
|
desc: str
|
|
optional: bool
|
|
|
|
class Cap(BaseModel):
|
|
cap_add: str
|
|
desc: str
|
|
optional: bool
|
|
|
|
class Hostname(BaseModel):
|
|
hostname: str
|
|
desc: str
|
|
optional: bool
|
|
|
|
class MacAddress(BaseModel):
|
|
mac_address: str
|
|
desc: str
|
|
optional: bool
|
|
|
|
class Config(BaseModel):
|
|
application_setup: str | None = None
|
|
readonly_supported: bool | None = None
|
|
nonroot_supported: bool | None = None
|
|
privileged: bool | None = None
|
|
networking: str | None = None
|
|
hostname: Hostname | None = None
|
|
mac_address: MacAddress | None = None
|
|
env_vars: list[EnvVar] | None = None
|
|
volumes: list[Volume] | None = None
|
|
ports: list[Port] | None = None
|
|
custom: list[Custom] | None = None
|
|
security_opt: list[SecurityOpt] | None = None
|
|
devices: list[Device] | None = None
|
|
caps: list[Cap] | None = None
|
|
|
|
class Image(BaseModel):
|
|
name: str
|
|
initial_date: str | None = None
|
|
github_url: str
|
|
project_url: str | None = None
|
|
project_logo: str | None = None
|
|
description: str
|
|
version: str
|
|
version_timestamp: str
|
|
category: str
|
|
stable: bool
|
|
deprecated: bool
|
|
stars: int
|
|
monthly_pulls: int | None = None
|
|
tags: list[Tag]
|
|
architectures: list[Architecture]
|
|
changelog: list[Changelog] | None = None
|
|
config: Config | None = None
|
|
|
|
class Repository(BaseModel):
|
|
linuxserver: list[Image]
|
|
|
|
class ImagesData(BaseModel):
|
|
repositories: Repository
|
|
|
|
class ImagesResponse(BaseModel):
|
|
status: str
|
|
last_updated: str
|
|
data: ImagesData
|
|
|
|
def exclude_config(self):
|
|
for image in self.data.repositories.linuxserver:
|
|
image.config = None
|
|
|
|
def exclude_deprecated(self):
|
|
images = self.data.repositories.linuxserver
|
|
self.data.repositories.linuxserver = list(filter(lambda image: not image.deprecated, images))
|