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
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import com.github.dockerjava.api.command.InspectContainerCmd;
import com.github.dockerjava.api.command.InspectExecCmd;
import com.github.dockerjava.api.command.InspectImageCmd;
import com.github.dockerjava.api.command.ImageHistoryCmd;
import com.github.dockerjava.api.command.InspectNetworkCmd;
import com.github.dockerjava.api.command.InspectServiceCmd;
import com.github.dockerjava.api.command.InspectSwarmCmd;
Expand Down Expand Up @@ -142,6 +143,8 @@ public interface DockerClient extends Closeable {

InspectImageCmd inspectImageCmd(@Nonnull String imageId);

ImageHistoryCmd imageHistoryCmd(@Nonnull String imageId);

/**
* @param name
* The name, e.g. "alexec/busybox" or just "busybox" if you want to default. Not null.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import com.github.dockerjava.api.command.InspectContainerCmd;
import com.github.dockerjava.api.command.InspectExecCmd;
import com.github.dockerjava.api.command.InspectImageCmd;
import com.github.dockerjava.api.command.ImageHistoryCmd;
import com.github.dockerjava.api.command.InspectNetworkCmd;
import com.github.dockerjava.api.command.InspectServiceCmd;
import com.github.dockerjava.api.command.InspectSwarmCmd;
Expand Down Expand Up @@ -179,6 +180,11 @@ public InspectImageCmd inspectImageCmd(@Nonnull String imageId) {
return getDockerClient().inspectImageCmd(imageId);
}

@Override
public ImageHistoryCmd imageHistoryCmd(@Nonnull String imageId) {
return getDockerClient().imageHistoryCmd(imageId);
}

@Override
public SaveImageCmd saveImageCmd(@Nonnull String name) {
return getDockerClient().saveImageCmd(name);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,11 @@ public InspectImageCmd.Exec createInspectImageCmdExec() {
return getDockerCmdExecFactory().createInspectImageCmdExec();
}

@Override
public ImageHistoryCmd.Exec createImageHistoryCmdExec() {
return getDockerCmdExecFactory().createImageHistoryCmdExec();
}

@Override
public ListContainersCmd.Exec createListContainersCmdExec() {
return getDockerCmdExecFactory().createListContainersCmdExec();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ public interface DockerCmdExecFactory extends Closeable {

InspectImageCmd.Exec createInspectImageCmdExec();

ImageHistoryCmd.Exec createImageHistoryCmdExec();

ListContainersCmd.Exec createListContainersCmdExec();

CreateContainerCmd.Exec createCreateContainerCmdExec();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.github.dockerjava.api.command;

import java.util.List;

import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;

import com.github.dockerjava.api.exception.NotFoundException;
import com.github.dockerjava.api.model.ImageHistory;

/**
* Get the history of an image.
*/
public interface ImageHistoryCmd extends SyncDockerCmd<List<ImageHistory>> {

@CheckForNull
String getImageId();

ImageHistoryCmd withImageId(@Nonnull String imageId);

/**
* @throws NotFoundException
* No such image
*/
@Override
List<ImageHistory> exec() throws NotFoundException;

interface Exec extends DockerCmdSyncExec<ImageHistoryCmd, List<ImageHistory>> {
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
package com.github.dockerjava.api.model;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.EqualsAndHashCode;
import lombok.ToString;

import javax.annotation.CheckForNull;
import java.io.Serializable;
import java.util.List;

/**
* Represents an individual image layer information in response to the ImageHistory operation.
*/
@EqualsAndHashCode
@ToString
public class ImageHistory extends DockerObject implements Serializable {

private static final long serialVersionUID = 1L;

@JsonProperty("Id")
private String id;

@JsonProperty("Created")
private Long created;

@JsonProperty("CreatedBy")
private String createdBy;

@JsonProperty("Tags")
private List<String> tags;

@JsonProperty("Size")
private Long size;

@JsonProperty("Comment")
private String comment;

@CheckForNull
public String getId() {
return id;
}

public ImageHistory withId(String id) {
this.id = id;
return this;
}

@CheckForNull
public Long getCreated() {
return created;
}

public ImageHistory withCreated(Long created) {
this.created = created;
return this;
}

@CheckForNull
public String getCreatedBy() {
return createdBy;
}

public ImageHistory withCreatedBy(String createdBy) {
this.createdBy = createdBy;
return this;
}

@CheckForNull
public List<String> getTags() {
return tags;
}

public ImageHistory withTags(List<String> tags) {
this.tags = tags;
return this;
}

@CheckForNull
public Long getSize() {
return size;
}

public ImageHistory withSize(Long size) {
this.size = size;
return this;
}

@CheckForNull
public String getComment() {
return comment;
}

public ImageHistory withComment(String comment) {
this.comment = comment;
return this;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import com.github.dockerjava.api.command.InspectContainerCmd;
import com.github.dockerjava.api.command.InspectExecCmd;
import com.github.dockerjava.api.command.InspectImageCmd;
import com.github.dockerjava.api.command.ImageHistoryCmd;
import com.github.dockerjava.api.command.InspectNetworkCmd;
import com.github.dockerjava.api.command.InspectServiceCmd;
import com.github.dockerjava.api.command.InspectSwarmCmd;
Expand Down Expand Up @@ -113,6 +114,7 @@
import com.github.dockerjava.core.exec.InspectContainerCmdExec;
import com.github.dockerjava.core.exec.InspectExecCmdExec;
import com.github.dockerjava.core.exec.InspectImageCmdExec;
import com.github.dockerjava.core.exec.ImageHistoryCmdExec;
import com.github.dockerjava.core.exec.InspectNetworkCmdExec;
import com.github.dockerjava.core.exec.InspectServiceCmdExec;
import com.github.dockerjava.core.exec.InspectSwarmCmdExec;
Expand Down Expand Up @@ -281,6 +283,11 @@ public InspectImageCmd.Exec createInspectImageCmdExec() {
return new InspectImageCmdExec(getBaseResource(), getDockerClientConfig());
}

@Override
public ImageHistoryCmd.Exec createImageHistoryCmdExec() {
return new ImageHistoryCmdExec(getBaseResource(), getDockerClientConfig());
}

@Override
public ListContainersCmd.Exec createListContainersCmdExec() {
return new ListContainersCmdExec(getBaseResource(), getDockerClientConfig());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import com.github.dockerjava.api.command.InspectContainerCmd;
import com.github.dockerjava.api.command.InspectExecCmd;
import com.github.dockerjava.api.command.InspectImageCmd;
import com.github.dockerjava.api.command.ImageHistoryCmd;
import com.github.dockerjava.api.command.InspectNetworkCmd;
import com.github.dockerjava.api.command.InspectServiceCmd;
import com.github.dockerjava.api.command.InspectSwarmCmd;
Expand Down Expand Up @@ -113,6 +114,7 @@
import com.github.dockerjava.core.command.InspectContainerCmdImpl;
import com.github.dockerjava.core.command.InspectExecCmdImpl;
import com.github.dockerjava.core.command.InspectImageCmdImpl;
import com.github.dockerjava.core.command.ImageHistoryCmdImpl;
import com.github.dockerjava.core.command.InspectServiceCmdImpl;
import com.github.dockerjava.core.command.InspectSwarmCmdImpl;
import com.github.dockerjava.core.command.InspectVolumeCmdImpl;
Expand Down Expand Up @@ -375,6 +377,11 @@ public InspectImageCmd inspectImageCmd(String imageId) {
return new InspectImageCmdImpl(getDockerCmdExecFactory().createInspectImageCmdExec(), imageId);
}

@Override
public ImageHistoryCmd imageHistoryCmd(String imageId) {
return new ImageHistoryCmdImpl(getDockerCmdExecFactory().createImageHistoryCmdExec(), imageId);
}

/**
* * CONTAINER API *
*/
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package com.github.dockerjava.core.command;

import java.util.List;
import java.util.Objects;

import com.github.dockerjava.api.command.ImageHistoryCmd;
import com.github.dockerjava.api.exception.NotFoundException;
import com.github.dockerjava.api.model.ImageHistory;

/**
* Get the history of an image.
*/
public class ImageHistoryCmdImpl extends AbstrDockerCmd<ImageHistoryCmd, List<ImageHistory>> implements
ImageHistoryCmd {

private String imageId;

public ImageHistoryCmdImpl(ImageHistoryCmd.Exec exec, String imageId) {
super(exec);
withImageId(imageId);
}

@Override
public String getImageId() {
return imageId;
}

@Override
public ImageHistoryCmd withImageId(String imageId) {
this.imageId = Objects.requireNonNull(imageId, "imageId was not specified");
return this;
}

/**
* @throws NotFoundException
* No such image
*/
@Override
public List<ImageHistory> exec() throws NotFoundException {
return super.exec();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.github.dockerjava.core.exec;

import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.fasterxml.jackson.core.type.TypeReference;
import com.github.dockerjava.api.command.ImageHistoryCmd;
import com.github.dockerjava.api.model.ImageHistory;
import com.github.dockerjava.core.DockerClientConfig;
import com.github.dockerjava.core.MediaType;
import com.github.dockerjava.core.WebTarget;

public class ImageHistoryCmdExec extends AbstrSyncDockerCmdExec<ImageHistoryCmd, List<ImageHistory>> implements
ImageHistoryCmd.Exec {

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

public ImageHistoryCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) {
super(baseResource, dockerClientConfig);
}

@Override
protected List<ImageHistory> execute(ImageHistoryCmd command) {
WebTarget webResource = getBaseResource().path("/images/{id}/history").resolveTemplate("id",
command.getImageId());

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

return webResource.request().accept(MediaType.APPLICATION_JSON).get(new TypeReference<List<ImageHistory>>() {
});
}

}
Loading