ceph/teuthology/task/localdir.py

70 lines
1.6 KiB
Python

"""
Localdir
"""
import contextlib
import logging
import os
from teuthology import misc as teuthology
log = logging.getLogger(__name__)
@contextlib.contextmanager
def task(ctx, config):
"""
Create a mount dir 'client' that is just the local disk:
Example that "mounts" all clients:
tasks:
- localdir:
- interactive:
Example for a specific client:
tasks:
- localdir: [client.2]
- interactive:
:param ctx: Context
:param config: Configuration
"""
log.info('Creating local mnt dirs...')
testdir = teuthology.get_testdir(ctx)
if config is None:
config = list('client.{id}'.format(id=id_)
for id_ in teuthology.all_roles_of_type(ctx.cluster,
'client'))
clients = list(teuthology.get_clients(ctx=ctx, roles=config))
for id_, remote in clients:
mnt = os.path.join(testdir, 'mnt.{id}'.format(id=id_))
log.info('Creating dir {remote} {mnt}...'.format(
remote=remote, mnt=mnt))
remote.run(
args=[
'mkdir',
'--',
mnt,
],
)
try:
yield
finally:
log.info('Removing local mnt dirs...')
for id_, remote in clients:
mnt = os.path.join(testdir, 'mnt.{id}'.format(id=id_))
remote.run(
args=[
'rm',
'-rf',
'--',
mnt,
],
)