mirror of
https://github.com/ceph/ceph
synced 2024-12-25 21:03:31 +00:00
70 lines
1.6 KiB
Python
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,
|
|
],
|
|
)
|