Search in sources :

Example 1 with ContainerDetails

use of org.eclipse.jkube.kit.build.api.model.ContainerDetails in project jkube by eclipse.

the class RunService method execInContainer.

/**
 * Create and start a Exec container with the given image configuration.
 * @param containerId container id to run exec command against
 * @param command command to execute
 * @param imageConfiguration configuration of the container's image
 * @return the exec container id
 *
 * @throws DockerAccessException if access to the docker backend fails
 * @throws ExecException if any problem faced during exec
 */
public String execInContainer(String containerId, String command, ImageConfiguration imageConfiguration) throws DockerAccessException, ExecException {
    Arguments arguments = new Arguments();
    arguments.setExec(Arrays.asList(EnvUtil.splitOnSpaceWithEscape(command)));
    String execContainerId = docker.createExecContainer(containerId, arguments);
    docker.startExecContainer(execContainerId, logConfig.createSpec(containerId, imageConfiguration));
    ExecDetails execContainer = docker.getExecContainer(execContainerId);
    Integer exitCode = execContainer.getExitCode();
    if (exitCode != null && exitCode != 0) {
        ContainerDetails container = docker.getContainer(containerId);
        throw new ExecException(execContainer, container);
    }
    return execContainerId;
}
Also used : ExecDetails(org.eclipse.jkube.kit.build.api.model.ExecDetails) ExecException(org.eclipse.jkube.kit.build.service.docker.access.ExecException) Arguments(org.eclipse.jkube.kit.config.image.build.Arguments) ContainerDetails(org.eclipse.jkube.kit.build.api.model.ContainerDetails)

Example 2 with ContainerDetails

use of org.eclipse.jkube.kit.build.api.model.ContainerDetails in project jkube by eclipse.

the class HealthCheckChecker method check.

@Override
public boolean check() {
    try {
        final ContainerDetails container = docker.getContainer(containerId);
        if (container == null) {
            log.debug("HealthWaitChecker: Container %s not found");
            return false;
        }
        if (container.getHealthcheck() == null) {
            throw new IllegalArgumentException("Can not wait for healthstate of " + imageConfigDesc + ". No HEALTHCHECK configured.");
        }
        if (first) {
            log.info("%s: Waiting to become healthy", imageConfigDesc);
            log.debug("HealthWaitChecker: Waiting for healthcheck: '%s'", container.getHealthcheck());
            first = false;
        } else if (log.isDebugEnabled()) {
            log.debug("HealthWaitChecker: Waiting on healthcheck '%s'", container.getHealthcheck());
        }
        return container.isHealthy();
    } catch (DockerAccessException e) {
        log.warn("Error while checking health: %s", e.getMessage());
        return false;
    }
}
Also used : DockerAccessException(org.eclipse.jkube.kit.build.service.docker.access.DockerAccessException) ContainerDetails(org.eclipse.jkube.kit.build.api.model.ContainerDetails)

Aggregations

ContainerDetails (org.eclipse.jkube.kit.build.api.model.ContainerDetails)2 ExecDetails (org.eclipse.jkube.kit.build.api.model.ExecDetails)1 DockerAccessException (org.eclipse.jkube.kit.build.service.docker.access.DockerAccessException)1 ExecException (org.eclipse.jkube.kit.build.service.docker.access.ExecException)1 Arguments (org.eclipse.jkube.kit.config.image.build.Arguments)1