X Tutup
Skip to content

Commit 899f7ba

Browse files
committed
Merge pull request #408
2 parents 3339d87 + 96d01bf commit 899f7ba

38 files changed

+1369
-32
lines changed

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,23 +17,27 @@
1717
import com.github.dockerjava.api.command.CopyFileFromContainerCmd;
1818
import com.github.dockerjava.api.command.CreateContainerCmd;
1919
import com.github.dockerjava.api.command.CreateImageCmd;
20+
import com.github.dockerjava.api.command.CreateVolumeCmd;
2021
import com.github.dockerjava.api.command.EventsCmd;
2122
import com.github.dockerjava.api.command.ExecCreateCmd;
2223
import com.github.dockerjava.api.command.ExecStartCmd;
2324
import com.github.dockerjava.api.command.InfoCmd;
2425
import com.github.dockerjava.api.command.InspectContainerCmd;
2526
import com.github.dockerjava.api.command.InspectExecCmd;
2627
import com.github.dockerjava.api.command.InspectImageCmd;
28+
import com.github.dockerjava.api.command.InspectVolumeCmd;
2729
import com.github.dockerjava.api.command.KillContainerCmd;
2830
import com.github.dockerjava.api.command.ListContainersCmd;
2931
import com.github.dockerjava.api.command.ListImagesCmd;
32+
import com.github.dockerjava.api.command.ListVolumesCmd;
3033
import com.github.dockerjava.api.command.LogContainerCmd;
3134
import com.github.dockerjava.api.command.PauseContainerCmd;
3235
import com.github.dockerjava.api.command.PingCmd;
3336
import com.github.dockerjava.api.command.PullImageCmd;
3437
import com.github.dockerjava.api.command.PushImageCmd;
3538
import com.github.dockerjava.api.command.RemoveContainerCmd;
3639
import com.github.dockerjava.api.command.RemoveImageCmd;
40+
import com.github.dockerjava.api.command.RemoveVolumeCmd;
3741
import com.github.dockerjava.api.command.RestartContainerCmd;
3842
import com.github.dockerjava.api.command.SaveImageCmd;
3943
import com.github.dockerjava.api.command.SearchImagesCmd;
@@ -188,6 +192,14 @@ public interface DockerClient extends Closeable {
188192

189193
public StatsCmd statsCmd(String containerId);
190194

195+
public CreateVolumeCmd createVolumeCmd();
196+
197+
public InspectVolumeCmd inspectVolumeCmd(String name);
198+
199+
public RemoveVolumeCmd removeVolumeCmd(String name);
200+
201+
public ListVolumesCmd listVolumesCmd();
202+
191203
@Override
192204
public void close() throws IOException;
193205

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.github.dockerjava.api.command;
2+
3+
import java.util.Map;
4+
5+
import javax.annotation.CheckForNull;
6+
7+
public interface CreateVolumeCmd extends SyncDockerCmd<CreateVolumeResponse> {
8+
9+
@CheckForNull
10+
public String getName();
11+
12+
@CheckForNull
13+
public String getDriver();
14+
15+
@CheckForNull
16+
public Map<String, String> getDriverOpts();
17+
18+
/**
19+
* @param name
20+
* - The new volume’s name. If not specified, Docker generates a name.
21+
*/
22+
public CreateVolumeCmd withName(String name);
23+
24+
/**
25+
* @param driver
26+
* - Name of the volume driver to use. Defaults to local for the name.
27+
*/
28+
public CreateVolumeCmd withDriver(String driver);
29+
30+
/**
31+
* @param driverOpts
32+
* - A mapping of driver options and values. These options are passed directly to the driver and are
33+
* driver specific.
34+
*/
35+
public CreateVolumeCmd withDriverOpts(Map<String, String> driverOpts);
36+
37+
public static interface Exec extends DockerCmdSyncExec<CreateVolumeCmd, CreateVolumeResponse> {
38+
}
39+
}
40+
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.github.dockerjava.api.command;
2+
3+
import org.apache.commons.lang.builder.ToStringBuilder;
4+
5+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
6+
import com.fasterxml.jackson.annotation.JsonProperty;
7+
8+
/**
9+
*
10+
* @author Marcus Linke
11+
*/
12+
@JsonIgnoreProperties(ignoreUnknown = true)
13+
public class CreateVolumeResponse {
14+
15+
@JsonProperty("Name")
16+
private String name;
17+
18+
@JsonProperty("Driver")
19+
private String driver;
20+
21+
@JsonProperty("Mountpoint")
22+
private String mountpoint;
23+
24+
public String getName() {
25+
return name;
26+
}
27+
28+
public String getDriver() {
29+
return driver;
30+
}
31+
32+
public String getMountpoint() {
33+
return mountpoint;
34+
}
35+
36+
@Override
37+
public String toString() {
38+
return ToStringBuilder.reflectionToString(this);
39+
}
40+
}

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,15 @@ public interface DockerCmdExecFactory extends Closeable {
8585

8686
public StatsCmd.Exec createStatsCmdExec();
8787

88+
public CreateVolumeCmd.Exec createCreateVolumeCmdExec();
89+
90+
public InspectVolumeCmd.Exec createInspectVolumeCmdExec();
91+
92+
public RemoveVolumeCmd.Exec createRemoveVolumeCmdExec();
93+
94+
public ListVolumesCmd.Exec createListVolumesCmdExec();
95+
8896
@Override
8997
public void close() throws IOException;
98+
9099
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.github.dockerjava.api.command;
2+
3+
import javax.annotation.Nonnull;
4+
5+
/**
6+
* Inspect the details of a volume.
7+
*
8+
* @author Marcus Linke
9+
*
10+
*/
11+
public interface InspectVolumeCmd extends SyncDockerCmd<InspectVolumeResponse> {
12+
13+
public String getName();
14+
15+
/**
16+
* @param name
17+
* - The volume’s name.
18+
*/
19+
public InspectVolumeCmd withName(@Nonnull String name);
20+
21+
public static interface Exec extends DockerCmdSyncExec<InspectVolumeCmd, InspectVolumeResponse> {
22+
}
23+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.github.dockerjava.api.command;
2+
3+
import org.apache.commons.lang.builder.ToStringBuilder;
4+
5+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
6+
import com.fasterxml.jackson.annotation.JsonProperty;
7+
8+
/**
9+
*
10+
* @author Marcus Linke
11+
*/
12+
@JsonIgnoreProperties(ignoreUnknown = true)
13+
public class InspectVolumeResponse {
14+
15+
@JsonProperty("Name")
16+
private String name;
17+
18+
@JsonProperty("Driver")
19+
private String driver;
20+
21+
@JsonProperty("Mountpoint")
22+
private String mountpoint;
23+
24+
public String getName() {
25+
return name;
26+
}
27+
28+
public String getDriver() {
29+
return driver;
30+
}
31+
32+
public String getMountpoint() {
33+
return mountpoint;
34+
}
35+
36+
@Override
37+
public String toString() {
38+
return ToStringBuilder.reflectionToString(this);
39+
}
40+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.github.dockerjava.api.command;
2+
3+
import javax.annotation.CheckForNull;
4+
5+
/**
6+
* List volumes.
7+
*
8+
*
9+
* @author Marcus Linke
10+
*/
11+
public interface ListVolumesCmd extends SyncDockerCmd<ListVolumesResponse> {
12+
13+
@CheckForNull
14+
public String getFilters();
15+
16+
/**
17+
* @param filters
18+
* - JSON encoded value of the filters (a map[string][]string) to process on the volumes list. There is
19+
* one available filter: dangling=true
20+
*/
21+
public ListVolumesCmd withFilters(String filters);
22+
23+
public static interface Exec extends DockerCmdSyncExec<ListVolumesCmd, ListVolumesResponse> {
24+
}
25+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.github.dockerjava.api.command;
2+
3+
import java.util.List;
4+
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+
/**
11+
*
12+
* @author Marcus Linke
13+
*/
14+
@JsonIgnoreProperties(ignoreUnknown = true)
15+
public class ListVolumesResponse {
16+
17+
@JsonProperty("Volumes")
18+
private List<InspectVolumeResponse> volumes;
19+
20+
public List<InspectVolumeResponse> getVolumes() {
21+
return volumes;
22+
}
23+
24+
@Override
25+
public String toString() {
26+
return ToStringBuilder.reflectionToString(this);
27+
}
28+
}
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 javax.annotation.Nonnull;
4+
5+
import com.github.dockerjava.api.exception.ConflictException;
6+
import com.github.dockerjava.api.exception.NotFoundException;
7+
8+
/**
9+
* Remove a volume.
10+
*
11+
* @author Marcus Linke
12+
*/
13+
public interface RemoveVolumeCmd extends SyncDockerCmd<Void> {
14+
15+
public String getName();
16+
17+
public RemoveVolumeCmd withName(@Nonnull String name);
18+
19+
/**
20+
* @throws NotFoundException
21+
* No such volume
22+
* @throws ConflictException
23+
* Volume is in use and cannot be removed
24+
*/
25+
@Override
26+
public Void exec() throws NotFoundException;
27+
28+
public static interface Exec extends DockerCmdSyncExec<RemoveVolumeCmd, Void> {
29+
}
30+
}

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

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import com.github.dockerjava.api.command.CopyFileFromContainerCmd;
1919
import com.github.dockerjava.api.command.CreateContainerCmd;
2020
import com.github.dockerjava.api.command.CreateImageCmd;
21+
import com.github.dockerjava.api.command.CreateVolumeCmd;
2122
import com.github.dockerjava.api.command.DockerCmdExecFactory;
2223
import com.github.dockerjava.api.command.EventsCmd;
2324
import com.github.dockerjava.api.command.ExecCreateCmd;
@@ -26,16 +27,19 @@
2627
import com.github.dockerjava.api.command.InspectContainerCmd;
2728
import com.github.dockerjava.api.command.InspectExecCmd;
2829
import com.github.dockerjava.api.command.InspectImageCmd;
30+
import com.github.dockerjava.api.command.InspectVolumeCmd;
2931
import com.github.dockerjava.api.command.KillContainerCmd;
3032
import com.github.dockerjava.api.command.ListContainersCmd;
3133
import com.github.dockerjava.api.command.ListImagesCmd;
34+
import com.github.dockerjava.api.command.ListVolumesCmd;
3235
import com.github.dockerjava.api.command.LogContainerCmd;
3336
import com.github.dockerjava.api.command.PauseContainerCmd;
3437
import com.github.dockerjava.api.command.PingCmd;
3538
import com.github.dockerjava.api.command.PullImageCmd;
3639
import com.github.dockerjava.api.command.PushImageCmd;
3740
import com.github.dockerjava.api.command.RemoveContainerCmd;
3841
import com.github.dockerjava.api.command.RemoveImageCmd;
42+
import com.github.dockerjava.api.command.RemoveVolumeCmd;
3943
import com.github.dockerjava.api.command.RestartContainerCmd;
4044
import com.github.dockerjava.api.command.SaveImageCmd;
4145
import com.github.dockerjava.api.command.SearchImagesCmd;
@@ -59,23 +63,27 @@
5963
import com.github.dockerjava.core.command.CopyFileFromContainerCmdImpl;
6064
import com.github.dockerjava.core.command.CreateContainerCmdImpl;
6165
import com.github.dockerjava.core.command.CreateImageCmdImpl;
66+
import com.github.dockerjava.core.command.CreateVolumeCmdImpl;
6267
import com.github.dockerjava.core.command.EventsCmdImpl;
6368
import com.github.dockerjava.core.command.ExecCreateCmdImpl;
6469
import com.github.dockerjava.core.command.ExecStartCmdImpl;
6570
import com.github.dockerjava.core.command.InfoCmdImpl;
6671
import com.github.dockerjava.core.command.InspectContainerCmdImpl;
6772
import com.github.dockerjava.core.command.InspectExecCmdImpl;
6873
import com.github.dockerjava.core.command.InspectImageCmdImpl;
74+
import com.github.dockerjava.core.command.InspectVolumeCmdImpl;
6975
import com.github.dockerjava.core.command.KillContainerCmdImpl;
7076
import com.github.dockerjava.core.command.ListContainersCmdImpl;
7177
import com.github.dockerjava.core.command.ListImagesCmdImpl;
78+
import com.github.dockerjava.core.command.ListVolumesCmdImpl;
7279
import com.github.dockerjava.core.command.LogContainerCmdImpl;
7380
import com.github.dockerjava.core.command.PauseContainerCmdImpl;
7481
import com.github.dockerjava.core.command.PingCmdImpl;
7582
import com.github.dockerjava.core.command.PullImageCmdImpl;
7683
import com.github.dockerjava.core.command.PushImageCmdImpl;
7784
import com.github.dockerjava.core.command.RemoveContainerCmdImpl;
7885
import com.github.dockerjava.core.command.RemoveImageCmdImpl;
86+
import com.github.dockerjava.core.command.RemoveVolumeCmdImpl;
7987
import com.github.dockerjava.core.command.RestartContainerCmdImpl;
8088
import com.github.dockerjava.core.command.SaveImageCmdImpl;
8189
import com.github.dockerjava.core.command.SearchImagesCmdImpl;
@@ -389,6 +397,26 @@ public StatsCmd statsCmd(String containerId) {
389397
return new StatsCmdImpl(getDockerCmdExecFactory().createStatsCmdExec(), containerId);
390398
}
391399

400+
@Override
401+
public CreateVolumeCmd createVolumeCmd() {
402+
return new CreateVolumeCmdImpl(getDockerCmdExecFactory().createCreateVolumeCmdExec());
403+
}
404+
405+
@Override
406+
public InspectVolumeCmd inspectVolumeCmd(String name) {
407+
return new InspectVolumeCmdImpl(getDockerCmdExecFactory().createInspectVolumeCmdExec(), name);
408+
}
409+
410+
@Override
411+
public RemoveVolumeCmd removeVolumeCmd(String name) {
412+
return new RemoveVolumeCmdImpl(getDockerCmdExecFactory().createRemoveVolumeCmdExec(), name);
413+
}
414+
415+
@Override
416+
public ListVolumesCmd listVolumesCmd() {
417+
return new ListVolumesCmdImpl(getDockerCmdExecFactory().createListVolumesCmdExec());
418+
}
419+
392420
@Override
393421
public void close() throws IOException {
394422
getDockerCmdExecFactory().close();

0 commit comments

Comments
 (0)
X Tutup