Skip to content

Commit 5d0b5a9

Browse files
authored
Merge pull request #34 from paypal/easier-docker-pull-skip
make it easier to skip docker pull.
2 parents 43fdaea + 3aab239 commit 5d0b5a9

File tree

6 files changed

+23
-4
lines changed

6 files changed

+23
-4
lines changed

src/main/java/com/paypal/heapdumptool/Application.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,11 @@ public class Application {
3939

4040
// Stay with "String[] args". vararg "String... args" causes weird failure with mockito in Java 11
4141
public static void main(final String[] args) throws Exception {
42+
run(args, VersionProvider.versionResource);
43+
}
44+
45+
public static void run(final String[] args, final String versionResource) throws Exception {
46+
VersionProvider.versionResource = versionResource;
4247
final Escalation escalation = escalatePrivilegesIfNeeded(args);
4348
if (escalation == ESCALATED) {
4449
return;
@@ -60,14 +65,16 @@ static void systemExit(final int exitCode) {
6065

6166
public static class VersionProvider implements IVersionProvider {
6267

68+
static String versionResource = System.getProperty("heap-dump-tool.version-resource", "/git-heap-dump-tool.properties");
69+
6370
public static void printVersion() throws IOException {
6471
final String[] versionInfo = new VersionProvider().getVersion();
6572
InternalLogger.getLogger(Application.class).info(versionInfo[0]);
6673
}
6774

6875
@Override
6976
public String[] getVersion() throws IOException {
70-
final byte[] bytes = resourceToByteArray("/git-heap-dump-tool.properties");
77+
final byte[] bytes = resourceToByteArray(versionResource);
7178
final Properties gitProperties = new Properties();
7279
gitProperties.load(new ByteArrayInputStream(bytes));
7380
gitProperties.put("appId", APP_ID);

src/main/java/com/paypal/heapdumptool/capture/CaptureCommand.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,13 @@
2424
public class CaptureCommand extends SanitizeOrCaptureCommandBase implements CliCommand {
2525

2626
static final String DOCKER_REGISTRY_OPTION = "--docker-registry";
27+
static final String SKIP_DOCKER_PULL = "--skip-docker-pull";
2728

2829
// to allow field injection from picocli, these variables can't be final
2930

31+
@Option(names = {SKIP_DOCKER_PULL}, description = "skip pulling latest docker image")
32+
private boolean skipDockerPull;
33+
3034
@Parameters(index = "0", description = "Container name")
3135
private String containerName;
3236

src/main/java/com/paypal/heapdumptool/capture/PrivilegeEscalator.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,15 @@
88
import java.nio.file.Files;
99
import java.nio.file.Path;
1010
import java.nio.file.Paths;
11+
import java.util.Arrays;
1112
import java.util.HashMap;
1213
import java.util.Map;
1314
import java.util.Optional;
1415
import java.util.concurrent.Callable;
1516
import java.util.stream.Stream;
1617

1718
import static com.paypal.heapdumptool.capture.CaptureCommand.DOCKER_REGISTRY_OPTION;
19+
import static com.paypal.heapdumptool.capture.CaptureCommand.SKIP_DOCKER_PULL;
1820
import static com.paypal.heapdumptool.capture.PrivilegeEscalator.Escalation.ESCALATED;
1921
import static com.paypal.heapdumptool.capture.PrivilegeEscalator.Escalation.PRIVILEGED_ALREADY;
2022
import static com.paypal.heapdumptool.utils.CallableTool.callQuietlyWithDefault;
@@ -93,11 +95,14 @@ private static Map<String, String> buildTemplateParams(final String... args) {
9395
? "FORCED_DOCKER_REGISTRY"
9496
: "DOCKER_REGISTRY";
9597

98+
final boolean skipDockerPull = Arrays.asList(args).contains(SKIP_DOCKER_PULL);
99+
96100
final Map<String, String> params = new HashMap<>();
97101
params.put("IMAGE_NAME", IMAGE_NAME);
98102
params.put("ARGS", quotedArgs);
99103
params.put("DEFAULT_REGISTRY", defaultRegistry);
100104
params.put("DOCKER_REGISTRY_ENV_NAME", dockerRegistryEnvName);
105+
params.put("SKIP_DOCKER_PULL", Boolean.toString(skipDockerPull));
101106

102107
return params;
103108
}

src/main/resources/privilege-escalate.sh.tmpl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
set -euo pipefail
1010
FQ_IMAGE="${__DOCKER_REGISTRY_ENV_NAME__:-__DEFAULT_REGISTRY__}/__IMAGE_NAME__"
1111

12-
if [ "$FQ_IMAGE" != "local/__IMAGE_NAME__" ]; then
13-
docker pull $FQ_IMAGE
12+
if [[ "${SKIP_DOCKER_PULL:-__SKIP_DOCKER_PULL__}" == "false" && "$FQ_IMAGE" != "local/__IMAGE_NAME__" ]]; then
13+
docker pull "$FQ_IMAGE"
1414
fi
1515

1616
TMPDIR="${TMPDIR:-/tmp/}"

src/test/java/com/paypal/heapdumptool/ApplicationTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public void testMainHelp(final CapturedOutput output) throws Exception {
3131
assertThat(exitCode).isEqualTo(0);
3232

3333
final String expectedOutput = contentOf(getClass(), "help.txt");
34-
assertThat(output).isEqualTo(expectedOutput);
34+
assertThat(output.getOut()).isEqualTo(expectedOutput);
3535
}
3636

3737
@Test

src/test/java/com/paypal/heapdumptool/ApplicationTestSupport.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ public static int runApplication(final String... args) throws Exception {
2323
applicationMock.when(() -> Application.main(args))
2424
.thenCallRealMethod();
2525

26+
applicationMock.when(() -> Application.run(args, Application.VersionProvider.versionResource))
27+
.thenCallRealMethod();
28+
2629
Application.main(args);
2730
}
2831

0 commit comments

Comments
 (0)