mirror of
https://github.com/TrezOne/docker-mods-uptime-kuma-timeout-fix.git
synced 2026-07-01 04:21:56 -04:00
swag:auto-uptime-kuma Initial release of the mod
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
import docker
|
||||
|
||||
|
||||
class SwagDocker:
|
||||
"""
|
||||
A service class for interacting with Docker containers that are used by SWAG mods.
|
||||
"""
|
||||
|
||||
client = None
|
||||
_containers = None
|
||||
_labelPrefix = None
|
||||
|
||||
def __init__(self, labelPrefix: str):
|
||||
self._labelPrefix = labelPrefix
|
||||
self.client = docker.from_env()
|
||||
|
||||
def getSwagContainers(self):
|
||||
"""
|
||||
Retrieve Docker containers filtered by "swag.my_mod.enabled=true":
|
||||
>>> swag = SwagDocker("swag.my_mod")
|
||||
>>> containers = swag.getSwagContainers()
|
||||
"""
|
||||
if self._containers is None:
|
||||
self._containers = self.client.containers.list(
|
||||
filters={"label": [f"{self._labelPrefix}.enabled=true"]})
|
||||
return self._containers
|
||||
|
||||
def parseContainerLabels(self, containerLabels, extraPrefix=""):
|
||||
"""
|
||||
Having following example container labels:
|
||||
swag.my_mod.enabled: true
|
||||
swag.my_mod.config.apple: "123"
|
||||
swag.my_mod.config.orange: "456"
|
||||
|
||||
>>> for container in containers:
|
||||
>>> containerConfigA = swagDocker.parseContainerLabels(container.labels)
|
||||
# Above will return {"enabled": true, "config.apple": "123", "config.orange": "456"}
|
||||
>>> containerConfigB = swagDocker.parseContainerLabels(container.labels, ".config.")
|
||||
# Above will return {"apple": "123", "orange": "456"}
|
||||
"""
|
||||
filteredContainerLabels = {}
|
||||
fullPrefix = f"{self._labelPrefix}{extraPrefix}"
|
||||
prefix_length = len(fullPrefix)
|
||||
|
||||
for label, value in containerLabels.items():
|
||||
if label.startswith(fullPrefix):
|
||||
parsedLabel = label[prefix_length:]
|
||||
filteredContainerLabels[parsedLabel] = value
|
||||
|
||||
return filteredContainerLabels
|
||||
Reference in New Issue
Block a user