Ver código fonte

Only allow log streaming if logdriver is json-file or journald

Signed-off-by: Joffrey F <[email protected]>
Joffrey F 9 anos atrás
pai
commit
7dd2e33057
2 arquivos alterados com 29 adições e 1 exclusões
  1. 1 1
      compose/container.py
  2. 28 0
      tests/unit/container_test.py

+ 1 - 1
compose/container.py

@@ -163,7 +163,7 @@ class Container(object):
     @property
     def has_api_logs(self):
         log_type = self.log_driver
-        return not log_type or log_type != 'none'
+        return not log_type or log_type in ('json-file', 'journald')
 
     def attach_log_stream(self):
         """A log stream can only be attached if the container uses a json-file

+ 28 - 0
tests/unit/container_test.py

@@ -150,6 +150,34 @@ class ContainerTest(unittest.TestCase):
         container = Container(None, self.container_dict, has_been_inspected=True)
         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):