package org.arquillian.cube.docker.impl.client; import org.arquillian.cube.docker.impl.client.config.CubeContainer; import org.arquillian.cube.docker.impl.docker.DockerClientExecutor; import org.arquillian.cube.spi.Cube; import org.arquillian.cube.spi.CubeRegistry; import org.arquillian.cube.spi.event.lifecycle.AfterDestroy; import org.jboss.arquillian.core.api.Instance; import org.jboss.arquillian.core.api.annotation.Inject; import org.jboss.arquillian.core.api.annotation.Observes; public class DockerImageController { private static final String TAG = ":latest"; @Inject private Instance<DockerClientExecutor> dockerClientExecutorInstance; public void removeImage(@Observes AfterDestroy event, CubeRegistry registry, CubeDockerConfiguration configuration) { if (configuration.isCleanBuildImage()) { String cubeId = event.getCubeId(); Cube cube = registry.getCube(cubeId); if (cube == null) { throw new IllegalArgumentException("No cube with id " + cubeId + " found in registry"); } if (cube.configuration() instanceof CubeContainer) { CubeContainer config = (CubeContainer) cube.configuration(); // removing image only if it's built by cube if (config.getBuildImage() != null) { String imageRef = event.getCubeId() + TAG; DockerClientExecutor executor = dockerClientExecutorInstance.get(); executor.removeImage(imageRef, false); } } } } }