Merge pull request #375 from dachary/wip-rgw-regional-summary

ensure summary is looked for the user we need (part 2)

Reviewed-by: Loic Dachary <ldachary@redhat.com>
This commit is contained in:
Loic Dachary 2015-03-23 01:17:07 +01:00
commit cfc0d0784b
3 changed files with 24 additions and 33 deletions

View File

@ -23,20 +23,10 @@ import httplib2
import util.rgw as rgw_utils
from teuthology import misc as teuthology
from util.rgw import rgwadmin
from util.rgw import rgwadmin, get_user_summary, get_user_successful_ops
log = logging.getLogger(__name__)
def successful_ops(out):
"""Extract total from the first summary entry (presumed to be only one)"""
summary = out['summary']
if len(summary) == 0:
return 0
entry = summary[0]
return entry['total']['successful_ops']
def create_presigned_url(conn, method, bucket_name, key_name, expiration):
return conn.generate_url(expires_in=expiration,
method=method,
@ -820,7 +810,7 @@ def task(ctx, config):
timestamp = time.time()
while time.time() - timestamp <= (20 * 60): # wait up to 20 minutes
(err, out) = rgwadmin(ctx, client, ['usage', 'show', '--categories', 'delete_obj']) # last operation we did is delete obj, wait for it to flush
if successful_ops(out) > 0:
if get_user_successful_ops(out, user1) > 0:
break
time.sleep(1)
@ -831,14 +821,7 @@ def task(ctx, config):
assert len(out['entries']) > 0
assert len(out['summary']) > 0
# find summary for user1
user_summary = None
for summary in out['summary']:
if summary.get('user') == user1:
user_summary = summary
if not user_summary:
raise AssertionError('No summary info found for user: %s' % user1)
user_summary = get_user_summary(out, user1)
total = user_summary['total']
assert total['successful_ops'] > 0

View File

@ -20,20 +20,10 @@ import time
from boto.connection import AWSAuthConnection
from teuthology import misc as teuthology
from util.rgw import get_user_summary, get_user_successful_ops
log = logging.getLogger(__name__)
def successful_ops(out):
"""
Extract successful operations
:param out: list
"""
summary = out['summary']
if len(summary) == 0:
return 0
entry = summary[0]
return entry['total']['successful_ops']
def rgwadmin(ctx, client, cmd):
"""
Perform rgw admin command
@ -522,7 +512,7 @@ def task(ctx, config):
while time.time() - timestamp <= (20 * 60): # wait up to 20 minutes
(ret, out) = rgwadmin_rest(admin_conn, ['usage', 'show'], {'categories' : 'delete_obj'}) # last operation we did is delete obj, wait for it to flush
if successful_ops(out) > 0:
if get_user_successful_ops(out, user1) > 0:
break
time.sleep(1)
@ -533,7 +523,7 @@ def task(ctx, config):
assert ret == 200
assert len(out['entries']) > 0
assert len(out['summary']) > 0
user_summary = out['summary'][0]
user_summary = get_user_summary(out, user1)
total = user_summary['total']
assert total['successful_ops'] > 0

View File

@ -49,6 +49,24 @@ def rgwadmin(ctx, client, cmd, stdin=StringIO(), check_status=False):
log.info(' raw result: %s' % j)
return (r, j)
def get_user_summary(out, user):
"""Extract the summary for a given user"""
user_summary = None
for summary in out['summary']:
if summary.get('user') == user:
user_summary = summary
if not user_summary:
raise AssertionError('No summary info found for user: %s' % user)
return user_summary
def get_user_successful_ops(out, user):
summary = out['summary']
if len(summary) == 0:
return 0
return get_user_summary(out, user)['total']['successful_ops']
def get_zone_host_and_port(ctx, client, zone):
_, region_map = rgwadmin(ctx, client, check_status=True,
cmd=['-n', client, 'region-map', 'get'])