mirror of
https://github.com/ansible-collections/community.docker.git
synced 2026-07-29 11:55:04 +00:00
Handle yet another random unstructured error output. (#949)
This commit is contained in:
@@ -456,13 +456,13 @@ def parse_json_events(stderr, warn_function=None):
|
||||
return events
|
||||
|
||||
|
||||
def parse_events(stderr, dry_run=False, warn_function=None):
|
||||
def parse_events(stderr, dry_run=False, warn_function=None, nonzero_rc=False):
|
||||
events = []
|
||||
error_event = None
|
||||
stderr_lines = stderr.splitlines()
|
||||
if stderr_lines and stderr_lines[-1] == b'':
|
||||
del stderr_lines[-1]
|
||||
for line in stderr_lines:
|
||||
for index, line in enumerate(stderr_lines):
|
||||
line = to_native(line.strip())
|
||||
if not line:
|
||||
continue
|
||||
@@ -513,7 +513,7 @@ def parse_events(stderr, dry_run=False, warn_function=None):
|
||||
)
|
||||
events.append(error_event)
|
||||
continue
|
||||
if len(stderr_lines) == 1:
|
||||
if len(stderr_lines) == 1 or (nonzero_rc and index == len(stderr_lines) - 1):
|
||||
# **Very likely** an error message that is independent of an error event
|
||||
error_event = Event(
|
||||
ResourceType.UNKNOWN,
|
||||
@@ -780,10 +780,10 @@ class BaseComposeManager(DockerBaseClass):
|
||||
self._handle_failed_cli_call(args, rc, images, stderr)
|
||||
return images
|
||||
|
||||
def parse_events(self, stderr, dry_run=False):
|
||||
def parse_events(self, stderr, dry_run=False, nonzero_rc=False):
|
||||
if self.use_json_events:
|
||||
return parse_json_events(stderr, warn_function=self.client.warn)
|
||||
return parse_events(stderr, dry_run=dry_run, warn_function=self.client.warn)
|
||||
return parse_events(stderr, dry_run=dry_run, warn_function=self.client.warn, nonzero_rc=nonzero_rc)
|
||||
|
||||
def emit_warnings(self, events):
|
||||
emit_warnings(events, warn_function=self.client.warn)
|
||||
|
||||
@@ -506,7 +506,7 @@ class ServicesManager(BaseComposeManager):
|
||||
result = dict()
|
||||
args = self.get_up_cmd(self.check_mode)
|
||||
rc, stdout, stderr = self.client.call_cli(*args, cwd=self.project_src)
|
||||
events = self.parse_events(stderr, dry_run=self.check_mode)
|
||||
events = self.parse_events(stderr, dry_run=self.check_mode, nonzero_rc=rc != 0)
|
||||
self.emit_warnings(events)
|
||||
self.update_result(result, events, stdout, stderr, ignore_service_pull_events=True)
|
||||
self.update_failed(result, events, args, stdout, stderr, rc)
|
||||
@@ -537,7 +537,7 @@ class ServicesManager(BaseComposeManager):
|
||||
# Make sure all containers are created
|
||||
args_1 = self.get_up_cmd(self.check_mode, no_start=True)
|
||||
rc_1, stdout_1, stderr_1 = self.client.call_cli(*args_1, cwd=self.project_src)
|
||||
events_1 = self.parse_events(stderr_1, dry_run=self.check_mode)
|
||||
events_1 = self.parse_events(stderr_1, dry_run=self.check_mode, nonzero_rc=rc_1 != 0)
|
||||
self.emit_warnings(events_1)
|
||||
self.update_result(result, events_1, stdout_1, stderr_1, ignore_service_pull_events=True)
|
||||
is_failed_1 = is_failed(events_1, rc_1)
|
||||
@@ -545,7 +545,7 @@ class ServicesManager(BaseComposeManager):
|
||||
# Make sure all containers are stopped
|
||||
args_2 = self.get_stop_cmd(self.check_mode)
|
||||
rc_2, stdout_2, stderr_2 = self.client.call_cli(*args_2, cwd=self.project_src)
|
||||
events_2 = self.parse_events(stderr_2, dry_run=self.check_mode)
|
||||
events_2 = self.parse_events(stderr_2, dry_run=self.check_mode, nonzero_rc=rc_2 != 0)
|
||||
self.emit_warnings(events_2)
|
||||
self.update_result(result, events_2, stdout_2, stderr_2)
|
||||
else:
|
||||
@@ -580,7 +580,7 @@ class ServicesManager(BaseComposeManager):
|
||||
result = dict()
|
||||
args = self.get_restart_cmd(self.check_mode)
|
||||
rc, stdout, stderr = self.client.call_cli(*args, cwd=self.project_src)
|
||||
events = self.parse_events(stderr, dry_run=self.check_mode)
|
||||
events = self.parse_events(stderr, dry_run=self.check_mode, nonzero_rc=rc != 0)
|
||||
self.emit_warnings(events)
|
||||
self.update_result(result, events, stdout, stderr)
|
||||
self.update_failed(result, events, args, stdout, stderr, rc)
|
||||
@@ -607,7 +607,7 @@ class ServicesManager(BaseComposeManager):
|
||||
result = dict()
|
||||
args = self.get_down_cmd(self.check_mode)
|
||||
rc, stdout, stderr = self.client.call_cli(*args, cwd=self.project_src)
|
||||
events = self.parse_events(stderr, dry_run=self.check_mode)
|
||||
events = self.parse_events(stderr, dry_run=self.check_mode, nonzero_rc=rc != 0)
|
||||
self.emit_warnings(events)
|
||||
self.update_result(result, events, stdout, stderr)
|
||||
self.update_failed(result, events, args, stdout, stderr, rc)
|
||||
|
||||
@@ -165,7 +165,7 @@ class PullManager(BaseComposeManager):
|
||||
result = dict()
|
||||
args = self.get_pull_cmd(self.check_mode)
|
||||
rc, stdout, stderr = self.client.call_cli(*args, cwd=self.project_src)
|
||||
events = self.parse_events(stderr, dry_run=self.check_mode)
|
||||
events = self.parse_events(stderr, dry_run=self.check_mode, nonzero_rc=rc != 0)
|
||||
self.emit_warnings(events)
|
||||
self.update_result(result, events, stdout, stderr, ignore_service_pull_events=self.policy != 'missing' and not self.check_mode)
|
||||
self.update_failed(result, events, args, stdout, stderr, rc)
|
||||
|
||||
Reference in New Issue
Block a user