use of org.eclipse.che.api.workspace.server.wsplugins.model.ChePluginEndpoint in project che-server by eclipse-che.
the class K8sContainerResolverBuilderTest method shouldPassOnlyParticularContainerEndpoints.
@Test
public void shouldPassOnlyParticularContainerEndpoints() {
// given
K8sContainerResolverBuilder builder = new K8sContainerResolverBuilder();
builder.setContainer(new CheContainer().ports(asList(new CheContainerPort().exposedPort(9014), new CheContainerPort().exposedPort(4040))));
builder.setPluginEndpoints(asList(new ChePluginEndpoint().targetPort(9014), new ChePluginEndpoint().targetPort(9013), new ChePluginEndpoint().targetPort(8080), new ChePluginEndpoint().targetPort(4040)));
K8sContainerResolver resolver = builder.build();
ArrayList<ChePluginEndpoint> expected = new ArrayList<>();
expected.add(new ChePluginEndpoint().targetPort(9014));
expected.add(new ChePluginEndpoint().targetPort(4040));
// when
List<ChePluginEndpoint> actualEndpoints = resolver.getEndpoints();
// then
assertEqualsNoOrder(actualEndpoints.toArray(), expected.toArray());
}
use of org.eclipse.che.api.workspace.server.wsplugins.model.ChePluginEndpoint in project che-server by eclipse-che.
the class KubernetesPluginsToolingApplierTest method shouldAddK8sServicesForChePluginEndpoints.
@Test
public void shouldAddK8sServicesForChePluginEndpoints() throws Exception {
// given
ChePluginEndpoint endpoint1 = new ChePluginEndpoint().name(CHE_PLUGIN_ENDPOINT_NAME).targetPort(101010).setPublic(true);
ChePluginEndpoint endpoint2 = new ChePluginEndpoint().name("test-endpoint-2").targetPort(2020).setPublic(false);
CheContainerPort cheContainerPort1 = new CheContainerPort().exposedPort(101010);
CheContainerPort cheContainerPort2 = new CheContainerPort().exposedPort(2020);
ChePlugin chePlugin = createChePlugin();
chePlugin.setEndpoints(asList(endpoint1, endpoint2));
chePlugin.getContainers().get(0).setPorts(asList(cheContainerPort1, cheContainerPort2));
// when
applier.apply(runtimeIdentity, internalEnvironment, singletonList(chePlugin));
// then
verifyK8sServices(internalEnvironment, endpoint1, endpoint2);
}
use of org.eclipse.che.api.workspace.server.wsplugins.model.ChePluginEndpoint in project che-server by eclipse-che.
the class MachineResolverTest method shouldFailWhenEndpointNameAlreadyExist.
@Test(expectedExceptions = InfrastructureException.class)
public void shouldFailWhenEndpointNameAlreadyExist() throws InfrastructureException {
// given
ChePluginEndpoint pluginEndpoint = new ChePluginEndpoint();
pluginEndpoint.setName("test-endpoint");
endpoints.add(pluginEndpoint);
component.setEndpoints(Collections.singletonList(new EndpointImpl("test-endpoint", 8080, Collections.emptyMap())));
// when -> then exception
resolver.resolve();
}
use of org.eclipse.che.api.workspace.server.wsplugins.model.ChePluginEndpoint in project che-server by eclipse-che.
the class SidecarServicesProvisionerTest method shouldNotDuplicateServicesWhenThereAreConflictingEndpoints.
@Test(expectedExceptions = InfrastructureException.class, expectedExceptionsMessageRegExp = "Applying of sidecar tooling failed. Kubernetes service with name '" + CONFLICTING_SERVICE_NAME + "' already exists in the workspace environment.")
public void shouldNotDuplicateServicesWhenThereAreConflictingEndpoints() throws Exception {
List<ChePluginEndpoint> actualEndpoints = asList(new ChePluginEndpoint().name(CONFLICTING_SERVICE_NAME).targetPort(8080), new ChePluginEndpoint().name(CONFLICTING_SERVICE_NAME).targetPort(10000));
endpoints.addAll(actualEndpoints);
KubernetesEnvironment kubernetesEnvironment = KubernetesEnvironment.builder().build();
provisioner.provision(kubernetesEnvironment);
}
use of org.eclipse.che.api.workspace.server.wsplugins.model.ChePluginEndpoint in project che-server by eclipse-che.
the class SidecarServicesProvisioner method provision.
/**
* Add k8s Service objects to environment to provide service discovery in sidecar based
* workspaces.
*/
public void provision(KubernetesEnvironment kubernetesEnvironment) throws InfrastructureException {
for (ChePluginEndpoint endpoint : endpoints) {
if (!isDiscoverable(endpoint)) {
continue;
}
String serviceName = endpoint.getName();
Service service = createService(serviceName, podName, endpoint.getTargetPort());
Map<String, Service> services = kubernetesEnvironment.getServices();
if (!services.containsKey(serviceName)) {
services.put(serviceName, service);
} else {
throw new InfrastructureException(format("Applying of sidecar tooling failed. Kubernetes service with name '%s' already exists in the workspace environment.", serviceName));
}
}
}
Aggregations