X Tutup
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 5 additions & 32 deletions src/main/java/com/github/dockerjava/api/DockerClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,38 +2,7 @@

import java.io.*;

import com.github.dockerjava.api.command.AttachContainerCmd;
import com.github.dockerjava.api.command.AuthCmd;
import com.github.dockerjava.api.command.BuildImageCmd;
import com.github.dockerjava.api.command.CommitCmd;
import com.github.dockerjava.api.command.ContainerDiffCmd;
import com.github.dockerjava.api.command.CopyFileFromContainerCmd;
import com.github.dockerjava.api.command.CreateContainerCmd;
import com.github.dockerjava.api.command.CreateImageCmd;
import com.github.dockerjava.api.command.EventCallback;
import com.github.dockerjava.api.command.EventsCmd;
import com.github.dockerjava.api.command.InfoCmd;
import com.github.dockerjava.api.command.InspectContainerCmd;
import com.github.dockerjava.api.command.InspectImageCmd;
import com.github.dockerjava.api.command.KillContainerCmd;
import com.github.dockerjava.api.command.ListContainersCmd;
import com.github.dockerjava.api.command.ListImagesCmd;
import com.github.dockerjava.api.command.LogContainerCmd;
import com.github.dockerjava.api.command.PauseContainerCmd;
import com.github.dockerjava.api.command.PingCmd;
import com.github.dockerjava.api.command.PullImageCmd;
import com.github.dockerjava.api.command.PushImageCmd;
import com.github.dockerjava.api.command.RemoveContainerCmd;
import com.github.dockerjava.api.command.RemoveImageCmd;
import com.github.dockerjava.api.command.RestartContainerCmd;
import com.github.dockerjava.api.command.SearchImagesCmd;
import com.github.dockerjava.api.command.StartContainerCmd;
import com.github.dockerjava.api.command.StopContainerCmd;
import com.github.dockerjava.api.command.TagImageCmd;
import com.github.dockerjava.api.command.TopContainerCmd;
import com.github.dockerjava.api.command.UnpauseContainerCmd;
import com.github.dockerjava.api.command.VersionCmd;
import com.github.dockerjava.api.command.WaitContainerCmd;
import com.github.dockerjava.api.command.*;
import com.github.dockerjava.api.model.AuthConfig;

