monmap_output, re.MULTILINE).group(1)
return fsid
+
+def maybe_redirect_stderr(args, config, cluster, type_, id_):
+ if type_ == 'osd' and \
+ config.get('flavor', 'default') != 'crimson':
+ log_path = f'/var/log/ceph/{cluster}-{type_}.{id_}.log'
+ return args + [run.Raw('2>>'), log_path]
+ else:
+ return args
+
+
@contextlib.contextmanager
def cluster(ctx, config):
"""
for role in teuthology.cluster_roles_of_type(roles_for_host, 'osd', cluster_name):
_, _, id_ = teuthology.split_role(role)
try:
- remote.run(
- args=[
- 'sudo',
+ args = ['sudo',
'MALLOC_CHECK_=3',
'adjust-ulimits',
- 'ceph-coverage',
- coverage_dir,
+ 'ceph-coverage', coverage_dir,
'ceph-osd',
'--no-mon-config',
- '--cluster',
- cluster_name,
+ '--cluster', cluster_name,
'--mkfs',
'--mkkey',
'-i', id_,
- '--monmap', monmap_path,
- ],
- )
+ '--monmap', monmap_path]
+ remote.run(
+ args=maybe_redirect_stderr(args, config,
+ cluster_name, 'osd', id_))
except run.CommandFailedError:
# try without --no-mon-config.. this may be an upgrade test
remote.run(
valgrind_args)
run_cmd.extend(run_cmd_tail)
+ run_cmd = maybe_redirect_stderr(run_cmd,
+ config,
+ cluster_name, type_, id_)
# always register mgr; don't necessarily start
ctx.daemons.register_daemon(