This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new f662b7de8c Catch error in Breeze when docker is not running (#22901)
f662b7de8c is described below
commit f662b7de8c5e61f640f150d4e68bde21dcdd09b4
Author: Joppe Vos <[email protected]>
AuthorDate: Mon Apr 11 16:30:21 2022 +0200
Catch error in Breeze when docker is not running (#22901)
---
dev/breeze/src/airflow_breeze/shell/enter_shell.py | 7 +++++++
.../airflow_breeze/utils/docker_command_utils.py | 21 +++++++++++++++++++++
2 files changed, 28 insertions(+)
diff --git a/dev/breeze/src/airflow_breeze/shell/enter_shell.py
b/dev/breeze/src/airflow_breeze/shell/enter_shell.py
index 3cb03b054e..183a999a52 100644
--- a/dev/breeze/src/airflow_breeze/shell/enter_shell.py
+++ b/dev/breeze/src/airflow_breeze/shell/enter_shell.py
@@ -33,6 +33,7 @@ from airflow_breeze.utils.docker_command_utils import (
SOURCE_OF_DEFAULT_VALUES_FOR_VARIABLES,
VARIABLES_IN_CACHE,
check_docker_compose_version,
+ check_docker_is_running,
check_docker_resources,
check_docker_version,
construct_env_variables_docker_compose_command,
@@ -190,6 +191,12 @@ def enter_shell(**kwargs):
"""
verbose = kwargs['verbose']
dry_run = kwargs['dry_run']
+ if not check_docker_is_running(verbose):
+ console.print(
+ '[red]Docker is not running.[/]\n'
+ '[bright_yellow]Please make sure Docker is installed and
running.[/]'
+ )
+ sys.exit(1)
check_docker_version(verbose)
check_docker_compose_version(verbose)
updated_kwargs = synchronize_cached_params(kwargs)
diff --git a/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py
b/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py
index 0a3f129214..8314565e72 100644
--- a/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py
+++ b/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py
@@ -159,12 +159,33 @@ def compare_version(current_version: str, min_version:
str) -> bool:
return version.parse(current_version) >= version.parse(min_version)
+def check_docker_is_running(verbose: bool) -> bool:
+ """
+ Checks if docker is running. Suppressed Dockers stdout and stderr output.
+ :param verbose: print commands when running
+ :return: False if docker is not running.
+ """
+ response = run_command(
+ ["docker", "info"],
+ verbose=verbose,
+ no_output_dump_on_exception=True,
+ text=False,
+ check=True,
+ stdout=subprocess.DEVNULL,
+ stderr=subprocess.STDOUT,
+ )
+ if not response:
+ return False
+ return True
+
+
def check_docker_version(verbose: bool):
"""
Checks if the docker compose version is as expected (including some
specific modifications done by
some vendors such as Microsoft (they might have modified version of
docker-compose/docker in their
cloud. In case docker compose version is wrong we continue but print
warning for the user.
+
:param verbose: print commands when running
"""
permission_denied = check_docker_permission(verbose)