# Copyright (C) 2012 Canonical Ltd. # Copyright (C) 2012 Yahoo! Inc. # # Author: Scott Moser <scott.moser@canonical.com> # Author: Joshua Harlow <harlowja@yahoo-inc.com> # # This file is part of cloud-init. See LICENSE file for license information. import inspect import logging import signal import sys from io import StringIO from cloudinit import version as vr from cloudinit.log import log_util LOG = logging.getLogger(__name__) BACK_FRAME_TRACE_DEPTH = 3 EXIT_FOR = { signal.SIGINT: ("Cloud-init %(version)s received SIGINT, exiting...", 1), signal.SIGTERM: ("Cloud-init %(version)s received SIGTERM, exiting...", 1), # Can't be caught... # signal.SIGKILL: ('Cloud-init killed, exiting...', 1), signal.SIGABRT: ("Cloud-init %(version)s received SIGABRT, exiting...", 1), } def _pprint_frame(frame, depth, max_depth, contents): if depth > max_depth or not frame: return frame_info = inspect.getframeinfo(frame) prefix = " " * (depth * 2) contents.write("%sFilename: %s\n" % (prefix, frame_info.filename)) contents.write("%sFunction: %s\n" % (prefix, frame_info.function)) contents.write("%sLine number: %s\n" % (prefix, frame_info.lineno)) _pprint_frame(frame.f_back, depth + 1, max_depth, contents) def _handle_exit(signum, frame): (msg, rc) = EXIT_FOR[signum] msg = msg % ({"version": vr.version_string()}) contents = StringIO() contents.write("%s\n" % (msg)) _pprint_frame(frame, 1, BACK_FRAME_TRACE_DEPTH, contents) log_util.multi_log(contents.getvalue(), log=LOG, log_level=logging.ERROR) sys.exit(rc) def attach_handlers(): sigs_attached = 0 for signum in EXIT_FOR.keys(): signal.signal(signum, _handle_exit) sigs_attached += len(EXIT_FOR) return sigs_attached
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
__pycache__ | Folder | 0755 |
|
|
analyze | Folder | 0755 |
|
|
cmd | Folder | 0755 |
|
|
config | Folder | 0755 |
|
|
distros | Folder | 0755 |
|
|
filters | Folder | 0755 |
|
|
handlers | Folder | 0755 |
|
|
log | Folder | 0755 |
|
|
mergers | Folder | 0755 |
|
|
net | Folder | 0755 |
|
|
reporting | Folder | 0755 |
|
|
sources | Folder | 0755 |
|
|
__init__.py | File | 0 B | 0644 |
|
apport.py | File | 8.27 KB | 0644 |
|
atomic_helper.py | File | 2.79 KB | 0644 |
|
cloud.py | File | 3.22 KB | 0644 |
|
dmi.py | File | 7.86 KB | 0644 |
|
event.py | File | 2 KB | 0644 |
|
features.py | File | 4.87 KB | 0644 |
|
gpg.py | File | 7.99 KB | 0644 |
|
helpers.py | File | 16.16 KB | 0644 |
|
importer.py | File | 2.43 KB | 0644 |
|
lifecycle.py | File | 7.78 KB | 0644 |
|
netinfo.py | File | 24.02 KB | 0644 |
|
performance.py | File | 3.1 KB | 0644 |
|
persistence.py | File | 2.52 KB | 0644 |
|
registry.py | File | 1022 B | 0644 |
|
safeyaml.py | File | 10.11 KB | 0644 |
|
settings.py | File | 2.12 KB | 0644 |
|
signal_handler.py | File | 1.75 KB | 0644 |
|
simpletable.py | File | 1.93 KB | 0644 |
|
socket.py | File | 5.93 KB | 0644 |
|
ssh_util.py | File | 22.22 KB | 0644 |
|
stages.py | File | 41.53 KB | 0644 |
|
subp.py | File | 12.36 KB | 0644 |
|
temp_utils.py | File | 2.94 KB | 0644 |
|
templater.py | File | 7.8 KB | 0644 |
|
type_utils.py | File | 703 B | 0644 |
|
url_helper.py | File | 34.7 KB | 0644 |
|
user_data.py | File | 14.44 KB | 0644 |
|
util.py | File | 90.43 KB | 0644 |
|
version.py | File | 564 B | 0644 |
|
warnings.py | File | 3.76 KB | 0644 |
|