"""
Admin Socket task -- used in rados, powercycle, and smoke testing
"""
-from cStringIO import StringIO
import json
import logging
import os
import time
+from teuthology.exceptions import CommandFailedError
from teuthology.orchestra import run
from teuthology import misc as teuthology
from teuthology.parallel import parallel
:returns: output of command in json format
"""
- json_fp = StringIO()
testdir = teuthology.get_testdir(ctx)
max_tries = 120
while True:
- proc = remote.run(
- args=[
+ try:
+ out = remote.sh([
'sudo',
'adjust-ulimits',
'ceph-coverage',
'{tdir}/archive/coverage'.format(tdir=testdir),
'ceph',
'--admin-daemon', socket_path,
- ] + command.split(' ') + args,
- stdout=json_fp,
- check_status=False,
- )
- if proc.exitstatus == 0:
- break
- assert max_tries > 0
- max_tries -= 1
- log.info('ceph cli returned an error, command not registered yet?')
- log.info('sleeping and retrying ...')
- time.sleep(1)
- out = json_fp.getvalue()
- json_fp.close()
+ ] + command.split(' ') + args)
+ except CommandFailedError:
+ assert max_tries > 0
+ max_tries -= 1
+ log.info('ceph cli returned an error, command not registered yet?')
+ log.info('sleeping and retrying ...')
+ time.sleep(1)
+ continue
+ break
log.debug('admin socket command %s returned %s', command, out)
return json.loads(out)