outposts: improve error handling for outpost service connection state

Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
This commit is contained in:
Jens Langhammer 2022-01-10 19:44:13 +01:00
parent bd283c506d
commit 71dffb21a9
2 changed files with 14 additions and 6 deletions

View File

@ -9,6 +9,7 @@ from docker import DockerClient as UpstreamDockerClient
from docker.errors import DockerException, NotFound from docker.errors import DockerException, NotFound
from docker.models.containers import Container from docker.models.containers import Container
from docker.utils.utils import kwargs_from_env from docker.utils.utils import kwargs_from_env
from paramiko.ssh_exception import SSHException
from structlog.stdlib import get_logger from structlog.stdlib import get_logger
from yaml import safe_dump from yaml import safe_dump
@ -49,10 +50,13 @@ class DockerClient(UpstreamDockerClient, BaseClient):
authentication_kp=connection.tls_authentication, authentication_kp=connection.tls_authentication,
) )
tls_config = self.tls.write() tls_config = self.tls.write()
super().__init__( try:
base_url=connection.url, super().__init__(
tls=tls_config, base_url=connection.url,
) tls=tls_config,
)
except SSHException as exc:
raise ServiceConnectionInvalid from exc
self.logger = get_logger() self.logger = get_logger()
# Ensure the client actually works # Ensure the client actually works
self.containers.list() self.containers.list()

View File

@ -77,8 +77,12 @@ def outpost_service_connection_state(connection_pk: Any):
cls = DockerClient cls = DockerClient
if isinstance(connection, KubernetesServiceConnection): if isinstance(connection, KubernetesServiceConnection):
cls = KubernetesClient cls = KubernetesClient
with cls(connection) as client: try:
state = client.fetch_state() with cls(connection) as client:
state = client.fetch_state()
except ServiceConnectionInvalid as exc:
LOGGER.warning("Failed to get client status", exc=exc)
return
cache.set(connection.state_key, state, timeout=None) cache.set(connection.state_key, state, timeout=None)