qa/tasks/ceph_manager: capture stderr for COT

as we are expecting the error message written to stderr, and we need to
check for the error messages in it.

this change addresses the regression introduced by
204ceee156

Fixes: https://tracker.ceph.com/issues/44500
Signed-off-by: Kefu Chai <kchai@redhat.com>
This commit is contained in:
Kefu Chai 2020-03-08 13:39:59 +08:00
parent f7e57709a7
commit 78308f7207

View File

@ -306,7 +306,8 @@ class OSDThrasher(Thrasher):
])
if proc.exitstatus == 0:
break
elif proc.exitstatus == 1 and proc.stderr == "OSD has the store locked":
elif (proc.exitstatus == 1 and
six.ensure_str(proc.stderr.getvalue()) == "OSD has the store locked"):
continue
else:
raise Exception("ceph-objectstore-tool: "
@ -418,7 +419,7 @@ class OSDThrasher(Thrasher):
])
if proc.exitstatus == 1:
bogosity = "The OSD you are using is older than the exported PG"
if bogosity in proc.stderr.getvalue():
if bogosity in six.ensure_str(proc.stderr.getvalue()):
self.log("OSD older than exported PG"
"...ignored")
elif proc.exitstatus == 10:
@ -453,8 +454,10 @@ class OSDThrasher(Thrasher):
'--journal-path', JPATH.format(id=imp_osd),
])
+ " --op apply-layout-settings --pool " + pool).format(id=osd)
output = imp_remote.sh(cmd, wait=True, check_status=False)
if 'Couldn\'t find pool' in output:
proc = imp_remote.run(args=cmd,
wait=True, check_status=False,
stderr=BytesIO)
if 'Couldn\'t find pool' in six.ensure_str(proc.stderr.getvalue()):
continue
if proc.exitstatus:
raise Exception("ceph-objectstore-tool apply-layout-settings"