Search in sources :

Example 1 with ExecDetails

use of org.eclipse.jkube.kit.build.api.model.ExecDetails 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)

Aggregations

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