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)

Reply via email to