Skip to content

Commit 376acc7

Browse files
author
markramach
committed
list image history cmd
1 parent f9a8c46 commit 376acc7

11 files changed

Lines changed: 365 additions & 48 deletions

src/main/java/com/github/dockerjava/api/DockerClient.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import com.github.dockerjava.api.command.InspectVolumeCmd;
3333
import com.github.dockerjava.api.command.KillContainerCmd;
3434
import com.github.dockerjava.api.command.ListContainersCmd;
35+
import com.github.dockerjava.api.command.ListImageHistoryCmd;
3536
import com.github.dockerjava.api.command.ListImagesCmd;
3637
import com.github.dockerjava.api.command.ListNetworksCmd;
3738
import com.github.dockerjava.api.command.ListVolumesCmd;
@@ -45,6 +46,7 @@
4546
import com.github.dockerjava.api.command.RemoveImageCmd;
4647
import com.github.dockerjava.api.command.RemoveNetworkCmd;
4748
import com.github.dockerjava.api.command.RemoveVolumeCmd;
49+
import com.github.dockerjava.api.command.RenameContainerCmd;
4850
import com.github.dockerjava.api.command.RestartContainerCmd;
4951
import com.github.dockerjava.api.command.SaveImageCmd;
5052
import com.github.dockerjava.api.command.SearchImagesCmd;
@@ -57,7 +59,6 @@
5759
import com.github.dockerjava.api.command.UpdateContainerCmd;
5860
import com.github.dockerjava.api.command.VersionCmd;
5961
import com.github.dockerjava.api.command.WaitContainerCmd;
60-
import com.github.dockerjava.api.command.RenameContainerCmd;
6162
import com.github.dockerjava.api.exception.DockerException;
6263
import com.github.dockerjava.api.model.AuthConfig;
6364
import com.github.dockerjava.api.model.Identifier;
@@ -255,6 +256,8 @@ public interface DockerClient extends Closeable {
255256

256257
DisconnectFromNetworkCmd disconnectFromNetworkCmd();
257258

259+
ListImageHistoryCmd listImageHistoryCmd(@Nonnull String imageId);
260+
258261
@Override
259262
void close() throws IOException;
260263

src/main/java/com/github/dockerjava/api/command/DockerCmdExecFactory.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,8 @@ public interface DockerCmdExecFactory extends Closeable {
117117

118118
DisconnectFromNetworkCmd.Exec createDisconnectFromNetworkCmdExec();
119119

120+
ListImageHistoryCmd.Exec createListImageHistoryCmdExec();
121+
120122
@Override
121123
void close() throws IOException;
122124

Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
package com.github.dockerjava.api.command;
2+
3+
import org.apache.commons.lang.builder.EqualsBuilder;
4+
import org.apache.commons.lang.builder.HashCodeBuilder;
5+
import org.apache.commons.lang.builder.ToStringBuilder;
6+
7+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
8+
import com.fasterxml.jackson.annotation.JsonProperty;
9+
10+
import javax.annotation.CheckForNull;
11+
import java.util.List;
12+
13+
/**
14+
*
15+
* @author mramach
16+
*
17+
*/
18+
@JsonIgnoreProperties(ignoreUnknown = true)
19+
public class LayerHistory {
20+
21+
@JsonProperty("Comment")
22+
private String comment;
23+
24+
@JsonProperty("Created")
25+
private String created;
26+
27+
@JsonProperty("CreatedBy")
28+
private String createdBy;
29+
30+
@JsonProperty("Id")
31+
private String id;
32+
33+
@JsonProperty("Size")
34+
private Long size;
35+
36+
@JsonProperty("Tags")
37+
private List<String> tags;
38+
39+
/**
40+
* @see #comment
41+
*/
42+
@CheckForNull
43+
public String getComment() {
44+
return comment;
45+
}
46+
47+
/**
48+
* @see #comment
49+
*/
50+
public LayerHistory withComment(String comment) {
51+
this.comment = comment;
52+
return this;
53+
}
54+
55+
/**
56+
* @see #created
57+
*/
58+
@CheckForNull
59+
public String getCreated() {
60+
return created;
61+
}
62+
63+
/**
64+
* @see #created
65+
*/
66+
public LayerHistory withCreated(String created) {
67+
this.created = created;
68+
return this;
69+
}
70+
71+
/**
72+
* @see #createdBy
73+
*/
74+
@CheckForNull
75+
public String getCreatedBy() {
76+
return createdBy;
77+
}
78+
79+
/**
80+
* @see #createdBy
81+
*/
82+
public LayerHistory withCreatedBy(String createdBy) {
83+
this.createdBy = createdBy;
84+
return this;
85+
}
86+
87+
/**
88+
* @see #id
89+
*/
90+
@CheckForNull
91+
public String getId() {
92+
return id;
93+
}
94+
95+
/**
96+
* @see #id
97+
*/
98+
public LayerHistory withId(String id) {
99+
this.id = id;
100+
return this;
101+
}
102+
103+
/**
104+
* @see #repoTags
105+
*/
106+
@CheckForNull
107+
public List<String> getTags() {
108+
return tags;
109+
}
110+
111+
/**
112+
* @see #repoTags
113+
*/
114+
public LayerHistory withTags(List<String> tags) {
115+
this.tags = tags;
116+
return this;
117+
}
118+
119+
/**
120+
* @see #size
121+
*/
122+
@CheckForNull
123+
public Long getSize() {
124+
return size;
125+
}
126+
127+
/**
128+
* @see #size
129+
*/
130+
public LayerHistory withSize(Long size) {
131+
this.size = size;
132+
return this;
133+
}
134+
135+
@Override
136+
public String toString() {
137+
return ToStringBuilder.reflectionToString(this);
138+
}
139+
140+
@Override
141+
public boolean equals(Object o) {
142+
return EqualsBuilder.reflectionEquals(this, o);
143+
}
144+
145+
@Override
146+
public int hashCode() {
147+
return HashCodeBuilder.reflectionHashCode(this);
148+
}
149+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.github.dockerjava.api.command;
2+
3+
import java.util.List;
4+
5+
import javax.annotation.CheckForNull;
6+
import javax.annotation.Nonnull;
7+
8+
import com.github.dockerjava.api.exception.NotFoundException;
9+
10+
/**
11+
* Inspect the details of an image.
12+
*/
13+
public interface ListImageHistoryCmd extends SyncDockerCmd<List<LayerHistory>> {
14+
15+
@CheckForNull
16+
String getImageId();
17+
18+
ListImageHistoryCmd withImageId(@Nonnull String imageId);
19+
20+
/**
21+
* @throws NotFoundException
22+
* No such image
23+
*/
24+
@Override
25+
List<LayerHistory> exec() throws NotFoundException;
26+
27+
interface Exec extends DockerCmdSyncExec<ListImageHistoryCmd, List<LayerHistory>> {
28+
}
29+
30+
}

src/main/java/com/github/dockerjava/core/DockerClientImpl.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import java.io.IOException;
88
import java.io.InputStream;
99

10+
import javax.annotation.Nonnull;
11+
1012
import com.github.dockerjava.api.DockerClient;
1113
import com.github.dockerjava.api.command.AttachContainerCmd;
1214
import com.github.dockerjava.api.command.AuthCmd;
@@ -34,6 +36,7 @@
3436
import com.github.dockerjava.api.command.InspectVolumeCmd;
3537
import com.github.dockerjava.api.command.KillContainerCmd;
3638
import com.github.dockerjava.api.command.ListContainersCmd;
39+
import com.github.dockerjava.api.command.ListImageHistoryCmd;
3740
import com.github.dockerjava.api.command.ListImagesCmd;
3841
import com.github.dockerjava.api.command.ListNetworksCmd;
3942
import com.github.dockerjava.api.command.ListVolumesCmd;
@@ -47,6 +50,7 @@
4750
import com.github.dockerjava.api.command.RemoveImageCmd;
4851
import com.github.dockerjava.api.command.RemoveNetworkCmd;
4952
import com.github.dockerjava.api.command.RemoveVolumeCmd;
53+
import com.github.dockerjava.api.command.RenameContainerCmd;
5054
import com.github.dockerjava.api.command.RestartContainerCmd;
5155
import com.github.dockerjava.api.command.SaveImageCmd;
5256
import com.github.dockerjava.api.command.SearchImagesCmd;
@@ -59,7 +63,6 @@
5963
import com.github.dockerjava.api.command.UpdateContainerCmd;
6064
import com.github.dockerjava.api.command.VersionCmd;
6165
import com.github.dockerjava.api.command.WaitContainerCmd;
62-
import com.github.dockerjava.api.command.RenameContainerCmd;
6366
import com.github.dockerjava.api.model.AuthConfig;
6467
import com.github.dockerjava.api.model.Identifier;
6568
import com.github.dockerjava.core.command.AttachContainerCmdImpl;
@@ -87,6 +90,7 @@
8790
import com.github.dockerjava.core.command.InspectVolumeCmdImpl;
8891
import com.github.dockerjava.core.command.KillContainerCmdImpl;
8992
import com.github.dockerjava.core.command.ListContainersCmdImpl;
93+
import com.github.dockerjava.core.command.ListImageHistoryCmdImpl;
9094
import com.github.dockerjava.core.command.ListImagesCmdImpl;
9195
import com.github.dockerjava.core.command.ListNetworksCmdImpl;
9296
import com.github.dockerjava.core.command.ListVolumesCmdImpl;
@@ -100,6 +104,7 @@
100104
import com.github.dockerjava.core.command.RemoveImageCmdImpl;
101105
import com.github.dockerjava.core.command.RemoveNetworkCmdImpl;
102106
import com.github.dockerjava.core.command.RemoveVolumeCmdImpl;
107+
import com.github.dockerjava.core.command.RenameContainerCmdImpl;
103108
import com.github.dockerjava.core.command.RestartContainerCmdImpl;
104109
import com.github.dockerjava.core.command.SaveImageCmdImpl;
105110
import com.github.dockerjava.core.command.SearchImagesCmdImpl;
@@ -112,9 +117,6 @@
112117
import com.github.dockerjava.core.command.UpdateContainerCmdImpl;
113118
import com.github.dockerjava.core.command.VersionCmdImpl;
114119
import com.github.dockerjava.core.command.WaitContainerCmdImpl;
115-
import com.github.dockerjava.core.command.RenameContainerCmdImpl;
116-
117-
import javax.annotation.Nonnull;
118120

119121
/**
120122
* @author Konstantin Pelykh ([email protected])
@@ -483,6 +485,11 @@ public DisconnectFromNetworkCmd disconnectFromNetworkCmd() {
483485
return new DisconnectFromNetworkCmdImpl(getDockerCmdExecFactory().createDisconnectFromNetworkCmdExec());
484486
}
485487

488+
@Override
489+
public ListImageHistoryCmd listImageHistoryCmd(String imageId) {
490+
return new ListImageHistoryCmdImpl(getDockerCmdExecFactory().createListImageHistoryCmdExec(), imageId);
491+
}
492+
486493
@Override
487494
public void close() throws IOException {
488495
getDockerCmdExecFactory().close();
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package com.github.dockerjava.core.command;
2+
3+
import static com.google.common.base.Preconditions.checkNotNull;
4+
5+
import java.util.List;
6+
7+
import com.github.dockerjava.api.command.ListImageHistoryCmd;
8+
import com.github.dockerjava.api.command.LayerHistory;
9+
import com.github.dockerjava.api.exception.NotFoundException;
10+
11+
/**
12+
* Inspect the details of an image.
13+
*/
14+
public class ListImageHistoryCmdImpl extends AbstrDockerCmd<ListImageHistoryCmd, List<LayerHistory>> implements
15+
ListImageHistoryCmd {
16+
17+
private String imageId;
18+
19+
public ListImageHistoryCmdImpl(ListImageHistoryCmd.Exec exec, String imageId) {
20+
super(exec);
21+
withImageId(imageId);
22+
}
23+
24+
@Override
25+
public String getImageId() {
26+
return imageId;
27+
}
28+
29+
@Override
30+
public ListImageHistoryCmd withImageId(String imageId) {
31+
checkNotNull(imageId, "imageId was not specified");
32+
this.imageId = imageId;
33+
return this;
34+
}
35+
36+
/**
37+
* @throws NotFoundException
38+
* No such image
39+
*/
40+
@Override
41+
public List<LayerHistory> exec() throws NotFoundException {
42+
return super.exec();
43+
}
44+
}

src/main/java/com/github/dockerjava/jaxrs/JerseyDockerCmdExecFactory.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,6 @@
1818
import javax.ws.rs.client.ClientResponseFilter;
1919
import javax.ws.rs.client.WebTarget;
2020

21-
import com.github.dockerjava.api.command.UpdateContainerCmd;
22-
import com.github.dockerjava.core.SSLConfig;
23-
2421
import org.apache.http.client.config.RequestConfig;
2522
import org.apache.http.config.RegistryBuilder;
2623
import org.apache.http.conn.socket.ConnectionSocketFactory;
@@ -62,6 +59,7 @@
6259
import com.github.dockerjava.api.command.InspectVolumeCmd;
6360
import com.github.dockerjava.api.command.KillContainerCmd;
6461
import com.github.dockerjava.api.command.ListContainersCmd;
62+
import com.github.dockerjava.api.command.ListImageHistoryCmd;
6563
import com.github.dockerjava.api.command.ListImagesCmd;
6664
import com.github.dockerjava.api.command.ListNetworksCmd;
6765
import com.github.dockerjava.api.command.ListVolumesCmd;
@@ -75,6 +73,7 @@
7573
import com.github.dockerjava.api.command.RemoveImageCmd;
7674
import com.github.dockerjava.api.command.RemoveNetworkCmd;
7775
import com.github.dockerjava.api.command.RemoveVolumeCmd;
76+
import com.github.dockerjava.api.command.RenameContainerCmd;
7877
import com.github.dockerjava.api.command.RestartContainerCmd;
7978
import com.github.dockerjava.api.command.SaveImageCmd;
8079
import com.github.dockerjava.api.command.SearchImagesCmd;
@@ -84,11 +83,12 @@
8483
import com.github.dockerjava.api.command.TagImageCmd;
8584
import com.github.dockerjava.api.command.TopContainerCmd;
8685
import com.github.dockerjava.api.command.UnpauseContainerCmd;
86+
import com.github.dockerjava.api.command.UpdateContainerCmd;
8787
import com.github.dockerjava.api.command.VersionCmd;
8888
import com.github.dockerjava.api.command.WaitContainerCmd;
89-
import com.github.dockerjava.api.command.RenameContainerCmd;
9089
import com.github.dockerjava.api.exception.DockerClientException;
9190
import com.github.dockerjava.core.DockerClientConfig;
91+
import com.github.dockerjava.core.SSLConfig;
9292
import com.github.dockerjava.jaxrs.filter.JsonClientFilter;
9393
import com.github.dockerjava.jaxrs.filter.ResponseStatusExceptionFilter;
9494
import com.github.dockerjava.jaxrs.filter.SelectiveLoggingFilter;
@@ -550,6 +550,11 @@ public DisconnectFromNetworkCmd.Exec createDisconnectFromNetworkCmdExec() {
550550
return new DisconnectFromNetworkCmdExec(getBaseResource(), getDockerClientConfig());
551551
}
552552

553+
@Override
554+
public ListImageHistoryCmd.Exec createListImageHistoryCmdExec() {
555+
return new ListImageHistoryCmdExec(getBaseResource(), getDockerClientConfig());
556+
}
557+
553558
@Override
554559
public void close() throws IOException {
555560
checkNotNull(client, "Factory not initialized. You probably forgot to call init()!");

0 commit comments

Comments
 (0)