Skip to content

Commit

Permalink
[XENOPS-979] Reduce chattiness of PublishedPortConfigurationModifier
Browse files Browse the repository at this point in the history
When ipv6 addressing is enabled, a container almost always has multiple published ports: one for ipv4 and one for ipv6.
We do not want to log a warning for that, as the logs would be filled with these warnings, making other mort important warnings less prevalent.
  • Loading branch information
vierbergenlars committed Dec 22, 2021
1 parent ec1c9c0 commit b4736a0
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -53,21 +53,38 @@ public ServiceBinding withIp(String ip) {
@Override
public String toString() {
StringBuilder sb = new StringBuilder(64);
sb.append("ServiceBinding(");
if (ip != null) {
sb.append(ip).append(":");
sb.append("ServiceBinding(").append(toIpPortProtocolString());
if (ip == null && port == null && protocol == null) {
sb.append("ANY");
}
if (port != null) {

return sb.append(")").toString();
}

public String toPortProtocolString() {
StringBuilder sb = new StringBuilder(64);

if(port != null) {
sb.append(port);
}
if (protocol != null) {

if(protocol != null) {
sb.append("/").append(protocol);
}
if (ip == null && port == null && protocol == null) {
sb.append("ANY");

return sb.toString();
}

public String toIpPortProtocolString() {
StringBuilder sb = new StringBuilder(64);

if(ip != null) {
sb.append(ip).append(":");
}

return sb.append(")").toString();
sb.append(toPortProtocolString());

return sb.toString();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,11 @@
import eu.xenit.nuntio.api.platform.PlatformServiceConfiguration;
import eu.xenit.nuntio.api.platform.ServiceBinding;
import com.github.dockerjava.api.command.InspectContainerResponse;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Arrays;
import java.util.Collections;
import java.util.Map.Entry;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import lombok.extern.slf4j.Slf4j;
Expand Down Expand Up @@ -58,15 +57,28 @@ public Stream<PlatformServiceConfiguration> modifyConfiguration(PlatformServiceC
if (allBindings.isEmpty()) {
log.warn("{} has no published port mapping to {}.", configuration, configuration.getServiceBinding());
} else if (allBindings.size() > 1) {
log.warn("{} has multiple published port mappings to {}. Created bindings {}", configuration,
configuration.getServiceBinding(),
allBindings);
AtomicInteger ipv4Count = new AtomicInteger();
AtomicInteger ipv6Count = new AtomicInteger();
for (ServiceBinding binding : allBindings) {
binding.getIp().ifPresent(ip -> {
if(ip.contains(":")) {
ipv6Count.getAndIncrement();
} else {
ipv4Count.getAndIncrement();
}
});
}
if(ipv4Count.get() > 1 || ipv6Count.get() > 1) {
log.warn("{} has multiple published port mappings to {}. Created bindings {}", configuration,
configuration.getServiceBinding(),
allBindings);
}
}

return allBindings
.stream()
.map(binding -> configuration.withBinding(binding)
.withInternalMetadata("docker-internal-port", serviceBinding.toString()));
.withInternalMetadata("docker-internal-port", serviceBinding.toPortProtocolString()));
}


Expand Down

0 comments on commit b4736a0

Please sign in to comment.