cdsresponder/k8s/k8utils.py (16 lines of code) (raw):
import logging
from kubernetes import client
logger = logging.getLogger(__name__)
def get_current_namespace():
try:
with open("/var/run/secrets/kubernetes.io/serviceaccount/namespace") as f:
return f.read()
except IOError as e:
logger.debug("Could not open namespace secret file: {0}".format(e))
return None
def dump_pod_logs(pod_name:str, pod_namespace:str, filename:str)->int:
"""
writes the contents of the given pod logs to a file at filename.
can raise exceptions if either the read or write operations fail
:param pod_name: pod name whose logs to dump
:param pod_namespace: namespace the pod is in
:param filename: name of the file to write to
:return: number of bytes written
"""
corev1 = client.CoreV1Api()
with open(filename, "w") as f:
log_content = corev1.read_namespaced_pod_log(pod_name, pod_namespace)
logger.debug("Downloaded {0} bytes of log data from {1} in {2}".format(len(log_content), pod_name, pod_namespace))
return f.write(log_content)