From e881ff4f716604cde659fd2eb85d48883b97da45 Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Mon, 6 Apr 2020 12:48:18 +0800 Subject: [PATCH] qa/tasks/util/rgw: use StringIO for capturing strings this change should address the failure of ``` 2020-04-06T03:07:59.152 ERROR:teuthology.contextutil:Saw exception from nested tasks Traceback (most recent call last): File "/home/teuthworker/src/git.ceph.com_git_teuthology_wip-py3/teuthology/contextutil.py", line 32, in nested vars.append(enter()) File "/usr/lib/python3.5/contextlib.py", line 59, in __enter__ return next(self.gen) File "/home/teuthworker/src/github.com_tchaikov_ceph_wip-qa-py3/qa/tasks/rgw.py", line 266, in configure_compression rgwadmin(ctx, client, cmd=['user', 'list'], check_status=True) File "/home/teuthworker/src/github.com_tchaikov_ceph_wip-qa-py3/qa/tasks/util/rgw.py", line 43, in rgwadmin j = json.loads(out) File "/usr/lib/python3.5/json/__init__.py", line 312, in loads s.__class__.__name__)) TypeError: the JSON object must be str, not 'bytes' ``` Signed-off-by: Kefu Chai (cherry picked from commit 5d0dc8346c7c025a868fd32b112cdb32fa5dc9ea) --- qa/tasks/util/rgw.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/qa/tasks/util/rgw.py b/qa/tasks/util/rgw.py index a4fa21f370a8c..3229f0a5073e7 100644 --- a/qa/tasks/util/rgw.py +++ b/qa/tasks/util/rgw.py @@ -1,13 +1,14 @@ -from io import BytesIO import logging import json import time +from six import StringIO + from teuthology import misc as teuthology log = logging.getLogger(__name__) -def rgwadmin(ctx, client, cmd, stdin=BytesIO(), check_status=False, +def rgwadmin(ctx, client, cmd, stdin=StringIO(), check_status=False, format='json', decode=True, log_level=logging.DEBUG): log.info('rgwadmin: {client} : {cmd}'.format(client=client,cmd=cmd)) testdir = teuthology.get_testdir(ctx) @@ -29,8 +30,8 @@ def rgwadmin(ctx, client, cmd, stdin=BytesIO(), check_status=False, proc = remote.run( args=pre, check_status=check_status, - stdout=BytesIO(), - stderr=BytesIO(), + stdout=StringIO(), + stderr=StringIO(), stdin=stdin, ) r = proc.exitstatus @@ -81,9 +82,9 @@ def wait_for_radosgw(url, remote): proc = remote.run( args=curl_cmd, check_status=False, - stdout=BytesIO(), - stderr=BytesIO(), - stdin=BytesIO(), + stdout=StringIO(), + stderr=StringIO(), + stdin=StringIO(), ) exit_status = proc.exitstatus if exit_status == 0: -- 2.39.5