Source code for custodian.utils
"""
Utility function and classes.
"""
import logging
import os
import tarfile
from glob import glob
[docs]def backup(filenames, prefix="error"):
"""
Backup files to a tar.gz file. Used, for example, in backing up the
files of an errored run before performing corrections.
Args:
filenames ([str]): List of files to backup. Supports wildcards, e.g.,
*.*.
prefix (str): prefix to the files. Defaults to error, which means a
series of error.1.tar.gz, error.2.tar.gz, ... will be generated.
"""
num = max([0] + [int(f.split(".")[1]) for f in glob(f"{prefix}.*.tar.gz")])
filename = f"{prefix}.{num + 1}.tar.gz"
logging.info(f"Backing up run to {filename}.")
with tarfile.open(filename, "w:gz") as tar:
for fname in filenames:
for f in glob(fname):
tar.add(f)
[docs]def get_execution_host_info():
"""
Tries to return a tuple describing the execution host.
Doesn't work for all queueing systems
Returns:
(HOSTNAME, CLUSTER_NAME)
"""
host = os.environ.get("HOSTNAME", None)
cluster = os.environ.get("SGE_O_HOST", None)
if host is None:
try:
import socket
host = host or socket.gethostname()
except Exception:
pass
return host or "unknown", cluster or "unknown"