#!/usr/bin/python3
+import errno
import logging as log
import time
import subprocess
VER_BUCKET_NAME = 'myver'
INDEX_POOL = 'default.rgw.buckets.index'
-
-def exec_cmd(cmd):
- try:
- proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
- out, err = proc.communicate()
- log.info(proc.args)
- if proc.returncode == 0:
- log.info('command succeeded')
- if out is not None: log.debug('{} \n {}'.format(out.decode('utf-8'), err.decode('utf-8')))
- return out
- else:
- raise Exception("error: {} \nreturncode: {}".format(err, proc.returncode))
- except Exception as e:
- log.error('command failed\n')
- log.error(e)
- return False
-
+def exec_cmd(cmd, **kwargs):
+ check_retcode = kwargs.pop('check_retcode', True)
+ kwargs['shell'] = True
+ kwargs['stdout'] = subprocess.PIPE
+ proc = subprocess.Popen(cmd, **kwargs)
+ log.info(proc.args)
+ out, _ = proc.communicate()
+ if check_retcode:
+ assert(proc.returncode == 0)
+ return out
+ return (out, proc.returncode)
class BucketStats:
def __init__(self, bucket_name, bucket_id, num_objs=0, size_kb=0, num_shards=0):
execute manual and dynamic resharding commands
"""
# create user
- exec_cmd('radosgw-admin user create --uid {} --display-name {} --access-key {} --secret {}'.format(USER, DISPLAY_NAME, ACCESS_KEY, SECRET_KEY))
+ _, ret = exec_cmd('radosgw-admin user create --uid {} --display-name {} --access-key {} --secret {}'.format(USER, DISPLAY_NAME, ACCESS_KEY, SECRET_KEY), check_retcode=False)
+ assert(ret == 0 or errno.EEXIST)
def boto_connect(portnum, ssl, proto):
endpoint = proto + '://localhost:' + portnum