ansible-galaxy - add config to control the display wheel (#61902)
* ansible-galaxy - add config to control the display wheel * Fix changelog and make test more stable * Don't use display thread at all if progress wheel isn't being shown
This commit is contained in:
parent
b010acfb27
commit
46ffcd6c44
4 changed files with 25 additions and 3 deletions
2
changelogs/fragments/ansible-galaxy-progress.yaml
Normal file
2
changelogs/fragments/ansible-galaxy-progress.yaml
Normal file
|
@ -0,0 +1,2 @@
|
|||
minor_changes:
|
||||
- ansible-galaxy - Added the ability to display the progress wheel through the C.GALAXY_DISPLAY_PROGRESS config option. Also this now defaults to displaying the progress wheel if stdout has a tty.
|
|
@ -1396,6 +1396,18 @@ GALAXY_TOKEN_PATH:
|
|||
- {key: token_path, section: galaxy}
|
||||
type: path
|
||||
version_added: "2.9"
|
||||
GALAXY_DISPLAY_PROGRESS:
|
||||
default: ~
|
||||
description:
|
||||
- Some steps in ``ansible-galaxy`` display a progress wheel which can cause issues on certain displays or when
|
||||
outputing the stdout to a file.
|
||||
- This config option controls whether the display wheel is shown or not.
|
||||
- The default is to show the display wheel if stdout has a tty.
|
||||
env: [{name: ANSIBLE_GALAXY_DISPLAY_PROGRESS}]
|
||||
ini:
|
||||
- {key: display_progress, section: galaxy}
|
||||
type: bool
|
||||
version_added: "2.10"
|
||||
HOST_KEY_CHECKING:
|
||||
name: Check host keys
|
||||
default: True
|
||||
|
|
|
@ -9,6 +9,7 @@ import json
|
|||
import operator
|
||||
import os
|
||||
import shutil
|
||||
import sys
|
||||
import tarfile
|
||||
import tempfile
|
||||
import threading
|
||||
|
@ -456,6 +457,13 @@ def _tarfile_extract(tar, member):
|
|||
|
||||
@contextmanager
|
||||
def _display_progress():
|
||||
config_display = C.GALAXY_DISPLAY_PROGRESS
|
||||
display_wheel = sys.stdout.isatty() if config_display is None else config_display
|
||||
|
||||
if not display_wheel:
|
||||
yield
|
||||
return
|
||||
|
||||
def progress(display_queue, actual_display):
|
||||
actual_display.debug("Starting display_progress display thread")
|
||||
t = threading.current_thread()
|
||||
|
|
|
@ -661,7 +661,7 @@ def test_install_collections_from_tar(collection_artifact, monkeypatch):
|
|||
assert actual_manifest['collection_info']['version'] == '0.1.0'
|
||||
|
||||
# Filter out the progress cursor display calls.
|
||||
display_msgs = [m[1][0] for m in mock_display.mock_calls if 'newline' not in m[2]]
|
||||
display_msgs = [m[1][0] for m in mock_display.mock_calls if 'newline' not in m[2] and len(m[1]) == 1]
|
||||
assert len(display_msgs) == 3
|
||||
assert display_msgs[0] == "Process install dependency map"
|
||||
assert display_msgs[1] == "Starting collection install process"
|
||||
|
@ -686,7 +686,7 @@ def test_install_collections_existing_without_force(collection_artifact, monkeyp
|
|||
assert actual_files == [b'README.md', b'docs', b'galaxy.yml', b'playbooks', b'plugins', b'roles']
|
||||
|
||||
# Filter out the progress cursor display calls.
|
||||
display_msgs = [m[1][0] for m in mock_display.mock_calls if 'newline' not in m[2]]
|
||||
display_msgs = [m[1][0] for m in mock_display.mock_calls if 'newline' not in m[2] and len(m[1]) == 1]
|
||||
assert len(display_msgs) == 4
|
||||
# Msg1 is the warning about not MANIFEST.json, cannot really check message as it has line breaks which varies based
|
||||
# on the path size
|
||||
|
@ -724,7 +724,7 @@ def test_install_collection_with_circular_dependency(collection_artifact, monkey
|
|||
assert actual_manifest['collection_info']['version'] == '0.1.0'
|
||||
|
||||
# Filter out the progress cursor display calls.
|
||||
display_msgs = [m[1][0] for m in mock_display.mock_calls if 'newline' not in m[2]]
|
||||
display_msgs = [m[1][0] for m in mock_display.mock_calls if 'newline' not in m[2] and len(m[1]) == 1]
|
||||
assert len(display_msgs) == 3
|
||||
assert display_msgs[0] == "Process install dependency map"
|
||||
assert display_msgs[1] == "Starting collection install process"
|
||||
|
|
Loading…
Reference in a new issue