aboutsummaryrefslogtreecommitdiff
path: root/kolla/engine_adapter
diff options
context:
space:
mode:
authorMichal Arbet <michal.arbet@ultimum.io>2023-09-12 02:28:08 +0200
committerMichal Arbet <michal.arbet@ultimum.io>2023-09-21 11:01:21 +0200
commitb76bd4c6efa22af43d7895a7b5e95c75806d3893 (patch)
treef9fcabc48ef5e6badbb0800a98c4cc605886eea9 /kolla/engine_adapter
parent4871ca4d6b83f6d28d790722eae52de5e56becee (diff)
downloadkolla-b76bd4c6efa22af43d7895a7b5e95c75806d3893.tar.gz
kolla-b76bd4c6efa22af43d7895a7b5e95c75806d3893.zip
Add podman for image building
Add podman as an option to choose for container engine for kolla-build (--engine podman) Signed-off-by: Konstantin Yarovoy <konstantin.yarovoy@tietoevry.com> Co-Authored-By: Michal Arbet <michal.arbet@ultimum.io> Change-Id: I068c906df97745e397408d8c3ef6af47ee037638
Diffstat (limited to 'kolla/engine_adapter')
-rw-r--r--kolla/engine_adapter/engine.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/kolla/engine_adapter/engine.py b/kolla/engine_adapter/engine.py
index 95966c18a..dc38f4541 100644
--- a/kolla/engine_adapter/engine.py
+++ b/kolla/engine_adapter/engine.py
@@ -18,10 +18,17 @@ try:
except (ImportError):
LOG.debug("Docker python library was not found")
+try:
+ import podman
+except (ImportError, ModuleNotFoundError):
+ LOG.debug("Podman python library was not found")
+ pass
+
class Engine(Enum):
DOCKER = "docker"
+ PODMAN = "podman"
class UnsupportedEngineError(ValueError):
@@ -37,6 +44,9 @@ class UnsupportedEngineError(ValueError):
def getEngineException(conf):
if conf.engine == Engine.DOCKER.value:
return (docker.errors.DockerException)
+ elif conf.engine == Engine.PODMAN.value:
+ return (podman.errors.exceptions.APIError,
+ podman.errors.exceptions.PodmanError)
else:
raise UnsupportedEngineError(conf.engine)
@@ -45,5 +55,15 @@ def getEngineClient(conf):
if conf.engine == Engine.DOCKER.value:
kwargs_env = docker.utils.kwargs_from_env()
return docker.DockerClient(version='auto', **kwargs_env)
+ elif conf.engine == Engine.PODMAN.value:
+ client = podman.PodmanClient(base_url=conf.podman_base_url)
+ try:
+ client.version()
+ except podman.errors.exceptions.APIError as e:
+ e.explanation += (". Check if podman service is active and "
+ "the address to podman.sock is set correctly "
+ "through --podman_base_url")
+ raise e
+ return client
else:
raise UnsupportedEngineError(conf.engine)