diff options
author | James Falcon <therealfalcon@gmail.com> | 2021-08-19 16:23:31 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-19 15:23:31 -0600 |
commit | 776bd36385b3bd5c796479983afd2c9492cbdbe4 (patch) | |
tree | f20c30a77915be584801a2fd88110cf23e5eaf19 /cloudinit | |
parent | 3e63025ab70763c19a6e8b6586b6d75b1232fd18 (diff) | |
download | vyos-cloud-init-776bd36385b3bd5c796479983afd2c9492cbdbe4.tar.gz vyos-cloud-init-776bd36385b3bd5c796479983afd2c9492cbdbe4.zip |
Ignore hotplug socket when collecting logs (#985)
Update "cloud-init collect-logs" to ignore
/run/cloud-init/hook-hotplug-cmd as this will raise the error
"/run/cloud-init/hook-hotplug-cmd` is a named pipe" if included.
Also updated logs.py to continue writing the tarball if it fails
collecting a file rather than let the exception bubble up.
LP: #1940235
Diffstat (limited to 'cloudinit')
-rw-r--r-- | cloudinit/cmd/devel/logs.py | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/cloudinit/cmd/devel/logs.py b/cloudinit/cmd/devel/logs.py index 51c61cca..31ade73d 100644 --- a/cloudinit/cmd/devel/logs.py +++ b/cloudinit/cmd/devel/logs.py @@ -48,11 +48,15 @@ def get_parser(parser=None): return parser -def _copytree_ignore_sensitive_files(curdir, files): - """Return a list of files to ignore if we are non-root""" - if os.getuid() == 0: - return () - return (INSTANCE_JSON_SENSITIVE_FILE,) # Ignore root-permissioned files +def _copytree_rundir_ignore_files(curdir, files): + """Return a list of files to ignore for /run/cloud-init directory""" + ignored_files = [ + 'hook-hotplug-cmd', # named pipe for hotplug + ] + if os.getuid() != 0: + # Ignore root-permissioned files + ignored_files.append(INSTANCE_JSON_SENSITIVE_FILE) + return ignored_files def _write_command_output_to_file(cmd, filename, msg, verbosity): @@ -123,9 +127,13 @@ def collect_logs(tarfile, include_userdata, verbosity=0): run_dir = os.path.join(log_dir, 'run') ensure_dir(run_dir) if os.path.exists(CLOUDINIT_RUN_DIR): - shutil.copytree(CLOUDINIT_RUN_DIR, - os.path.join(run_dir, 'cloud-init'), - ignore=_copytree_ignore_sensitive_files) + try: + shutil.copytree(CLOUDINIT_RUN_DIR, + os.path.join(run_dir, 'cloud-init'), + ignore=_copytree_rundir_ignore_files) + except shutil.Error as e: + sys.stderr.write("Failed collecting file(s) due to error:\n") + sys.stderr.write(str(e) + '\n') _debug("collected dir %s\n" % CLOUDINIT_RUN_DIR, 1, verbosity) else: _debug("directory '%s' did not exist\n" % CLOUDINIT_RUN_DIR, 1, |