package org.csanchez.jenkins.plugins.kubernetes; import hudson.Functions; import hudson.model.TaskListener; import io.fabric8.kubernetes.api.model.Event; import io.fabric8.kubernetes.client.KubernetesClientException; import io.fabric8.kubernetes.client.Watcher; import java.io.PrintStream; import java.util.logging.Logger; import static java.util.logging.Level.FINE; import static java.util.logging.Level.WARNING; class TaskListenerEventWatcher implements Watcher<Event> { private static final Logger LOGGER = Logger.getLogger(TaskListenerEventWatcher.class.getName()); private final String name; private final TaskListener listener; public TaskListenerEventWatcher(String name, TaskListener listener) { this.name = name; this.listener = listener; } @Override public void eventReceived(Action action, Event event) { PrintStream logger = listener.getLogger(); // Messages can have multiple lines String[] lines = event.getMessage().split("\n"); for (String line : lines) { logger.printf("[%s][%s/%s][%s] %s%n", event.getType(), event.getInvolvedObject().getNamespace(), event.getInvolvedObject().getName(), event.getReason(), line); } } @Override public void onClose(KubernetesClientException cause) { String msg = String.format("%s onClose: %s", getClass().getSimpleName(), name); if (cause != null) { LOGGER.log(WARNING, msg, cause); Functions.printStackTrace(cause, listener.getLogger()); } else { LOGGER.log(FINE, msg); } } @Override public String toString() { return getClass().getSimpleName() + " [name=" + name + "]"; } }