from teuthology import contextutil
from ..orchestra import run
import ceph_client as cclient
+from teuthology.orchestra.run import CommandFailedError
DEFAULT_CONF_PATH = '/etc/ceph/ceph.conf'
if mdss.remotes:
log.info('Setting up CephFS filesystem...')
- proc = mon_remote.run(args=['sudo', 'ceph', '--format=json-pretty', 'osd', 'lspools'],
- stdout=StringIO())
- pools = json.loads(proc.stdout.getvalue())
+ try:
+ proc = mon_remote.run(args=['sudo', 'ceph', '--format=json-pretty', 'osd', 'lspools'],
+ stdout=StringIO())
+ pools = json.loads(proc.stdout.getvalue())
+ metadata_pool_exists = 'metadata' in [p['poolname'] for p in pools]
+ except CommandFailedError as e:
+ # For use in upgrade tests, Ceph cuttlefish and earlier don't support
+ # structured output (--format) from the CLI.
+ if e.exitstatus == 22:
+ metadata_pool_exists = True
+ else:
+ raise
# In case we are using an older Ceph which creates FS by default
- if 'metadata' in [p['poolname'] for p in pools]:
+ if metadata_pool_exists:
log.info("Metadata pool already exists, skipping")
else:
mon_remote.run(args=['sudo', 'ceph', 'osd', 'pool', 'create', 'metadata', '256'])