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); } } } } }
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); } } } } }
@Before public void setup() { Yaml yaml = new Yaml(); @SuppressWarnings("unchecked") Map<String, Object> content = (Map<String, Object>) yaml.load(CONTENT); when(cube.getId()).thenReturn(CUBE_ID); when(cube.configuration()).thenReturn(content); when(container.getName()).thenReturn(CUBE_ID); when(container.getDeployableContainer()).thenReturn(deployableContainer); when(deployableContainer.getConfigurationClass()).thenReturn(ContainerConfiguration.class); when(container.getContainerConfiguration()).thenReturn(containerDef); when(containerRegistry.getContainers()).thenReturn(Arrays.asList(container)); when(hasPortBindings.getContainerIP()).thenReturn("192.168.0.1"); registry = new LocalCubeRegistry(); registry.addCube(cube); bind(ApplicationScoped.class, CubeRegistry.class, registry); bind(ApplicationScoped.class, ContainerRegistry.class, containerRegistry); }
@Before public void setup() { Yaml yaml = new Yaml(); @SuppressWarnings("unchecked") Map<String, Object> content = (Map<String, Object>) yaml.load(CONTENT); when(cube.getId()).thenReturn(CUBE_ID); when(cube.configuration()).thenReturn(content); when(cube.getMetadata(HasPortBindings.class)).thenReturn( new TestPortBindings(new Binding("localhost").addPortBinding(8089, 8090))); when(container.getName()).thenReturn(CUBE_ID); when(container.getDeployableContainer()).thenReturn(deployableContainer); when(deployableContainer.getConfigurationClass()).thenReturn(ContainerConfiguration.class); when(container.getContainerConfiguration()).thenReturn(containerDef); when(containerRegistry.getContainers()).thenReturn(Arrays.asList(container)); registry = new LocalCubeRegistry(); registry.addCube(cube); bind(ApplicationScoped.class, CubeRegistry.class, registry); bind(ApplicationScoped.class, ContainerRegistry.class, containerRegistry); }
when(cube.configuration()).thenReturn(dockerConfiguration.getDockerContainersContent().get(CUBE_ID));
@Test public void should_remove_docker_image_if_built_by_cube() { DockerClientExecutor executor = Mockito.mock(DockerClientExecutor.class); String config = "pingpong:\n" + " buildImage:\n" + " dockerfileLocation: src/test/resources/tomcat\n" + " noCache: true\n" + " remove: true\n" + " exposedPorts: [8080/tcp]\n" + " portBindings: [8080->8080/tcp]\n"; Map<String, String> parameters = new HashMap<>(); parameters.put("dockerContainers", config); parameters.put("definitionFormat", DefinitionFormat.CUBE.name()); CubeConfiguration cubeConfiguration = CubeConfiguration.fromMap(new HashMap<String, String>()); bind(ApplicationScoped.class, CubeConfiguration.class, cubeConfiguration); CubeDockerConfiguration dockerConfiguration = CubeDockerConfiguration.fromMap(parameters, null); when(cube.getId()).thenReturn(CUBE_ID); when(cube.configuration()).thenReturn(dockerConfiguration.getDockerContainersContent().get(CUBE_ID)); bind(ApplicationScoped.class, CubeDockerConfiguration.class, dockerConfiguration); final LocalCubeRegistry localCubeRegistry = new LocalCubeRegistry(); localCubeRegistry.addCube(cube); bind(ApplicationScoped.class, CubeRegistry.class, localCubeRegistry); bind(ApplicationScoped.class, DockerClientExecutor.class, executor); fire(new AfterDestroy(CUBE_ID)); Mockito.verify(executor).removeImage("pingpong:latest", false); }
public void processCommands(@Observes org.arquillian.cube.spi.event.lifecycle.BeforeStop beforeStop, CubeRegistry cubeRegistry, DockerClientExecutor dockerClientExecutor) throws IOException { Cube<CubeContainer> cube = cubeRegistry.getCube(beforeStop.getCubeId(), DockerCube.class); CubeContainer configuration = cube.configuration(); if (configuration.getBeforeStop() != null) { Collection<BeforeStop> beforeStopConfiguration = configuration.getBeforeStop(); for (BeforeStop map : beforeStopConfiguration) { if (map.getCopy() != null) { Copy copyConfiguration = map.getCopy(); executeCopyAction(dockerClientExecutor, beforeStop.getCubeId(), copyConfiguration); } else { if (map.getLog() != null) { Log logConfiguration = map.getLog(); executeLogAction(dockerClientExecutor, beforeStop.getCubeId(), logConfiguration); } } if (map.getCustomBeforeStopAction() != null) { CustomBeforeStopAction customBeforeStopAction = map.getCustomBeforeStopAction(); executeCustomBeforeStopAction(dockerClientExecutor, beforeStop.getCubeId(), customBeforeStopAction); } } } }
public void processCommands(@Observes org.arquillian.cube.spi.event.lifecycle.BeforeStop beforeStop, CubeRegistry cubeRegistry, DockerClientExecutor dockerClientExecutor) throws IOException { Cube<CubeContainer> cube = cubeRegistry.getCube(beforeStop.getCubeId(), DockerCube.class); CubeContainer configuration = cube.configuration(); if (configuration.getBeforeStop() != null) { Collection<BeforeStop> beforeStopConfiguration = configuration.getBeforeStop(); for (BeforeStop map : beforeStopConfiguration) { if (map.getCopy() != null) { Copy copyConfiguration = map.getCopy(); executeCopyAction(dockerClientExecutor, beforeStop.getCubeId(), copyConfiguration); } else { if (map.getLog() != null) { Log logConfiguration = map.getLog(); executeLogAction(dockerClientExecutor, beforeStop.getCubeId(), logConfiguration); } } if (map.getCustomBeforeStopAction() != null) { CustomBeforeStopAction customBeforeStopAction = map.getCustomBeforeStopAction(); executeCustomBeforeStopAction(dockerClientExecutor, beforeStop.getCubeId(), customBeforeStopAction); } } } }