diff --git a/assembly/assembly-wsmaster-war/src/main/webapp/WEB-INF/classes/che/che.properties b/assembly/assembly-wsmaster-war/src/main/webapp/WEB-INF/classes/che/che.properties index 1e3345ce44..e2d7debe0f 100644 --- a/assembly/assembly-wsmaster-war/src/main/webapp/WEB-INF/classes/che/che.properties +++ b/assembly/assembly-wsmaster-war/src/main/webapp/WEB-INF/classes/che/che.properties @@ -539,6 +539,11 @@ che.infra.openshift.trusted_ca.dest_configmap_labels=config.openshift.io/inject- # to allow clear identification. che.infra.openshift.route.labels=NULL +# The hostname that should be used as a suffix for the workspace routes. +# For example host=open.che.org then the route will look like routed3qrtk.open.che.org +# It has to be a valid DNS name. +che.infra.openshift.route.host.domain_suffix=NULL + ### Experimental properties # Next properties are subject to changes and removal, so do not rely on them in a stable Che assembly diff --git a/infrastructures/openshift/pom.xml b/infrastructures/openshift/pom.xml index a11c1c2773..1166be1a3e 100644 --- a/infrastructures/openshift/pom.xml +++ b/infrastructures/openshift/pom.xml @@ -94,6 +94,10 @@ org.eclipse.che.core che-core-commons-inject + + org.eclipse.che.core + che-core-commons-lang + org.eclipse.che.core che-core-commons-tracing diff --git a/infrastructures/openshift/src/main/java/org/eclipse/che/workspace/infrastructure/openshift/server/RouteServerExposer.java b/infrastructures/openshift/src/main/java/org/eclipse/che/workspace/infrastructure/openshift/server/RouteServerExposer.java index 907f1d7cc7..309d0213ed 100644 --- a/infrastructures/openshift/src/main/java/org/eclipse/che/workspace/infrastructure/openshift/server/RouteServerExposer.java +++ b/infrastructures/openshift/src/main/java/org/eclipse/che/workspace/infrastructure/openshift/server/RouteServerExposer.java @@ -26,6 +26,7 @@ import javax.inject.Named; import javax.inject.Singleton; import org.eclipse.che.api.core.model.workspace.config.ServerConfig; import org.eclipse.che.commons.annotation.Nullable; +import org.eclipse.che.commons.lang.NameGenerator; import org.eclipse.che.workspace.infrastructure.kubernetes.Annotations; import org.eclipse.che.workspace.infrastructure.kubernetes.Names; import org.eclipse.che.workspace.infrastructure.kubernetes.server.external.ExternalServerExposer; @@ -99,14 +100,17 @@ import org.eclipse.che.workspace.infrastructure.openshift.environment.OpenShiftE public class RouteServerExposer implements ExternalServerExposer { private final Map labels; + private final String domainSuffix; @Inject public RouteServerExposer( - @Nullable @Named("che.infra.openshift.route.labels") String labelsProperty) { + @Nullable @Named("che.infra.openshift.route.labels") String labelsProperty, + @Nullable @Named("che.infra.openshift.route.host.domain_suffix") String domainSuffix) { this.labels = labelsProperty != null ? Splitter.on(",").withKeyValueSeparator("=").split(labelsProperty) : emptyMap(); + this.domainSuffix = domainSuffix; } @Override @@ -124,6 +128,10 @@ public class RouteServerExposer implements ExternalServerExposer servers; @@ -148,6 +157,11 @@ public class RouteServerExposer implements ExternalServerExposer servers = new HashMap<>(); + servers.put("server", new ServerConfigImpl()); + + // when + osExternalServerExposer.expose( + osEnv, + "machine123", + "service123", + null, + new ServicePort("servicePort", null, null, "TCP", null), + servers); + + // then + assertEquals(1, osEnv.getRoutes().size()); + Route route = osEnv.getRoutes().values().iterator().next(); + assertNotNull(route); + + assertEquals(route.getSpec().getTo().getName(), "service123"); + assertEquals(route.getSpec().getPort().getTargetPort().getStrVal(), "servicePort"); + assertTrue(route.getSpec().getHost().endsWith(".open.che.org")); + assertTrue(route.getSpec().getHost().startsWith("route")); } } diff --git a/infrastructures/openshift/src/test/java/org/eclipse/che/workspace/infrastructure/openshift/server/OpenShiftPreviewUrlExposerTest.java b/infrastructures/openshift/src/test/java/org/eclipse/che/workspace/infrastructure/openshift/server/OpenShiftPreviewUrlExposerTest.java index b0b05884da..6e73f0d560 100644 --- a/infrastructures/openshift/src/test/java/org/eclipse/che/workspace/infrastructure/openshift/server/OpenShiftPreviewUrlExposerTest.java +++ b/infrastructures/openshift/src/test/java/org/eclipse/che/workspace/infrastructure/openshift/server/OpenShiftPreviewUrlExposerTest.java @@ -43,7 +43,7 @@ public class OpenShiftPreviewUrlExposerTest { @BeforeMethod public void setUp() { - RouteServerExposer externalServerExposer = new RouteServerExposer("a=b"); + RouteServerExposer externalServerExposer = new RouteServerExposer("a=b", null); previewUrlEndpointsProvisioner = new OpenShiftPreviewUrlExposer(externalServerExposer); }