Merge branch '3.0.x'
This commit is contained in:
@@ -50,6 +50,8 @@ import org.springframework.core.log.LogAccessor;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import static org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryConstants.UNSET_PORT_NAME;
|
||||
|
||||
/**
|
||||
* @author wind57
|
||||
*/
|
||||
@@ -199,20 +201,12 @@ final class Fabric8KubernetesDiscoveryClientUtils {
|
||||
|
||||
static LinkedHashMap<String, Integer> endpointSubsetPortsData(EndpointSubset endpointSubset) {
|
||||
LinkedHashMap<String, Integer> result = new LinkedHashMap<>();
|
||||
List<EndpointPort> endpointPorts = endpointSubset.getPorts();
|
||||
|
||||
// this is most probably not a needed if statement, but it preserves the
|
||||
// previous logic before I refactored the code. In particular, this takes care of
|
||||
// the fact that an EndpointsPort name could be missing.
|
||||
if (endpointPorts.size() == 1) {
|
||||
result.put(endpointPorts.get(0).getName(), endpointPorts.get(0).getPort());
|
||||
return result;
|
||||
}
|
||||
|
||||
endpointSubset.getPorts().forEach(port -> {
|
||||
if (StringUtils.hasText(port.getName())) {
|
||||
result.put(port.getName(), port.getPort());
|
||||
}
|
||||
// a service is allowed to not set a port name for a single entry.
|
||||
// two ports without name can not be deployed, as this in an error
|
||||
String portName = StringUtils.hasText(port.getName()) ? port.getName() : UNSET_PORT_NAME;
|
||||
Integer portNumber = port.getPort();
|
||||
result.put(portName, portNumber);
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package org.springframework.cloud.kubernetes.fabric8.discovery;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
@@ -36,6 +37,7 @@ import org.springframework.cloud.kubernetes.commons.KubernetesNamespaceProvider;
|
||||
import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryProperties;
|
||||
import org.springframework.mock.env.MockEnvironment;
|
||||
|
||||
import static org.springframework.cloud.kubernetes.fabric8.discovery.Fabric8KubernetesDiscoveryClientUtils.endpointSubsetPortsData;
|
||||
import static org.springframework.cloud.kubernetes.fabric8.discovery.Fabric8KubernetesDiscoveryClientUtils.services;
|
||||
|
||||
/**
|
||||
@@ -310,6 +312,34 @@ class Fabric8KubernetesDiscoveryClientUtilsTests {
|
||||
Assertions.assertEquals(portsData.get("http"), "8081");
|
||||
}
|
||||
|
||||
@Test
|
||||
void endpointSubsetPortsDataWithoutPorts() {
|
||||
EndpointSubset endpointSubset = new EndpointSubsetBuilder().build();
|
||||
LinkedHashMap<String, Integer> result = endpointSubsetPortsData(endpointSubset);
|
||||
|
||||
Assertions.assertEquals(result.size(), 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
void endpointSubsetPortsDataSinglePort() {
|
||||
EndpointSubset endpointSubset = new EndpointSubsetBuilder()
|
||||
.withPorts(new EndpointPortBuilder().withName("name").withPort(80).build()).build();
|
||||
LinkedHashMap<String, Integer> result = endpointSubsetPortsData(endpointSubset);
|
||||
|
||||
Assertions.assertEquals(result.size(), 1);
|
||||
Assertions.assertEquals(result.get("name"), 80);
|
||||
}
|
||||
|
||||
@Test
|
||||
void endpointSubsetPortsDataSinglePortNoName() {
|
||||
EndpointSubset endpointSubset = new EndpointSubsetBuilder()
|
||||
.withPorts(new EndpointPortBuilder().withPort(80).build()).build();
|
||||
LinkedHashMap<String, Integer> result = endpointSubsetPortsData(endpointSubset);
|
||||
|
||||
Assertions.assertEquals(result.size(), 1);
|
||||
Assertions.assertEquals(result.get("<unset>"), 80);
|
||||
}
|
||||
|
||||
private void service(String name, String namespace, Map<String, String> labels) {
|
||||
Service service = new ServiceBuilder().withNewMetadata().withName(name).withLabels(labels)
|
||||
.withNamespace(namespace).and().build();
|
||||
|
||||
Reference in New Issue
Block a user