// https://godoc.org/github.com/fsouza/go-dockerclient
Expand Down Expand Up @@ -95,6 +64,8 @@ public CreateImageCmd createImageCmd(String repository,
*/
public StartContainerCmd startContainerCmd(String containerId);

public ExecCreateCmd execCreateCmd(String containerId);

public InspectContainerCmd inspectContainerCmd(String containerId);

public RemoveContainerCmd removeContainerCmd(String containerId);
Expand All @@ -103,6 +74,8 @@ public CreateImageCmd createImageCmd(String repository,

public AttachContainerCmd attachContainerCmd(String containerId);

public ExecStartCmd execStartCmd(String containerId);

public LogContainerCmd logContainerCmd(String containerId);

public CopyFileFromContainerCmd copyFileFromContainerCmd(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ public interface DockerCmdExecFactory extends Closeable {

public PingCmd.Exec createPingCmdExec();

public ExecCreateCmd.Exec createExecCmdExec();

public VersionCmd.Exec createVersionCmdExec();

public PullImageCmd.Exec createPullImageCmdExec();
Expand Down Expand Up @@ -45,6 +47,8 @@ public interface DockerCmdExecFactory extends Closeable {

public AttachContainerCmd.Exec createAttachContainerCmdExec();

public ExecStartCmd.Exec createExecStartCmdExec();

public LogContainerCmd.Exec createLogContainerCmdExec();

public CopyFileFromContainerCmd.Exec createCopyFileFromContainerCmdExec();
Expand Down
19 changes: 19 additions & 0 deletions src/main/java/com/github/dockerjava/api/command/ExecCreateCmd.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.github.dockerjava.api.command;

public interface ExecCreateCmd extends DockerCmd<ExecCreateCmdResponse> {

public String getContainerId();

public ExecCreateCmd withCmd(String... cmd);

public ExecCreateCmd attachStdin(boolean attachStdin);

public ExecCreateCmd attachStdout(boolean attachStdout);

public ExecCreateCmd attachStderr(boolean attachStderr);

public ExecCreateCmd tty(boolean tty);

public static interface Exec extends DockerCmdExec<ExecCreateCmd, ExecCreateCmdResponse> {
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.github.dockerjava.api.command;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;

@JsonIgnoreProperties(ignoreUnknown = true)
public class ExecCreateCmdResponse {

@JsonProperty("Id")
private String id;

public String getId() {
return id;
}
}
22 changes: 22 additions & 0 deletions src/main/java/com/github/dockerjava/api/command/ExecStartCmd.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.github.dockerjava.api.command;

import com.github.dockerjava.api.NotFoundException;

import java.io.InputStream;

public interface ExecStartCmd extends DockerCmd<InputStream>{

public String getContainerId();

public boolean isDetach();

public boolean isTty();

/**
* @throws com.github.dockerjava.api.NotFoundException No such container
*/
@Override
public InputStream exec() throws NotFoundException;

public static interface Exec extends DockerCmdExec<ExecStartCmd, InputStream> {}
}
10 changes: 10 additions & 0 deletions src/main/java/com/github/dockerjava/core/DockerClientImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,11 @@ public InspectContainerCmd inspectContainerCmd(String containerId) {
return new InspectContainerCmdImpl(getDockerCmdExecFactory().createInspectContainerCmdExec(), containerId);
}

@Override
public ExecCreateCmd execCreateCmd(String containerId) {
return new ExecCreateCmdImpl(getDockerCmdExecFactory().createExecCmdExec(), containerId);
}

@Override
public RemoveContainerCmd removeContainerCmd(String containerId) {
return new RemoveContainerCmdImpl(getDockerCmdExecFactory().createRemoveContainerCmdExec(), containerId);
Expand All @@ -208,6 +213,11 @@ public AttachContainerCmd attachContainerCmd(String containerId) {
return new AttachContainerCmdImpl(getDockerCmdExecFactory().createAttachContainerCmdExec(), containerId);
}

@Override
public ExecStartCmd execStartCmd(String containerId) {
return new ExecStartCmdImpl(getDockerCmdExecFactory().createExecStartCmdExec(), containerId);
}

@Override
public LogContainerCmd logContainerCmd(String containerId) {
return new LogContainerCmdImpl(getDockerCmdExecFactory().createLogContainerCmdExec(), containerId);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package com.github.dockerjava.core.command;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.github.dockerjava.api.NotFoundException;
import com.github.dockerjava.api.command.ExecCreateCmd;
import com.github.dockerjava.api.command.ExecCreateCmdResponse;

public class ExecCreateCmdImpl extends AbstrDockerCmd<ExecCreateCmd, ExecCreateCmdResponse> implements ExecCreateCmd {

private String containerId;

@JsonProperty("AttachStdin")
private boolean attachStdin;

@JsonProperty("AttachStdout")
private boolean attachStdout;

@JsonProperty("AttachStderr")
private boolean attachStderr;

@JsonProperty("Tty")
private boolean tty;

@JsonProperty("Cmd")
private String[] cmd;

public ExecCreateCmdImpl(ExecCreateCmd.Exec exec, String containerId) {
super(exec);
this.containerId = containerId;
}

public ExecCreateCmd attachStdin(boolean attachStdin) {
this.attachStdin = attachStdin;
return this;
}

public ExecCreateCmd attachStdout(boolean attachStdout) {
this.attachStdout = attachStdout;
return this;
}

public ExecCreateCmd tty(boolean tty) {
this.tty = tty;
return this;
}

public ExecCreateCmd attachStderr(boolean attachStderr) {
this.attachStderr = attachStderr;
return this;
}

public ExecCreateCmd withCmd(String... cmd) {
this.cmd = cmd;
return this;
}

@Override
public String getContainerId() {
return containerId;
}

/**
* @throws NotFoundException No such container
*/
@Override
public ExecCreateCmdResponse exec() throws NotFoundException {
return super.exec();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package com.github.dockerjava.core.command;

import com.github.dockerjava.api.NotFoundException;
import com.github.dockerjava.api.command.ExecStartCmd;
import com.google.common.base.Preconditions;

import java.io.InputStream;

public class ExecStartCmdImpl extends AbstrDockerCmd<ExecStartCmd, InputStream> implements ExecStartCmd {

private String containerId;

private boolean detach, tty;

public ExecStartCmdImpl(ExecStartCmd.Exec exec, String containerId) {
super(exec);
Preconditions.checkNotNull(containerId, "containerId was not specified");
this.containerId = containerId;
}

@Override
public String getContainerId() {
return containerId;
}

@Override
public boolean isDetach() {
return detach;
}

@Override
public boolean isTty() {
return tty;
}

/**
* @throws com.github.dockerjava.api.NotFoundException No such container
*/
@Override
public InputStream exec() throws NotFoundException {
return super.exec();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,12 @@
import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
import com.github.dockerjava.api.DockerClientException;
import com.github.dockerjava.api.command.*;
import com.github.dockerjava.core.CertificateUtils;
import com.github.dockerjava.core.DockerClientConfig;
import com.github.dockerjava.jaxrs.util.JsonClientFilter;
import com.github.dockerjava.jaxrs.util.ResponseStatusExceptionFilter;
import com.github.dockerjava.jaxrs.util.SelectiveLoggingFilter;
import com.google.common.base.Preconditions;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.glassfish.jersey.CommonProperties;
import org.glassfish.jersey.SslConfigurator;
import org.glassfish.jersey.client.ClientConfig;
import org.glassfish.jersey.client.ClientProperties;

Expand All @@ -20,8 +17,6 @@
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.WebTarget;
import java.io.IOException;
import java.security.KeyStore;
import java.security.Security;
import java.util.logging.Logger;

public class DockerCmdExecFactoryImpl implements DockerCmdExecFactory {
Expand Down Expand Up @@ -154,6 +149,11 @@ public InspectContainerCmd.Exec createInspectContainerCmdExec() {
return new InspectContainerCmdExec(getBaseResource());
}

@Override
public ExecCreateCmd.Exec createExecCmdExec() {
return new ExecCreateCmdExec(getBaseResource());
}

@Override
public RemoveContainerCmd.Exec createRemoveContainerCmdExec() {
return new RemoveContainerCmdExec(getBaseResource());
Expand All @@ -169,6 +169,11 @@ public AttachContainerCmd.Exec createAttachContainerCmdExec() {
return new AttachContainerCmdExec(getBaseResource());
}

@Override
public ExecStartCmd.Exec createExecStartCmdExec() {
return new ExecStartCmdExec(getBaseResource());
}

@Override
public LogContainerCmd.Exec createLogContainerCmdExec() {
return new LogContainerCmdExec(getBaseResource());
Expand Down
30 changes: 30 additions & 0 deletions src/main/java/com/github/dockerjava/jaxrs/ExecCreateCmdExec.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.github.dockerjava.jaxrs;

import com.github.dockerjava.api.command.ExecCreateCmd;
import com.github.dockerjava.api.command.ExecCreateCmdResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;

import static javax.ws.rs.client.Entity.entity;

public class ExecCreateCmdExec extends AbstrDockerCmdExec<ExecCreateCmd, ExecCreateCmdResponse> implements ExecCreateCmd.Exec {

private static final Logger LOGGER = LoggerFactory
.getLogger(VersionCmdExec.class);

public ExecCreateCmdExec(WebTarget baseResource) {
super(baseResource);
}

@Override
protected ExecCreateCmdResponse execute(ExecCreateCmd command) {
WebTarget webResource = getBaseResource().path("/containers/{id}/exec").resolveTemplate("id", command.getContainerId());

LOGGER.trace("POST: {}", webResource);

return webResource.request().accept(MediaType.APPLICATION_JSON).post(entity(command, MediaType.APPLICATION_JSON), ExecCreateCmdResponse.class);
}
}
31 changes: 31 additions & 0 deletions src/main/java/com/github/dockerjava/jaxrs/ExecStartCmdExec.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.github.dockerjava.jaxrs;

import com.github.dockerjava.api.command.ExecStartCmd;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.io.InputStream;

import static javax.ws.rs.client.Entity.entity;

public class ExecStartCmdExec extends AbstrDockerCmdExec<ExecStartCmd, InputStream> implements ExecStartCmd.Exec {

private static final Logger LOGGER = LoggerFactory.getLogger(ExecStartCmdExec.class);

public ExecStartCmdExec(WebTarget baseResource) {
super(baseResource);
}


@Override
protected InputStream execute(ExecStartCmd command) {
WebTarget webResource = getBaseResource().path("/exec/{id}/start").resolveTemplate("id", command.getContainerId());

LOGGER.trace("POST: {}", webResource);

return webResource.request().accept(MediaType.APPLICATION_JSON).post(entity(command, MediaType.APPLICATION_JSON), Response.class).readEntity(InputStream.class);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,7 @@ public StartContainerCmdExec(WebTarget baseResource) {

@Override
protected Void execute(StartContainerCmd command) {
WebTarget webResource = getBaseResource().path("/containers/{id}/start")
.resolveTemplate("id", command.getContainerId());
WebTarget webResource = getBaseResource().path("/containers/{id}/start").resolveTemplate("id", command.getContainerId());

LOGGER.trace("POST: {}", webResource);
webResource.request().accept(MediaType.APPLICATION_JSON).post(entity(command, MediaType.APPLICATION_JSON));
Expand Down
Loading
X Tutup