/
snap
/
core18
/
2999
/
usr
/
lib
/
python3
/
dist-packages
/
cloudinit
/
/snap/core18/2999/usr/lib/python3/dist-packages/cloudinit
mkdir
upload
Name
Size
Mode
Actions
analyze/
-
0755
rm
cmd/
-
0755
rm
config/
-
0755
rm
distros/
-
0755
rm
filters/
-
0755
rm
handlers/
-
0755
rm
mergers/
-
0755
rm
net/
-
0755
rm
reporting/
-
0755
rm
sources/
-
0755
rm
__pycache__/
-
0755
rm
apport.py
5881
0644
edit
dl
rm
atomic_helper.py
1417
0644
edit
dl
rm
cloud.py
3574
0644
edit
dl
rm
dhclient_hook.py
2549
0644
edit
dl
rm
dmi.py
6979
0644
edit
dl
rm
event.py
2097
0644
edit
dl
rm
features.py
3146
0644
edit
dl
rm
gpg.py
4424
0644
edit
dl
rm
helpers.py
16828
0644
edit
dl
rm
importer.py
1789
0644
edit
dl
rm
log.py
4432
0644
edit
dl
rm
netinfo.py
23115
0644
edit
dl
rm
patcher.py
1130
0644
edit
dl
rm
persistence.py
2605
0644
edit
dl
rm
registry.py
1045
0644
edit
dl
rm
safeyaml.py
7905
0644
edit
dl
rm
settings.py
2041
0644
edit
dl
rm
signal_handler.py
1826
0644
edit
dl
rm
simpletable.py
1976
0644
edit
dl
rm
ssh_util.py
21211
0644
edit
dl
rm
stages.py
35311
0644
edit
dl
rm
subp.py
13558
0644
edit
dl
rm
templater.py
5965
0644
edit
dl
rm
temp_utils.py
3268
0644
edit
dl
rm
type_utils.py
726
0644
edit
dl
rm
url_helper.py
28628
0644
edit
dl
rm
user_data.py
14841
0644
edit
dl
rm
util.py
92622
0644
edit
dl
rm
version.py
596
0644
edit
dl
rm
warnings.py
3932
0644
edit
dl
rm
__init__.py
0
0644
edit
dl
rm
Edit:
/snap/core18/2999/usr/lib/python3/dist-packages/cloudinit/temp_utils.py
(3268B)
# This file is part of cloud-init. See LICENSE file for license information. import contextlib import errno import os import shutil import tempfile from cloudinit import log as logging from cloudinit import util LOG = logging.getLogger(__name__) _TMPDIR = None _ROOT_TMPDIR = "/run/cloud-init/tmp" _EXE_ROOT_TMPDIR = "/var/tmp/cloud-init" def get_tmp_ancestor(odir=None, needs_exe: bool = False): if odir is not None: return odir if needs_exe: return _EXE_ROOT_TMPDIR if _TMPDIR: return _TMPDIR if os.getuid() == 0: return _ROOT_TMPDIR return os.environ.get("TMPDIR", "/tmp") def _tempfile_dir_arg(odir=None, needs_exe: bool = False): """Return the proper 'dir' argument for tempfile functions. When root, cloud-init will use /run/cloud-init/tmp to avoid any cleaning that a distro boot might do on /tmp (such as systemd-tmpfiles-clean). If the caller of this function (mkdtemp or mkstemp) was provided with a 'dir' argument, then that is respected. @param odir: original 'dir' arg to 'mkdtemp' or other. @param needs_exe: Boolean specifying whether or not exe permissions are needed for tempdir. This is needed because /run is mounted noexec. """ tdir = get_tmp_ancestor(odir, needs_exe) if not os.path.isdir(tdir): os.makedirs(tdir) os.chmod(tdir, 0o1777) if needs_exe: if util.has_mount_opt(tdir, "noexec"): LOG.warning( "Requested temporal dir with exe permission `%s` is" " mounted as noexec", tdir, ) if odir is None and not needs_exe: global _TMPDIR _TMPDIR = tdir return tdir def ExtendedTemporaryFile(**kwargs): kwargs["dir"] = _tempfile_dir_arg( kwargs.pop("dir", None), kwargs.pop("needs_exe", False) ) fh = tempfile.NamedTemporaryFile(**kwargs) # Replace its unlink with a quiet version # that does not raise errors when the # file to unlink has been unlinked elsewhere.. def _unlink_if_exists(path): try: os.unlink(path) except OSError as e: if e.errno != errno.ENOENT: raise e fh.unlink = _unlink_if_exists # Add a new method that will unlink # right 'now' but still lets the exit # method attempt to remove it (which will # not throw due to our del file being quiet # about files that are not there) def unlink_now(): fh.unlink(fh.name) setattr(fh, "unlink_now", unlink_now) return fh @contextlib.contextmanager def tempdir(rmtree_ignore_errors=False, **kwargs): # This seems like it was only added in python 3.2 # Make it since its useful... # See: http://bugs.python.org/file12970/tempdir.patch tdir = mkdtemp(**kwargs) try: yield tdir finally: shutil.rmtree(tdir, ignore_errors=rmtree_ignore_errors) def mkdtemp(dir=None, needs_exe: bool = False, **kwargs): dir = _tempfile_dir_arg(dir, needs_exe) return tempfile.mkdtemp(dir=dir, **kwargs) def mkstemp(dir=None, needs_exe: bool = False, **kwargs): dir = _tempfile_dir_arg(dir, needs_exe) return tempfile.mkstemp(dir=dir, **kwargs) # vi: ts=4 expandtab
Save
cmd:
run