27 lines
817 B
Python
27 lines
817 B
Python
from docker import errors
|
|
from docker.models.containers import Container
|
|
|
|
from .types import SerializedContainer
|
|
|
|
|
|
def container_logs(container: Container, tail: int) -> str | None:
|
|
try:
|
|
return container.logs(tail=tail).decode()
|
|
except errors.APIError:
|
|
return None
|
|
|
|
|
|
def serialize_container(container: Container) -> SerializedContainer:
|
|
return SerializedContainer(
|
|
id=container.short_id,
|
|
name=container.name,
|
|
image=container.image.tags[0] if container.image else None,
|
|
labels=container.labels,
|
|
status=container.status,
|
|
health=container.health,
|
|
engine=container.labels.get("engine"),
|
|
owner=container.labels.get("owner"),
|
|
environment=container.attrs["Config"]["Env"],
|
|
logs=container_logs(container, 100),
|
|
)
|