use of io.fabric8.annotations.Endpoint in project kie-wb-common by kiegroup.
the class OpenShiftClient method getRuntimeEndpoint.
public OpenShiftRuntimeEndpoint getRuntimeEndpoint(String id) throws OpenShiftClientException {
try {
OpenShiftRuntimeId runtimeId = OpenShiftRuntimeId.fromString(id);
String prjName = runtimeId.project();
String svcName = runtimeId.service();
OpenShiftRuntimeEndpoint endpoint = new OpenShiftRuntimeEndpoint();
Route route = delegate.routes().inNamespace(prjName).withName(svcName).get();
if (route != null) {
RouteSpec routeSpec = route.getSpec();
endpoint.setProtocol(routeSpec.getTls() != null ? "https" : "http");
endpoint.setHost(routeSpec.getHost());
RoutePort routePort = routeSpec.getPort();
if (routePort != null) {
IntOrString targetPort = routePort.getTargetPort();
if (targetPort != null) {
endpoint.setPort(targetPort.getIntVal());
}
}
}
return endpoint;
} catch (Throwable t) {
throw new OpenShiftClientException(t.getMessage(), t);
}
}
use of io.fabric8.annotations.Endpoint in project carbon-apimgt by wso2.
the class ServiceDiscovererKubernetes method addLoadBalancerEndpoint.
/**
* Adds the LoadBalancer Endpoint to the endpointList
*
* @param serviceName name of the service the endpoint belongs to
* @param service service object instance
* @param port port number
* @param protocol whether http or https
* @param namespace namespace of the service
* @param labels labels of the service
* @param endpointList endpointList which the endpoint has to be added to
* @throws MalformedURLException if protocol unknown, therefore will not get thrown
*/
private void addLoadBalancerEndpoint(String serviceName, Service service, int port, String protocol, String namespace, String labels, List<Endpoint> endpointList) throws MalformedURLException {
List<LoadBalancerIngress> loadBalancerIngresses = service.getStatus().getLoadBalancer().getIngress();
if (!loadBalancerIngresses.isEmpty()) {
for (LoadBalancerIngress loadBalancerIngress : loadBalancerIngresses) {
String hostname = loadBalancerIngress.getHostname();
String host = (hostname == null || "".equals(hostname)) ? loadBalancerIngress.getIp() : hostname;
URL url = new URL(protocol, host, port, "");
endpointList.add(constructEndpoint(serviceName, namespace, protocol, LOAD_BALANCER, url, labels));
}
} else {
log.debug("Service:{} Namespace:{} Port:{}/{} has no loadBalancer ingresses available.", serviceName, namespace, port, protocol);
}
}
use of io.fabric8.annotations.Endpoint in project carbon-apimgt by wso2.
the class ServiceDiscovererKubernetesTestCase method testListServicesWithWrongPortType.
@Test(description = "Test .listServices() while the list has only one service and its port is not http nor https")
public void testListServicesWithWrongPortType() throws Exception {
OpenShiftClient openShiftClient = Mockito.mock(OpenShiftClient.class, Mockito.RETURNS_DEEP_STUBS);
ServiceDiscovererKubernetes sdKubernetes = new ServiceDiscovererKubernetes();
sdKubernetes.setClient(openShiftClient);
// Include ExternalNames (includeClusterIP not checked)
sdKubernetes.setIncludeExternalNameTypeServices(true);
NonNamespaceOperation nonNamespaceOperation = Mockito.mock(NonNamespaceOperation.class);
Mockito.when(openShiftClient.services().inNamespace(null)).thenReturn(nonNamespaceOperation);
Mockito.when(nonNamespaceOperation.list()).thenReturn(createMalformedServiceList("somePort"));
List<Endpoint> endpoints = sdKubernetes.listServices();
Assert.assertTrue(endpoints.isEmpty());
}
use of io.fabric8.annotations.Endpoint in project carbon-apimgt by wso2.
the class ServiceDiscovererKubernetesTestCase method testListServicesOfLoadBalancerTypeWithoutIngress.
@Test(description = "Test .listServices() while the list only has a LoadBalancer type service without any ingress")
public void testListServicesOfLoadBalancerTypeWithoutIngress() throws Exception {
OpenShiftClient openShiftClient = Mockito.mock(OpenShiftClient.class, Mockito.RETURNS_DEEP_STUBS);
ServiceDiscovererKubernetes sdKubernetes = new ServiceDiscovererKubernetes();
sdKubernetes.setClient(openShiftClient);
// Not include ClusterIPs
sdKubernetes.setIncludeClusterIP(false);
// Not include ExternalNames
sdKubernetes.setIncludeExternalNameTypeServices(false);
NonNamespaceOperation nonNamespaceOperation = Mockito.mock(NonNamespaceOperation.class);
Mockito.when(openShiftClient.services().inNamespace(null)).thenReturn(nonNamespaceOperation);
Mockito.when(nonNamespaceOperation.list()).thenReturn(createMalformedServiceList("http"));
Mockito.when(openShiftClient.getMasterUrl()).thenReturn(new URL(MASTER_URL));
List<Endpoint> endpoints = sdKubernetes.listServices();
Assert.assertEquals(endpoints.size(), 1);
}
use of io.fabric8.annotations.Endpoint in project carbon-apimgt by wso2.
the class ServiceDiscovererKubernetesTestCase method testListServicesWithCriteria.
@Test(description = "Test .listServices(Criteria) method")
public void testListServicesWithCriteria() throws Exception {
OpenShiftClient openShiftClient = Mockito.mock(OpenShiftClient.class, Mockito.RETURNS_DEEP_STUBS);
ServiceDiscovererKubernetes sdKubernetes = new ServiceDiscovererKubernetes();
sdKubernetes.setClient(openShiftClient);
// Include ClusterIPs
sdKubernetes.setIncludeClusterIP(true);
// Not include ExternalNames
sdKubernetes.setIncludeExternalNameTypeServices(false);
Map<String, String> oneLabel = createOneLabelHashMap();
NonNamespaceOperation nonNamespaceOperation = Mockito.mock(NonNamespaceOperation.class);
BaseOperation baseOperation = Mockito.mock(BaseOperation.class);
Mockito.when(openShiftClient.services().inNamespace(null)).thenReturn(nonNamespaceOperation);
Mockito.when(nonNamespaceOperation.withLabels(oneLabel)).thenReturn(baseOperation);
Mockito.when(baseOperation.list()).thenReturn(createServiceListWithCriteria());
Mockito.when(openShiftClient.getMasterUrl()).thenReturn(new URL(MASTER_URL));
List<Endpoint> endpoints = sdKubernetes.listServices(oneLabel);
Assert.assertEquals(endpoints.size(), 3);
}
Aggregations