public boolean isTerminated(ContainerCreationStatus container) { Pod pod = client.pods().withName(container.getContainerName()).get(); if (pod == null) { logger.info("Container {} has no pod - terminal.", container); return true; } else { List<ContainerStatus> containerStatuses = pod.getStatus().getContainerStatuses(); Optional<ContainerStateTerminated> terminated = containerStatuses.stream() .flatMap(status -> Optional.ofNullable(status.getState()).map(Stream::of).orElse(Stream.empty())) .flatMap(state -> Optional.ofNullable(state.getTerminated()).map(Stream::of).orElse(Stream.empty())) .findFirst(); terminated.ifPresent(state -> logger.info("Container {} is {} - terminal.", container, state)); return terminated.isPresent(); } }
public ContainerStateBuilder(ContainerStateFluent<?> fluent,ContainerState instance,Boolean validationEnabled){ this.fluent = fluent; fluent.withRunning(instance.getRunning()); fluent.withTerminated(instance.getTerminated()); fluent.withWaiting(instance.getWaiting()); this.validationEnabled = validationEnabled; } public ContainerStateBuilder(ContainerState instance){
public ContainerStateBuilder( ContainerStateFluent<?> fluent , ContainerState instance ){ this.fluent = fluent; fluent.withRunning(instance.getRunning()); fluent.withTermination(instance.getTermination()); fluent.withWaiting(instance.getWaiting()); } public ContainerStateBuilder( ContainerState instance ){
ContainerStateRunning running = state.getRunning(); if (running != null) { cs.put("startedAt", state.getRunning().getStartedAt()); ContainerStateTerminated t = state.getTerminated(); if (t != null) { cs.put("finishedAt", t.getFinishedAt());
@Override public boolean test(ContainerStatus containerStatus) { return containerStatus.getLastState() != null && containerStatus.getState() != null && containerStatus.getLastState().getTerminated() != null && containerStatus.getState().getWaiting() != null && containerStatus.getState().getWaiting().getReason() != null && containerStatus.getState().getWaiting().getReason().contains("CrashLoopBackOff"); } });
protected static boolean isWaiting(List<ContainerStatus> containerStatuses) { for (ContainerStatus status : containerStatuses) { ContainerState state = status.getState(); if (state != null && state.getWaiting() != null) { return true; } } return false; }
public ContainerStateBuilder(){ this(new ContainerState()); } public ContainerStateBuilder( ContainerStateFluent<?> fluent ){
public ContainerStateFluentImpl(ContainerState instance){ this.withRunning(instance.getRunning()); this.withTerminated(instance.getTerminated()); this.withWaiting(instance.getWaiting()); }
public ContainerStateBuilder( ContainerStateFluent<?> fluent , ContainerState instance ){ this.fluent = fluent; fluent.withRunning(instance.getRunning()); fluent.withTermination(instance.getTermination()); fluent.withWaiting(instance.getWaiting()); } public ContainerStateBuilder( ContainerState instance ){
if (!containerStatuses.isEmpty() && containerStatuses.stream().allMatch(s -> s.getState().getRunning() != null && s.getState().getTerminated() == null)) { instance.setRunning(true);
for (ContainerStatus info : containerStatuses) { if (info != null) { if (info.getState().getWaiting() != null) { new Object[]{podId, info.getState().getWaiting(), info.getName()}); logger.printf("Container is waiting %1$s [%3$s]: %2$s%n", podId, info.getState().getWaiting(), info.getName()); if (info.getState().getTerminated() != null) { terminatedContainers.add(info); } else if (!info.getReady()) { .toMap(ContainerStatus::getName, (info) -> info.getState().getTerminated().getExitCode()));
static boolean hasPullImageError(ContainerStatus cs) { ContainerStateWaiting waiting = cs.getState().getWaiting(); return waiting != null && ( "PullImageError".equals(waiting.getReason()) || "ErrImagePull".equals(waiting.getReason()) || "ImagePullBackOff".equals(waiting.getReason())); }
public ContainerStateBuilder(Boolean validationEnabled){ this(new ContainerState(), validationEnabled); } public ContainerStateBuilder(ContainerStateFluent<?> fluent){
public ContainerStateBuilder(ContainerState instance,Boolean validationEnabled){ this.fluent = this; this.withRunning(instance.getRunning()); this.withTerminated(instance.getTerminated()); this.withWaiting(instance.getWaiting()); this.validationEnabled = validationEnabled; }
public ContainerStateBuilder( ContainerState instance ){ this.fluent = this; this.withRunning(instance.getRunning()); this.withTermination(instance.getTermination()); this.withWaiting(instance.getWaiting()); }
static boolean isTerminated(ContainerStatus cs) { return cs.getState().getTerminated() != null; }
if (!containerStatuses.isEmpty() && containerStatuses.stream().allMatch(s -> s.getState().getRunning() != null && s.getState().getTerminated() == null)) { instance.setRunning(true);
@Override public Boolean call() throws Exception { boolean result = true; List<Pod> pods = kubernetesClient.getPods(session.getNamespace()).getItems(); if (pods.isEmpty()) { result = false; session.getLogger().warn("No pods are available yet, waiting..."); } for (Pod pod : pods) { result = result && Objects.equal(PodStatus.OK, KubernetesHelper.getPodStatus(pod)); if (!result) { if (pod.getCurrentState().getInfo() != null) { for (Map.Entry<String, ContainerStatus> entry : pod.getCurrentState().getInfo().entrySet()) { String containerId = entry.getKey(); ContainerStatus status = entry.getValue(); if (status.getState().getWaiting() != null) { session.getLogger().warn("Waiting for container:" + containerId + ". Reason:" + status.getState().getWaiting().getReason()); } } } } } return result; }
public ContainerStateBuilder( ContainerStateFluent<?> fluent ){ this(fluent, new ContainerState()); } public ContainerStateBuilder( ContainerStateFluent<?> fluent , ContainerState instance ){
public ContainerStateBuilder( ContainerState instance ){ this.fluent = this; this.withRunning(instance.getRunning()); this.withTermination(instance.getTermination()); this.withWaiting(instance.getWaiting()); }