package io.fabric8.cdi;
import io.fabric8.kubernetes.api.model.Endpoints;
import io.fabric8.kubernetes.api.model.EndpointsBuilder;
import io.fabric8.kubernetes.api.model.ServiceBuilder;
import io.fabric8.kubernetes.client.Config;
import io.fabric8.openshift.server.mock.OpenShiftMockServer;
/**
* Created by iocanel on 10/17/16.
*/
public class MockConfigurer {
private static final OpenShiftMockServer MOCK = new OpenShiftMockServer();
public static void configure() {
MOCK.expect().get().withPath("/api/v1/namespaces/cdi/services/service1").andReturn(200,
new ServiceBuilder()
.withNewMetadata().withName("service1").endMetadata()
.withNewSpec()
.addNewPort()
.withProtocol("TCP")
.withPort(80)
.withNewTargetPort(9090)
.endPort()
.withClusterIP("172.30.17.2")
.endSpec()
.build()
).always();
//Services
MOCK.expect().get().withPath("/api/v1/namespaces/cdi/services/service2").andReturn(200,
new ServiceBuilder()
.withNewMetadata().withName("service2").endMetadata()
.withNewSpec()
.addNewPort()
.withProtocol("TCP")
.withPort(80)
.withNewTargetPort(8080)
.endPort()
.withClusterIP("172.30.17.2")
.endSpec()
.build()
).always();
MOCK.expect().get().withPath("/api/v1/namespaces/cdi/services/service3").andReturn(200,
new ServiceBuilder()
.withNewMetadata().withName("service3").endMetadata()
.withNewSpec()
.addNewPort()
.withProtocol("TCP")
.withPort(443)
.withNewTargetPort(443)
.endPort()
.withClusterIP("172.30.17.2")
.endSpec()
.build()
).always();
MOCK.expect().get().withPath("/api/v1/namespaces/cdi/services/multiport").andReturn(200,
new ServiceBuilder()
.withNewMetadata().withName("multiport").endMetadata()
.withNewSpec()
.addNewPort()
.withName("port1")
.withProtocol("TCP")
.withPort(8081)
.withNewTargetPort(8081)
.endPort()
.addNewPort()
.withName("port2")
.withProtocol("TCP")
.withPort(8082)
.withNewTargetPort(8082)
.endPort()
.addNewPort()
.withName("port3")
.withProtocol("TCP")
.withPort(8083)
.withNewTargetPort(8083)
.endPort()
.withClusterIP("172.30.17.2")
.endSpec()
.build()
).always();
//Endpoints
Endpoints service1Endpoints = new EndpointsBuilder()
.withNewMetadata()
.withName("service1")
.withNamespace("default")
.endMetadata()
.addNewSubset()
.addNewPort()
.withName("port")
.withPort(8080)
.endPort()
.addNewAddress()
.withIp("10.0.0.1")
.endAddress()
.endSubset()
.addNewSubset()
.addNewPort()
.withName("port")
.withPort(8080)
.endPort()
.addNewAddress()
.withIp("10.0.0.2")
.endAddress()
.endSubset()
.build();
Endpoints service2EndpointsA = new EndpointsBuilder()
.withNewMetadata()
.withName("service2")
.withNamespace("default")
.endMetadata()
.addNewSubset()
.addNewPort()
.withName("port")
.withPort(8080)
.endPort()
.addNewAddress()
.withIp("10.0.0.1")
.endAddress()
.endSubset()
.addNewSubset()
.addNewPort()
.withName("port")
.withPort(8080)
.endPort()
.addNewAddress()
.withIp("10.0.0.2")
.endAddress()
.endSubset()
.build();
Endpoints service2EndpointsB = new EndpointsBuilder()
.withNewMetadata()
.withName("service2")
.withNamespace("default")
.endMetadata()
.addNewSubset()
.addNewPort()
.withName("port")
.withPort(8080)
.endPort()
.addNewAddress()
.withIp("10.0.0.1")
.endAddress()
.endSubset()
.build();
Endpoints multiPortEndpoint = new EndpointsBuilder()
.withNewMetadata()
.withName("multiport")
.withNamespace("default")
.endMetadata()
.addNewSubset()
.addNewAddress()
.withIp("172.30.17.2")
.endAddress()
.addNewPort("port1", 8081, "TCP")
.addNewPort("port2", 8082, "TCP")
.addNewPort("port3", 8083, "TCP")
.endSubset()
.build();
MOCK.expect().withPath("/api/v1/namespaces/cdi/endpoints/service1").andReturn(200,
service1Endpoints
).always();
MOCK.expect().withPath("/api/v1/namespaces/cdi/endpoints/service2").andReturn(200,
service2EndpointsA
).once();
MOCK.expect().withPath("/api/v1/namespaces/cdi/endpoints/service2").andReturn(200,
service2EndpointsB
).always();
MOCK.expect().withPath("/api/v1/namespaces/cdi/endpoints/multiport").andReturn(200,
multiPortEndpoint
).always();
String masterUrl = MOCK.getServer().url("/").toString();
System.setProperty(Config.KUBERNETES_MASTER_SYSTEM_PROPERTY, masterUrl);
System.setProperty(Config.KUBERNETES_NAMESPACE_SYSTEM_PROPERTY, "cdi");
}
}