Merge pull request #8082 from thaJeztah/remove_log_driver_check

Remove local check for log-driver read support
This commit is contained in:
Anca Iordache 2021-02-15 17:07:34 +01:00 committed by GitHub
commit 66c6d2757a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 2 additions and 64 deletions

View File

@ -158,10 +158,8 @@ class QueueItem(namedtuple('_QueueItem', 'item is_stop exc')):
def tail_container_logs(container, presenter, queue, log_args): def tail_container_logs(container, presenter, queue, log_args):
generator = get_log_generator(container)
try: try:
for item in generator(container, log_args): for item in build_log_generator(container, log_args):
queue.put(QueueItem.new(presenter.present(container, item))) queue.put(QueueItem.new(presenter.present(container, item)))
except Exception as e: except Exception as e:
queue.put(QueueItem.exception(e)) queue.put(QueueItem.exception(e))
@ -171,20 +169,6 @@ def tail_container_logs(container, presenter, queue, log_args):
queue.put(QueueItem.stop(container.name)) queue.put(QueueItem.stop(container.name))
def get_log_generator(container):
if container.has_api_logs:
return build_log_generator
return build_no_log_generator
def build_no_log_generator(container, log_args):
"""Return a generator that prints a warning about logs and waits for
container to exit.
"""
yield "WARNING: no logs are available with the '{}' log driver\n".format(
container.log_driver)
def build_log_generator(container, log_args): def build_log_generator(container, log_args):
# if the container doesn't have a log_stream we need to attach to container # if the container doesn't have a log_stream we need to attach to container
# before log printer starts running # before log printer starts running

View File

@ -186,11 +186,6 @@ class Container:
def log_driver(self): def log_driver(self):
return self.get('HostConfig.LogConfig.Type') return self.get('HostConfig.LogConfig.Type')
@property
def has_api_logs(self):
log_type = self.log_driver
return not log_type or log_type in ('json-file', 'journald', 'local')
@property @property
def human_readable_health_status(self): def human_readable_health_status(self):
""" Generate UP status string with up time and health """ Generate UP status string with up time and health
@ -204,11 +199,7 @@ class Container:
return status_string return status_string
def attach_log_stream(self): def attach_log_stream(self):
"""A log stream can only be attached if the container uses a self.log_stream = self.attach(stdout=True, stderr=True, stream=True)
json-file, journald or local log driver.
"""
if self.has_api_logs:
self.log_stream = self.attach(stdout=True, stderr=True, stream=True)
def get(self, key): def get(self, key):
"""Return a value from the container or None if the value is not set. """Return a value from the container or None if the value is not set.

View File

@ -8,7 +8,6 @@ from docker.errors import APIError
from compose.cli.log_printer import build_log_generator from compose.cli.log_printer import build_log_generator
from compose.cli.log_printer import build_log_presenters from compose.cli.log_printer import build_log_presenters
from compose.cli.log_printer import build_no_log_generator
from compose.cli.log_printer import consume_queue from compose.cli.log_printer import consume_queue
from compose.cli.log_printer import QueueItem from compose.cli.log_printer import QueueItem
from compose.cli.log_printer import wait_on_exit from compose.cli.log_printer import wait_on_exit
@ -75,14 +74,6 @@ def test_wait_on_exit_raises():
assert expected in wait_on_exit(mock_container) assert expected in wait_on_exit(mock_container)
def test_build_no_log_generator(mock_container):
mock_container.has_api_logs = False
mock_container.log_driver = 'none'
output, = build_no_log_generator(mock_container, None)
assert "WARNING: no logs are available with the 'none' log driver\n" in output
assert "exited with code" not in output
class TestBuildLogGenerator: class TestBuildLogGenerator:
def test_no_log_stream(self, mock_container): def test_no_log_stream(self, mock_container):

View File

@ -221,34 +221,6 @@ class ContainerTest(unittest.TestCase):
container = Container(None, self.container_dict, has_been_inspected=True) container = Container(None, self.container_dict, has_been_inspected=True)
assert container.short_id == self.container_id[:12] assert container.short_id == self.container_id[:12]
def test_has_api_logs(self):
container_dict = {
'HostConfig': {
'LogConfig': {
'Type': 'json-file'
}
}
}
container = Container(None, container_dict, has_been_inspected=True)
assert container.has_api_logs is True
container_dict['HostConfig']['LogConfig']['Type'] = 'none'
container = Container(None, container_dict, has_been_inspected=True)
assert container.has_api_logs is False
container_dict['HostConfig']['LogConfig']['Type'] = 'syslog'
container = Container(None, container_dict, has_been_inspected=True)
assert container.has_api_logs is False
container_dict['HostConfig']['LogConfig']['Type'] = 'journald'
container = Container(None, container_dict, has_been_inspected=True)
assert container.has_api_logs is True
container_dict['HostConfig']['LogConfig']['Type'] = 'foobar'
container = Container(None, container_dict, has_been_inspected=True)
assert container.has_api_logs is False
class GetContainerNameTestCase(unittest.TestCase): class GetContainerNameTestCase(unittest.TestCase):