summaryrefslogtreecommitdiffstats
path: root/src/main/java/net/libertacasa/pubsh/web/Docker.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/net/libertacasa/pubsh/web/Docker.java')
-rw-r--r--src/main/java/net/libertacasa/pubsh/web/Docker.java42
1 files changed, 33 insertions, 9 deletions
diff --git a/src/main/java/net/libertacasa/pubsh/web/Docker.java b/src/main/java/net/libertacasa/pubsh/web/Docker.java
index ccac8bf..00341a6 100644
--- a/src/main/java/net/libertacasa/pubsh/web/Docker.java
+++ b/src/main/java/net/libertacasa/pubsh/web/Docker.java
@@ -6,11 +6,14 @@ import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import com.github.dockerjava.api.DockerClient;
import com.github.dockerjava.api.command.BuildImageResultCallback;
import com.github.dockerjava.api.command.CreateContainerResponse;
+import com.github.dockerjava.api.command.ListContainersCmd;
+import com.github.dockerjava.api.command.ListImagesCmd;
import com.github.dockerjava.api.command.WaitContainerResultCallback;
import com.github.dockerjava.api.model.Image;
import com.github.dockerjava.core.DefaultDockerClientConfig;
@@ -44,15 +47,28 @@ public class Docker {
return imageList;
}
- public static List<Image> getImages() {
+ public static List<Image> getImages(String name) {
List<Image> imageQuery;
- imageQuery = dockerClient.listImagesCmd().exec();
+ ListImagesCmd imageQueryCmd = dockerClient.listImagesCmd();
+
+ if (name != null) {
+ imageQueryCmd.getFilters().put("reference", Arrays.asList(name + "*")); //to-do: filter by nameshX instead
+ }
+
+ imageQuery = imageQueryCmd.exec();
return imageQuery;
- }
+ }
- public static List<com.github.dockerjava.api.model.Container> getContainers() {
- List<com.github.dockerjava.api.model.Container> containerQuery;
- containerQuery = dockerClient.listContainersCmd().withShowAll(true).exec();
+ public static List<com.github.dockerjava.api.model.Container> getContainers(String name) {
+ List<com.github.dockerjava.api.model.Container> containerQuery;
+ ListContainersCmd containerQueryCmd = dockerClient.listContainersCmd();
+
+ if (name != null) {
+ containerQueryCmd.getFilters().put("name", Arrays.asList(name + "*"));
+ }
+
+ containerQuery = containerQueryCmd.withShowAll(true).exec();
+
return containerQuery;
}
@@ -99,11 +115,19 @@ public class Docker {
}
public static void deleteImage(String username, String id) {
- List<Image> imagequery = Docker.getImages();
+ List<Image> imagequery = Docker.getImages(null);
if (imagequery.toString().contains(id)) {
- System.out.printf("Found image ID %s, deleting ...\n", id);
- dockerClient.removeImageCmd(id).withImageId(id).exec();
+ try {
+ System.out.printf("Found image ID %s, deleting ...\n", id);
+ dockerClient.removeImageCmd(id).withImageId(id).exec();
+ } catch (com.github.dockerjava.api.exception.ConflictException exception) {
+ System.out.println("Image is still being used by a container.");
+ throw exception;
+ }
+ //needs to wait for callback, but there is none
+ //System.out.printf("%s", removeQuery);
+
}
if (! imagequery.toString().contains(id)) {
System.out.printf("Image ID %s not found.\n", id);