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);
}