下面列出了怎么用io.fabric8.kubernetes.api.model.ContainerState的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
public void eventReceived(io.fabric8.kubernetes.client.Watcher.Action action, Pod pod) {
log.info("Event received for pod: {}, action: {}", podName, action);
PodStatus status = pod.getStatus();
List<ContainerStatus> containerStatuses = status.getContainerStatuses();
if (!containerStatuses.isEmpty()) {
ContainerStatus containerStatus = containerStatuses.get(0);
ContainerState state = containerStatus.getState();
ContainerStateTerminated terminated = state.getTerminated();
if (terminated != null) {
Integer exitCode = terminated.getExitCode();
log.info("Container exit code for pod {}: {}", podName, exitCode);
if (exitCode == 0) {
exitCodeFuture.complete(0);
} else {
exitCodeFuture.completeExceptionally(new RuntimeException("Completed with non zero exit code: " + exitCode));
}
resource.delete();
watch.close();
} else {
log.warn("ContainerStateTerminated was null for pod: {}, action {}", podName, action);
}
} else {
log.warn("ContainerStatus list was empty for pod: {}, action {}", podName, action);
}
}
private static boolean isExited(Pod pod, Optional<ContainerStatus> mainContainerStatusOpt) {
switch (pod.getStatus().getPhase()) {
case "Running":
// Check if the main container has exited
if (mainContainerStatusOpt.map(ContainerStatus::getState)
.map(ContainerState::getTerminated)
.isPresent()) {
return true;
}
break;
case "Succeeded":
case "Failed":
return true;
default:
// do nothing
break;
}
return false;
}
private ContainerState terminatedStateWithExitCode(int exitCode) {
ContainerStateTerminated terminated = new ContainerStateTerminated();
terminated.setExitCode(exitCode);
ContainerState state = new ContainerState();
state.setTerminated(terminated);
return state;
}
private static ContainerState runningContainerState() {
return new ContainerState(new ContainerStateRunning("2016-05-30T09:46:48Z"), null, null);
}
static ContainerState terminatedContainerState(Integer exitCode, String message) {
return new ContainerState(null, new ContainerStateTerminated("", exitCode, "", message, "", 0, ""), null);
}
private static ContainerState waitingContainerState(String reason) {
return waitingContainerState(reason, "");
}
private static ContainerState waitingContainerState(String reason, String message) {
return new ContainerState(null, null, new ContainerStateWaiting(message, reason));
}