138700e59bcd assumes stderr will always have a line containing the
prefix 'ERROR', which leads to an empty error reason when `check-host`
fails with an unhandled exception
Fixes: https://tracker.ceph.com/issues/51818
Signed-off-by: Michael Fritch <mfritch@suse.com>
(cherry picked from commit
dac9225085a1f6d2eeaf209fc3d77c54208db2e8)
addr=addr,
error_ok=True, no_fsid=True)
if code:
+ msg = 'check-host failed:\n' + '\n'.join(err)
# err will contain stdout and stderr, so we filter on the message text to
# only show the errors
errors = [_i.replace("ERROR: ", "") for _i in err if _i.startswith('ERROR')]
- raise OrchestratorError('Host %s (%s) failed check(s): %s' % (
- host, addr, errors))
+ if errors:
+ msg = f'Host {host} ({addr}) failed check(s): {errors}'
+ raise OrchestratorError(msg)
return ip_addr
def _add_host(self, spec):