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.java51
1 files changed, 40 insertions, 11 deletions
diff --git a/src/main/java/net/libertacasa/pubsh/web/Docker.java b/src/main/java/net/libertacasa/pubsh/web/Docker.java
index 9621978..a889703 100644
--- a/src/main/java/net/libertacasa/pubsh/web/Docker.java
+++ b/src/main/java/net/libertacasa/pubsh/web/Docker.java
@@ -11,11 +11,11 @@ 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.InspectContainerResponse;
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.api.model.SearchItem;
import com.github.dockerjava.core.DefaultDockerClientConfig;
import com.github.dockerjava.core.DockerClientConfig;
import com.github.dockerjava.core.DockerClientImpl;
@@ -74,7 +74,7 @@ public class Docker {
public static void deleteContainer(String id) {
Collection<String> stringifiedId = Arrays.asList(id);
- System.out.println(id);
+ //System.out.println(id);
System.out.println(stringifiedId);
List<com.github.dockerjava.api.model.Container> containerQuery = dockerClient.listContainersCmd().withShowAll(false).withIdFilter(stringifiedId).exec();
//apparently listContainersCmd returns a bunch of garbled crap, hence the less ideal toString/contains
@@ -93,7 +93,6 @@ public class Docker {
dockerClient.stopContainerCmd(id).exec();
}
- //System.out.println(containerQuery);
dockerClient.removeContainerCmd(id).exec();
}
@@ -135,10 +134,15 @@ public class Docker {
}
- public static String createContainer(String imgid) {
+ public static String createContainer(String name, String imgid) {
//String containerid = dockerClient.createContainerCmd(imgid).exec();
WaitContainerResultCallback resultCallback = new WaitContainerResultCallback();
- CreateContainerResponse createContainerResponse = dockerClient.createContainerCmd(imgid).exec();
+ CreateContainerResponse createContainerResponse = dockerClient
+ .createContainerCmd(imgid)
+ .withName(name)
+ .withTty(true)
+ .withAttachStdin(true)
+ .exec();
dockerClient.waitContainerCmd(createContainerResponse.getId()).exec(resultCallback);
try {
resultCallback.awaitCompletion();
@@ -153,24 +157,49 @@ public class Docker {
return(containerid);
}
- public static String deleteShell(String user, String id) {
+ public static String createShell(String user, String os, Integer count) {
+ String name1 = user + "_" + os;
+ String name = name1 + "_" + count;
+ String imageid = null;
+ List<Image> imageQuery = Docker.getImages(user + ":" + os);
+
+ System.out.printf("Image query: %s\n", imageQuery);
+
+ if (imageQuery.isEmpty()) {
+ System.out.println("No result, building new image.\n");
+ imageid = Docker.buildImage(user, os, count);
+ }
+ if (! imageQuery.isEmpty()) {
+ System.out.println("Found existing image.\n");
+ Image image = imageQuery.get(0);
+ imageid = image.getId();
+ }
+
+ String containerid = createContainer(name, imageid);
+ System.out.printf("Initialized shell with image ID %s and container ID %s\n", imageid, containerid);
+ return(containerid);
+ }
+
+ public static Integer deleteShell(String user, String id) {
Docker.deleteContainer(id);
List<Image> images = Docker.getImages(user);
for (Image image : images) {
- System.out.println(image.getLabels());
String imageid = image.getId();
System.out.println(imageid);
try {
+ try {
+ Thread.sleep(200);
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
Docker.deleteImage(imageid);
System.out.println("Removed.");
} catch (com.github.dockerjava.api.exception.ConflictException exception) {
System.out.println("Still being used, skipping.");
}
-
-
}
-
- return("foo");
+ return(null);
}
}