diff --git a/changelog/@unreleased/pr-561.v2.yml b/changelog/@unreleased/pr-561.v2.yml new file mode 100644 index 00000000..1f2ab4c1 --- /dev/null +++ b/changelog/@unreleased/pr-561.v2.yml @@ -0,0 +1,6 @@ +type: feature +feature: + description: Projects using DockerProxyExtension for project-based containers can + now override the docker network name used by the proxy + links: + - https://github.com/palantir/docker-proxy-rule/pull/561 diff --git a/docker-proxy-junit-jupiter/src/main/java/com/palantir/docker/proxy/DockerProxyExtension.java b/docker-proxy-junit-jupiter/src/main/java/com/palantir/docker/proxy/DockerProxyExtension.java index 99f20bd3..a8f8e2ce 100644 --- a/docker-proxy-junit-jupiter/src/main/java/com/palantir/docker/proxy/DockerProxyExtension.java +++ b/docker-proxy-junit-jupiter/src/main/java/com/palantir/docker/proxy/DockerProxyExtension.java @@ -66,7 +66,24 @@ public static DockerProxyExtension fromProjectName(ProjectName projectName, Clas public static DockerProxyExtension fromProjectName( ProjectName projectName, Class classToLogFor, String imageNameOverride) { return new DockerProxyExtension( - docker -> new ProjectBasedDockerContainerInfo(docker, projectName, Optional.of(imageNameOverride)), + docker -> new ProjectBasedDockerContainerInfo( + docker, projectName, Optional.of(imageNameOverride), Optional.empty()), + classToLogFor); + } + + /** + * Creates a {@link DockerProxyExtension} using a {@link ProjectBasedDockerContainerInfo}. + * + * @param projectName The docker-compose-rule ProjectName to use to find the containers + * @param networkNameOverride The docker network name to use instead of the default + * @param imageNameOverride The docker image name to use instead of the default + * @param classToLogFor The class using {@link DockerProxyExtension} + */ + public static DockerProxyExtension fromProjectName( + ProjectName projectName, Class classToLogFor, String imageNameOverride, String networkNameOverride) { + return new DockerProxyExtension( + docker -> new ProjectBasedDockerContainerInfo( + docker, projectName, Optional.of(imageNameOverride), Optional.of(networkNameOverride)), classToLogFor); } diff --git a/docker-proxy-rule-core/src/main/java/com/palantir/docker/proxy/ProjectBasedDockerContainerInfo.java b/docker-proxy-rule-core/src/main/java/com/palantir/docker/proxy/ProjectBasedDockerContainerInfo.java index 4fa3419a..b26638f9 100644 --- a/docker-proxy-rule-core/src/main/java/com/palantir/docker/proxy/ProjectBasedDockerContainerInfo.java +++ b/docker-proxy-rule-core/src/main/java/com/palantir/docker/proxy/ProjectBasedDockerContainerInfo.java @@ -25,16 +25,21 @@ public final class ProjectBasedDockerContainerInfo implements DockerContainerInf private final DockerExecutable docker; private final ProjectName projectName; private final Optional imageNameOverride; + private final Optional networkNameOverride; public ProjectBasedDockerContainerInfo( - DockerExecutable docker, ProjectName projectName, Optional imageNameOverride) { + DockerExecutable docker, + ProjectName projectName, + Optional imageNameOverride, + Optional networkNameOverride) { this.docker = docker; this.projectName = projectName; this.imageNameOverride = imageNameOverride; + this.networkNameOverride = networkNameOverride; } public ProjectBasedDockerContainerInfo(DockerExecutable docker, ProjectName projectName) { - this(docker, projectName, Optional.empty()); + this(docker, projectName, Optional.empty(), Optional.empty()); } @Override @@ -62,7 +67,7 @@ public Optional getHostForIp(String ip) { @Override public String getNetworkName() { - return projectName.asString() + "_default"; + return networkNameOverride.orElseGet(() -> projectName.asString() + "_default"); } @Override