Skip to content

Commit bac5740

Browse files
Gillouard FrédéricKostyaSha
Gillouard Frédéric
authored andcommitted
Patch save image with tag
1 parent a2df1fc commit bac5740

File tree

3 files changed

+25
-9
lines changed

3 files changed

+25
-9
lines changed

src/main/java/com/github/dockerjava/core/exec/SaveImageCmdExec.java

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
package com.github.dockerjava.core.exec;
22

3-
import java.io.InputStream;
4-
5-
import org.slf4j.Logger;
6-
import org.slf4j.LoggerFactory;
7-
83
import com.github.dockerjava.api.command.SaveImageCmd;
94
import com.github.dockerjava.core.DockerClientConfig;
105
import com.github.dockerjava.core.MediaType;
116
import com.github.dockerjava.core.WebTarget;
7+
import com.google.common.base.Strings;
8+
import org.slf4j.Logger;
9+
import org.slf4j.LoggerFactory;
10+
11+
import java.io.InputStream;
1212

1313
public class SaveImageCmdExec extends AbstrSyncDockerCmdExec<SaveImageCmd, InputStream> implements SaveImageCmd.Exec {
1414
private static final Logger LOGGER = LoggerFactory.getLogger(SaveImageCmdExec.class);
@@ -19,8 +19,14 @@ public SaveImageCmdExec(WebTarget baseResource, DockerClientConfig dockerClientC
1919

2020
@Override
2121
protected InputStream execute(SaveImageCmd command) {
22-
WebTarget webResource = getBaseResource().path("/images/" + command.getName() + "/get").queryParam("tag",
23-
command.getTag());
22+
23+
String name = command.getName();
24+
if (!Strings.isNullOrEmpty(command.getTag())) {
25+
name += ":" + command.getTag();
26+
}
27+
28+
WebTarget webResource = getBaseResource().
29+
path("/images/" + name + "/get");
2430

2531
LOGGER.trace("GET: {}", webResource);
2632
return webResource.request().accept(MediaType.APPLICATION_JSON).get();

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

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import com.github.dockerjava.api.command.SaveImageCmd;
1313
import com.github.dockerjava.core.DockerClientConfig;
1414
import com.github.dockerjava.jaxrs.util.WrappedResponseInputStream;
15+
import com.google.common.base.Strings;
1516

1617
public class SaveImageCmdExec extends AbstrSyncDockerCmdExec<SaveImageCmd, InputStream> implements SaveImageCmd.Exec {
1718
private static final Logger LOGGER = LoggerFactory.getLogger(SaveImageCmdExec.class);
@@ -22,8 +23,13 @@ public SaveImageCmdExec(WebTarget baseResource, DockerClientConfig dockerClientC
2223

2324
@Override
2425
protected InputStream execute(SaveImageCmd command) {
25-
WebTarget webResource = getBaseResource().path("/images/" + command.getName() + "/get").queryParam("tag",
26-
command.getTag());
26+
// If tag is present, only tar the specific image
27+
// else tar all the images with the same name
28+
String name = command.getName();
29+
if (!Strings.isNullOrEmpty(command.getTag())) {
30+
name += ":" + command.getTag();
31+
}
32+
WebTarget webResource = getBaseResource().path("/images/" + name + "/get");
2733

2834
LOGGER.trace("GET: {}", webResource);
2935
Response response = webResource.request().accept(MediaType.APPLICATION_JSON).get();

src/test/java/com/github/dockerjava/cmd/SaveImageCmdIT.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ public void saveImage() throws Exception {
1919
InputStream image = IOUtils.toBufferedInputStream(dockerRule.getClient().saveImageCmd("busybox").exec());
2020
assertThat(image.available(), greaterThan(0));
2121

22+
InputStream image2 = IOUtils.toBufferedInputStream(dockerRule.getClient().saveImageCmd("busybox").withTag("latest").exec());
23+
assertThat(image2.available(), greaterThan(0));
24+
25+
2226
}
2327

2428
}

0 commit comments

Comments
 (0)