yield capability
+def update_archive_setting(ctx, key, value):
+ with open(os.path.join(ctx.archive, 'info.yaml'), 'r+') as info_file:
+ info_yaml = yaml.safe_load(info_file)
+ info_file.seek(0)
+ if 'archive' in info_yaml:
+ info_yaml['archive'][key] = value
+ else:
+ info_yaml['archive'] = {key: value}
+ yaml.safe_dump(info_yaml, info_file, default_flow_style=False)
+
+
@contextlib.contextmanager
def ceph_crash(ctx, config):
"""
Gather crash dumps from /var/lib/ceph/crash
"""
- # Add logs directory to job's info log file
- with open(os.path.join(ctx.archive, 'info.yaml'), 'r+') as info_file:
- info_yaml = yaml.safe_load(info_file)
- info_file.seek(0)
- if 'archive' not in info_yaml:
- info_yaml['archive'] = {'crash': '/var/lib/ceph/crash'}
- else:
- info_yaml['archive']['crash'] = '/var/lib/ceph/crash'
- yaml.safe_dump(info_yaml, info_file, default_flow_style=False)
+ # Add crash directory to job's archive
+ update_archive_setting(ctx, 'crash', '/var/lib/ceph/crash')
try:
yield
)
# Add logs directory to job's info log file
- with open(os.path.join(ctx.archive, 'info.yaml'), 'r+') as info_file:
- info_yaml = yaml.safe_load(info_file)
- info_file.seek(0)
- if 'archive' not in info_yaml:
- info_yaml['archive'] = {'log': '/var/log/ceph'}
- else:
- info_yaml['archive']['log'] = '/var/log/ceph'
- yaml.safe_dump(info_yaml, info_file, default_flow_style=False)
+ update_archive_setting(ctx, 'log', '/var/log/ceph')
class Rotater(object):
stop_event = gevent.event.Event()