Skip to content

Commit f73eb8f

Browse files
committed
suppose headless service in getServiceURL method in HttpClient
1 parent 80ecd24 commit f73eb8f

File tree

2 files changed

+44
-1
lines changed

2 files changed

+44
-1
lines changed

operator/src/main/java/oracle/kubernetes/operator/http/HttpClient.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,13 @@ public static String getServiceURL(V1Service service) {
279279
if (service != null) {
280280
V1ServiceSpec spec = service.getSpec();
281281
if (spec != null) {
282-
String portalIP = spec.getClusterIP();
282+
String portalIP =
283+
"None".equalsIgnoreCase(spec.getClusterIP())
284+
? service.getMetadata().getName()
285+
+ "."
286+
+ service.getMetadata().getNamespace()
287+
+ ".svc.cluster.local"
288+
: spec.getClusterIP();
283289
int port = spec.getPorts().iterator().next().getPort();
284290
portalIP += ":" + port;
285291
String serviceURL = HTTP_PROTOCOL + portalIP;

operator/src/test/java/oracle/kubernetes/operator/http/HttpClientTest.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,13 @@
66
import static oracle.kubernetes.LogMatcher.containsFine;
77
import static oracle.kubernetes.operator.logging.MessageKeys.HTTP_METHOD_FAILED;
88
import static org.hamcrest.MatcherAssert.assertThat;
9+
import static org.junit.Assert.assertEquals;
910

1011
import com.meterware.simplestub.Stub;
12+
import io.kubernetes.client.models.V1ObjectMeta;
13+
import io.kubernetes.client.models.V1Service;
14+
import io.kubernetes.client.models.V1ServicePort;
15+
import io.kubernetes.client.models.V1ServiceSpec;
1116
import java.util.ArrayList;
1217
import java.util.List;
1318
import java.util.logging.Level;
@@ -71,6 +76,38 @@ private void ignoreMessage(String message) {
7176
consoleControl.ignoreMessage(message);
7277
}
7378

79+
@Test
80+
public void getServiceURL_returnsUrlUsingClusterIP() {
81+
final String CLUSTER_IP = "123.123.123.133";
82+
final int PORT = 7101;
83+
84+
List<V1ServicePort> ports = new ArrayList<>();
85+
ports.add(new V1ServicePort().port(PORT));
86+
V1Service service =
87+
new V1Service().spec(new V1ServiceSpec().clusterIP(CLUSTER_IP).ports(ports));
88+
String url = HttpClient.getServiceURL(service);
89+
assertEquals("http://" + CLUSTER_IP + ":" + PORT, url);
90+
}
91+
92+
@Test
93+
public void getServiceURL_returnsUrlUsingDNS_ifNoneClusterIP() {
94+
final String CLUSTER_IP = "None";
95+
final int PORT = 7101;
96+
final String NAMESPACE = "domain1";
97+
final String SERVICE_NAME = "admin-server";
98+
99+
List<V1ServicePort> ports = new ArrayList<>();
100+
ports.add(new V1ServicePort().port(PORT));
101+
102+
V1Service service =
103+
new V1Service()
104+
.spec(new V1ServiceSpec().clusterIP(CLUSTER_IP).ports(ports))
105+
.metadata(new V1ObjectMeta().namespace(NAMESPACE).name(SERVICE_NAME));
106+
107+
String url = HttpClient.getServiceURL(service);
108+
assertEquals("http://" + SERVICE_NAME + "." + NAMESPACE + ".svc.cluster.local:" + PORT, url);
109+
}
110+
74111
abstract static class ClientStub implements Client {
75112

76113
private static Response mockResponse;

0 commit comments

Comments
 (0)