diff options
author | Georg Pfuetzenreuter | 2022-05-08 04:16:19 +0200 |
---|---|---|
committer | Georg Pfuetzenreuter | 2022-05-08 04:16:19 +0200 |
commit | f105d0e1ab01fca7a04f54a8cacf6372a5b2d6c0 (patch) | |
tree | 3aa606b8f504acfece71f3cc2476b32afac0d42d /src/main/java/net/libertacasa/pubsh/web/Docker.java | |
parent | 67ead5b62d0b1291bde0b49ac602be7cdcf3d536 (diff) | |
download | pubsh-web-f105d0e1ab01fca7a04f54a8cacf6372a5b2d6c0.tar.gz pubsh-web-f105d0e1ab01fca7a04f54a8cacf6372a5b2d6c0.tar.bz2 pubsh-web-f105d0e1ab01fca7a04f54a8cacf6372a5b2d6c0.zip |
User/Admin logic
Signed-off-by: Georg Pfuetzenreuter <mail@georg-pfuetzenreuter.net>
Diffstat (limited to 'src/main/java/net/libertacasa/pubsh/web/Docker.java')
-rw-r--r-- | src/main/java/net/libertacasa/pubsh/web/Docker.java | 42 |
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); |