outpost: add additional labels to docker container

Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
This commit is contained in:
Jens Langhammer 2021-08-27 19:26:27 +02:00
parent dc41d0af27
commit 12ddee3bb6
1 changed files with 19 additions and 1 deletions

View File

@ -29,7 +29,9 @@ class DockerController(BaseController):
raise ControllerException from exc
def _get_labels(self) -> dict[str, str]:
return {}
return {
"io.goauthentik.outpost-uuid": self.outpost.pk.hex,
}
def _get_env(self) -> dict[str, str]:
return {
@ -49,6 +51,17 @@ class DockerController(BaseController):
return True
return False
def _comp_labels(self, container: Container) -> bool:
"""Check if container's labels is equal to what we would set. Return true if container needs
to be rebuilt."""
should_be = self._get_labels()
for key, expected_value in should_be.items():
if key not in container.labels:
return True
if container.labels[key] != expected_value:
return True
return False
def _comp_ports(self, container: Container) -> bool:
"""Check that the container has the correct ports exposed. Return true if container needs
to be rebuilt."""
@ -135,6 +148,11 @@ class DockerController(BaseController):
self.logger.info("Container has outdated config, re-creating...")
self.down()
return self.up(depth + 1)
# Check that container values match our values
if self._comp_labels(container):
self.logger.info("Container has outdated labels, re-creating...")
self.down()
return self.up(depth + 1)
if (
container.attrs.get("HostConfig", {})
.get("RestartPolicy", {})