From b0a50e91b48f5a1073c708a07ef17dfdbc4d295b Mon Sep 17 00:00:00 2001 From: Max Shaposhnik Date: Fri, 6 Aug 2021 10:16:48 +0300 Subject: [PATCH] chore: Use networking.k8s.io/v1 version of Ingresses for workspaces (#73) Signed-off-by: Max Shaposhnik --- infrastructures/kubernetes/pom.xml | 4 -- .../kubernetes/KubernetesInternalRuntime.java | 2 +- .../environment/KubernetesEnvironment.java | 2 +- .../KubernetesEnvironmentFactory.java | 2 +- .../namespace/KubernetesIngresses.java | 14 ++-- .../namespace/KubernetesNamespace.java | 2 +- .../provision/IngressTlsProvisioner.java | 6 +- ...ubernetesPreviewUrlCommandProvisioner.java | 4 +- .../PreviewUrlCommandProvisioner.java | 2 +- .../provision/UniqueNamesProvisioner.java | 2 +- .../server/KubernetesServerExposer.java | 2 +- .../kubernetes/server/PreviewUrlExposer.java | 2 +- .../ExternalServerIngressBuilder.java | 66 +++++++++++++------ .../server/external/IngressServerExposer.java | 5 +- .../MultihostIngressServerExposer.java | 2 +- .../resolver/IngressServerResolver.java | 4 +- .../KubernetesServerResolverFactory.java | 2 +- .../kubernetes/util/Ingresses.java | 21 +++--- .../KubernetesInternalRuntimeTest.java | 21 +++--- .../KubernetesEnvironmentFactoryTest.java | 2 +- .../provision/IngressTlsProvisionerTest.java | 6 +- ...netesPreviewUrlCommandProvisionerTest.java | 19 ++++-- .../provision/UniqueNamesProvisionerTest.java | 4 +- .../server/IngressServerResolverTest.java | 20 +++--- .../server/PreviewUrlExposerTest.java | 30 +++++---- ...stExternalServiceExposureStrategyTest.java | 10 +-- .../ExternalServerIngressBuilderTest.java | 18 +++-- .../external/IngressServerExposerTest.java | 2 +- ...stExternalServiceExposureStrategyTest.java | 10 +-- .../kubernetes/util/IngressesTest.java | 38 ++++++++--- infrastructures/openshift/pom.xml | 4 -- .../environment/OpenShiftEnvironment.java | 3 +- 32 files changed, 199 insertions(+), 132 deletions(-) diff --git a/infrastructures/kubernetes/pom.xml b/infrastructures/kubernetes/pom.xml index 0645c346b2..d917ace354 100644 --- a/infrastructures/kubernetes/pom.xml +++ b/infrastructures/kubernetes/pom.xml @@ -93,10 +93,6 @@ io.fabric8 kubernetes-model-core - - io.fabric8 - kubernetes-model-extensions - io.fabric8 kubernetes-model-rbac diff --git a/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/KubernetesInternalRuntime.java b/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/KubernetesInternalRuntime.java index a2610fb88a..85f6b86119 100644 --- a/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/KubernetesInternalRuntime.java +++ b/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/KubernetesInternalRuntime.java @@ -31,7 +31,7 @@ import io.fabric8.kubernetes.api.model.PodTemplateSpec; import io.fabric8.kubernetes.api.model.Secret; import io.fabric8.kubernetes.api.model.Service; import io.fabric8.kubernetes.api.model.apps.Deployment; -import io.fabric8.kubernetes.api.model.extensions.Ingress; +import io.fabric8.kubernetes.api.model.networking.v1.Ingress; import io.opentracing.Scope; import io.opentracing.Span; import io.opentracing.Tracer; diff --git a/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/environment/KubernetesEnvironment.java b/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/environment/KubernetesEnvironment.java index e56c9590b9..fecfc20020 100644 --- a/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/environment/KubernetesEnvironment.java +++ b/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/environment/KubernetesEnvironment.java @@ -22,7 +22,7 @@ import io.fabric8.kubernetes.api.model.PodTemplateSpec; import io.fabric8.kubernetes.api.model.Secret; import io.fabric8.kubernetes.api.model.Service; import io.fabric8.kubernetes.api.model.apps.Deployment; -import io.fabric8.kubernetes.api.model.extensions.Ingress; +import io.fabric8.kubernetes.api.model.networking.v1.Ingress; import java.util.ArrayList; import java.util.HashMap; import java.util.List; diff --git a/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/environment/KubernetesEnvironmentFactory.java b/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/environment/KubernetesEnvironmentFactory.java index 9e815a7adb..a975ddfc40 100644 --- a/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/environment/KubernetesEnvironmentFactory.java +++ b/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/environment/KubernetesEnvironmentFactory.java @@ -23,7 +23,7 @@ import io.fabric8.kubernetes.api.model.Pod; import io.fabric8.kubernetes.api.model.Secret; import io.fabric8.kubernetes.api.model.Service; import io.fabric8.kubernetes.api.model.apps.Deployment; -import io.fabric8.kubernetes.api.model.extensions.Ingress; +import io.fabric8.kubernetes.api.model.networking.v1.Ingress; import java.util.ArrayList; import java.util.HashMap; import java.util.List; diff --git a/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/KubernetesIngresses.java b/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/KubernetesIngresses.java index 44d6a0f07d..261625635f 100644 --- a/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/KubernetesIngresses.java +++ b/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/KubernetesIngresses.java @@ -15,7 +15,7 @@ import static io.fabric8.kubernetes.api.model.DeletionPropagation.BACKGROUND; import static org.eclipse.che.workspace.infrastructure.kubernetes.Constants.CHE_WORKSPACE_ID_LABEL; import static org.eclipse.che.workspace.infrastructure.kubernetes.namespace.KubernetesObjectUtil.putLabel; -import io.fabric8.kubernetes.api.model.extensions.Ingress; +import io.fabric8.kubernetes.api.model.networking.v1.Ingress; import io.fabric8.kubernetes.client.KubernetesClientException; import io.fabric8.kubernetes.client.Watch; import io.fabric8.kubernetes.client.Watcher; @@ -55,7 +55,8 @@ public class KubernetesIngresses { try { return clientFactory .create(workspaceId) - .extensions() + .network() + .v1() .ingresses() .inNamespace(namespace) .withName(ingress.getMetadata().getName()) @@ -69,7 +70,8 @@ public class KubernetesIngresses { try { return clientFactory .create(workspaceId) - .extensions() + .network() + .v1() .ingresses() .inNamespace(namespace) .withLabel(CHE_WORKSPACE_ID_LABEL, workspaceId) @@ -88,7 +90,8 @@ public class KubernetesIngresses { Resource ingressResource = clientFactory .create(workspaceId) - .extensions() + .network() + .v1() .ingresses() .inNamespace(namespace) .withName(name); @@ -141,7 +144,8 @@ public class KubernetesIngresses { try { clientFactory .create(workspaceId) - .extensions() + .network() + .v1() .ingresses() .inNamespace(namespace) .withLabel(CHE_WORKSPACE_ID_LABEL, workspaceId) diff --git a/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/KubernetesNamespace.java b/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/KubernetesNamespace.java index 295ca57673..19de4ac729 100644 --- a/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/KubernetesNamespace.java +++ b/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/KubernetesNamespace.java @@ -23,7 +23,7 @@ import io.fabric8.kubernetes.api.model.Pod; import io.fabric8.kubernetes.api.model.Secret; import io.fabric8.kubernetes.api.model.Service; import io.fabric8.kubernetes.api.model.ServiceAccount; -import io.fabric8.kubernetes.api.model.extensions.Ingress; +import io.fabric8.kubernetes.api.model.networking.v1.Ingress; import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.KubernetesClientException; import io.fabric8.kubernetes.client.Watch; diff --git a/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/provision/IngressTlsProvisioner.java b/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/provision/IngressTlsProvisioner.java index ef27b70b80..e1d8b0069f 100644 --- a/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/provision/IngressTlsProvisioner.java +++ b/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/provision/IngressTlsProvisioner.java @@ -16,9 +16,9 @@ import static org.eclipse.che.workspace.infrastructure.kubernetes.provision.TlsP import io.fabric8.kubernetes.api.model.Secret; import io.fabric8.kubernetes.api.model.SecretBuilder; -import io.fabric8.kubernetes.api.model.extensions.Ingress; -import io.fabric8.kubernetes.api.model.extensions.IngressTLS; -import io.fabric8.kubernetes.api.model.extensions.IngressTLSBuilder; +import io.fabric8.kubernetes.api.model.networking.v1.Ingress; +import io.fabric8.kubernetes.api.model.networking.v1.IngressTLS; +import io.fabric8.kubernetes.api.model.networking.v1.IngressTLSBuilder; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; diff --git a/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/provision/KubernetesPreviewUrlCommandProvisioner.java b/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/provision/KubernetesPreviewUrlCommandProvisioner.java index 39723507e0..f50db8beab 100644 --- a/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/provision/KubernetesPreviewUrlCommandProvisioner.java +++ b/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/provision/KubernetesPreviewUrlCommandProvisioner.java @@ -12,8 +12,8 @@ package org.eclipse.che.workspace.infrastructure.kubernetes.provision; import io.fabric8.kubernetes.api.model.Service; -import io.fabric8.kubernetes.api.model.extensions.Ingress; -import io.fabric8.kubernetes.api.model.extensions.IngressRule; +import io.fabric8.kubernetes.api.model.networking.v1.Ingress; +import io.fabric8.kubernetes.api.model.networking.v1.IngressRule; import java.util.List; import java.util.Optional; import javax.inject.Singleton; diff --git a/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/provision/PreviewUrlCommandProvisioner.java b/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/provision/PreviewUrlCommandProvisioner.java index f65ea15a73..8f1ab59b52 100644 --- a/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/provision/PreviewUrlCommandProvisioner.java +++ b/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/provision/PreviewUrlCommandProvisioner.java @@ -17,7 +17,7 @@ import static org.eclipse.che.workspace.infrastructure.kubernetes.Warnings.NOT_A import io.fabric8.kubernetes.api.model.HasMetadata; import io.fabric8.kubernetes.api.model.Service; -import io.fabric8.kubernetes.api.model.extensions.Ingress; +import io.fabric8.kubernetes.api.model.networking.v1.Ingress; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; diff --git a/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/provision/UniqueNamesProvisioner.java b/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/provision/UniqueNamesProvisioner.java index a489ee9ae1..03d87a0a05 100644 --- a/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/provision/UniqueNamesProvisioner.java +++ b/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/provision/UniqueNamesProvisioner.java @@ -21,7 +21,7 @@ import io.fabric8.kubernetes.api.model.Container; import io.fabric8.kubernetes.api.model.ObjectMeta; import io.fabric8.kubernetes.api.model.Volume; import io.fabric8.kubernetes.api.model.apps.Deployment; -import io.fabric8.kubernetes.api.model.extensions.Ingress; +import io.fabric8.kubernetes.api.model.networking.v1.Ingress; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; diff --git a/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/KubernetesServerExposer.java b/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/KubernetesServerExposer.java index 87f66b532c..7e519d03e1 100644 --- a/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/KubernetesServerExposer.java +++ b/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/KubernetesServerExposer.java @@ -24,7 +24,7 @@ import io.fabric8.kubernetes.api.model.ContainerPortBuilder; import io.fabric8.kubernetes.api.model.Service; import io.fabric8.kubernetes.api.model.ServicePort; import io.fabric8.kubernetes.api.model.ServicePortBuilder; -import io.fabric8.kubernetes.api.model.extensions.Ingress; +import io.fabric8.kubernetes.api.model.networking.v1.Ingress; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; diff --git a/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/PreviewUrlExposer.java b/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/PreviewUrlExposer.java index 6c83219272..aff7c12db8 100644 --- a/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/PreviewUrlExposer.java +++ b/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/PreviewUrlExposer.java @@ -19,7 +19,7 @@ import com.google.common.annotations.VisibleForTesting; import io.fabric8.kubernetes.api.model.IntOrString; import io.fabric8.kubernetes.api.model.Service; import io.fabric8.kubernetes.api.model.ServicePort; -import io.fabric8.kubernetes.api.model.extensions.Ingress; +import io.fabric8.kubernetes.api.model.networking.v1.Ingress; import java.util.ArrayList; import java.util.Collections; import java.util.List; diff --git a/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/external/ExternalServerIngressBuilder.java b/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/external/ExternalServerIngressBuilder.java index a64fc202e8..9f1cafdd5c 100644 --- a/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/external/ExternalServerIngressBuilder.java +++ b/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/external/ExternalServerIngressBuilder.java @@ -13,19 +13,23 @@ package org.eclipse.che.workspace.infrastructure.kubernetes.server.external; import static com.google.common.base.Strings.isNullOrEmpty; -import io.fabric8.kubernetes.api.model.IntOrString; +import com.google.common.annotations.VisibleForTesting; import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; -import io.fabric8.kubernetes.api.model.extensions.HTTPIngressPath; -import io.fabric8.kubernetes.api.model.extensions.HTTPIngressPathBuilder; -import io.fabric8.kubernetes.api.model.extensions.HTTPIngressRuleValue; -import io.fabric8.kubernetes.api.model.extensions.HTTPIngressRuleValueBuilder; -import io.fabric8.kubernetes.api.model.extensions.Ingress; -import io.fabric8.kubernetes.api.model.extensions.IngressBackend; -import io.fabric8.kubernetes.api.model.extensions.IngressBackendBuilder; -import io.fabric8.kubernetes.api.model.extensions.IngressRule; -import io.fabric8.kubernetes.api.model.extensions.IngressRuleBuilder; -import io.fabric8.kubernetes.api.model.extensions.IngressSpec; -import io.fabric8.kubernetes.api.model.extensions.IngressSpecBuilder; +import io.fabric8.kubernetes.api.model.networking.v1.HTTPIngressPath; +import io.fabric8.kubernetes.api.model.networking.v1.HTTPIngressPathBuilder; +import io.fabric8.kubernetes.api.model.networking.v1.HTTPIngressRuleValue; +import io.fabric8.kubernetes.api.model.networking.v1.HTTPIngressRuleValueBuilder; +import io.fabric8.kubernetes.api.model.networking.v1.Ingress; +import io.fabric8.kubernetes.api.model.networking.v1.IngressBackend; +import io.fabric8.kubernetes.api.model.networking.v1.IngressBackendBuilder; +import io.fabric8.kubernetes.api.model.networking.v1.IngressBuilder; +import io.fabric8.kubernetes.api.model.networking.v1.IngressRule; +import io.fabric8.kubernetes.api.model.networking.v1.IngressRuleBuilder; +import io.fabric8.kubernetes.api.model.networking.v1.IngressServiceBackend; +import io.fabric8.kubernetes.api.model.networking.v1.IngressServiceBackendBuilder; +import io.fabric8.kubernetes.api.model.networking.v1.IngressSpec; +import io.fabric8.kubernetes.api.model.networking.v1.IngressSpecBuilder; +import io.fabric8.kubernetes.api.model.networking.v1.ServiceBackendPortBuilder; import java.util.HashMap; import java.util.Map; import org.eclipse.che.api.core.model.workspace.config.ServerConfig; @@ -43,12 +47,15 @@ public class ExternalServerIngressBuilder { private String path; private String name; private String serviceName; - private IntOrString servicePort; + private String servicePortName; + private Integer servicePort; private Map serversConfigs; private String machineName; private Map annotations; private Map labels; + @VisibleForTesting static final String INGRESS_PATH_TYPE = "Prefix"; + public ExternalServerIngressBuilder withHost(String host) { this.host = host; return this; @@ -74,8 +81,13 @@ public class ExternalServerIngressBuilder { return this; } - public ExternalServerIngressBuilder withServicePort(String targetPortName) { - this.servicePort = new IntOrString(targetPortName); + public ExternalServerIngressBuilder withServicePort(Integer targetPort) { + this.servicePort = targetPort; + return this; + } + + public ExternalServerIngressBuilder withServicePortName(String targetPortName) { + this.servicePortName = targetPortName; return this; } @@ -97,14 +109,26 @@ public class ExternalServerIngressBuilder { public Ingress build() { - IngressBackend ingressBackend = - new IngressBackendBuilder() - .withServiceName(serviceName) - .withNewServicePort(servicePort.getStrVal()) + ServiceBackendPortBuilder serviceBackendPortBuilder = new ServiceBackendPortBuilder(); + + // cannot set both port and name + if (!isNullOrEmpty(servicePortName)) { + serviceBackendPortBuilder.withName(servicePortName); + } else if (servicePort != null) { + serviceBackendPortBuilder.withNumber(servicePort); + } + + IngressServiceBackend ingressServiceBackend = + new IngressServiceBackendBuilder() + .withPort(serviceBackendPortBuilder.build()) + .withName(serviceName) .build(); + IngressBackend ingressBackend = + new IngressBackendBuilder().withService(ingressServiceBackend).build(); + HTTPIngressPathBuilder httpIngressPathBuilder = - new HTTPIngressPathBuilder().withBackend(ingressBackend); + new HTTPIngressPathBuilder().withBackend(ingressBackend).withPathType(INGRESS_PATH_TYPE); if (!isNullOrEmpty(path)) { httpIngressPathBuilder.withPath(path); @@ -128,7 +152,7 @@ public class ExternalServerIngressBuilder { ingressAnnotations.putAll( Annotations.newSerializer().servers(serversConfigs).machineName(machineName).annotations()); - return new io.fabric8.kubernetes.api.model.extensions.IngressBuilder() + return new IngressBuilder() .withSpec(ingressSpec) .withMetadata( new ObjectMetaBuilder() diff --git a/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/external/IngressServerExposer.java b/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/external/IngressServerExposer.java index 312e55ace9..34a9e57ea7 100644 --- a/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/external/IngressServerExposer.java +++ b/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/external/IngressServerExposer.java @@ -15,7 +15,7 @@ import static java.util.Collections.emptyMap; import com.google.common.base.Splitter; import io.fabric8.kubernetes.api.model.ServicePort; -import io.fabric8.kubernetes.api.model.extensions.Ingress; +import io.fabric8.kubernetes.api.model.networking.v1.Ingress; import java.util.HashMap; import java.util.Map; import javax.inject.Inject; @@ -124,7 +124,8 @@ public class IngressServerExposer .withServiceName(serviceName) .withAnnotations(annotations) .withLabels(labels) - .withServicePort(servicePort.getName()) + .withServicePortName(servicePort.getName()) + .withServicePort(servicePort.getPort()) .withServers(servers) .build(); } diff --git a/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/external/MultihostIngressServerExposer.java b/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/external/MultihostIngressServerExposer.java index a744e065ea..7174003ae2 100644 --- a/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/external/MultihostIngressServerExposer.java +++ b/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/external/MultihostIngressServerExposer.java @@ -11,7 +11,7 @@ */ package org.eclipse.che.workspace.infrastructure.kubernetes.server.external; -import io.fabric8.kubernetes.api.model.extensions.Ingress; +import io.fabric8.kubernetes.api.model.networking.v1.Ingress; import java.util.Map; import javax.inject.Inject; import javax.inject.Named; diff --git a/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/resolver/IngressServerResolver.java b/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/resolver/IngressServerResolver.java index 958628af4f..20ff7381b8 100644 --- a/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/resolver/IngressServerResolver.java +++ b/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/resolver/IngressServerResolver.java @@ -14,8 +14,8 @@ package org.eclipse.che.workspace.infrastructure.kubernetes.server.resolver; import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.Multimap; import io.fabric8.kubernetes.api.model.Service; -import io.fabric8.kubernetes.api.model.extensions.Ingress; -import io.fabric8.kubernetes.api.model.extensions.IngressRule; +import io.fabric8.kubernetes.api.model.networking.v1.Ingress; +import io.fabric8.kubernetes.api.model.networking.v1.IngressRule; import java.util.List; import java.util.Map; import java.util.Map.Entry; diff --git a/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/resolver/KubernetesServerResolverFactory.java b/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/resolver/KubernetesServerResolverFactory.java index 9fc188f16b..8b1abed657 100644 --- a/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/resolver/KubernetesServerResolverFactory.java +++ b/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/resolver/KubernetesServerResolverFactory.java @@ -15,7 +15,7 @@ import static org.eclipse.che.workspace.infrastructure.kubernetes.server.Workspa import static org.eclipse.che.workspace.infrastructure.kubernetes.server.WorkspaceExposureType.NATIVE; import com.google.common.collect.ImmutableMap; -import io.fabric8.kubernetes.api.model.extensions.Ingress; +import io.fabric8.kubernetes.api.model.networking.v1.Ingress; import javax.inject.Inject; import javax.inject.Named; import javax.inject.Singleton; diff --git a/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/util/Ingresses.java b/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/util/Ingresses.java index b67421358b..19621e2c97 100644 --- a/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/util/Ingresses.java +++ b/infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/util/Ingresses.java @@ -11,13 +11,13 @@ */ package org.eclipse.che.workspace.infrastructure.kubernetes.util; -import io.fabric8.kubernetes.api.model.IntOrString; import io.fabric8.kubernetes.api.model.Service; import io.fabric8.kubernetes.api.model.ServicePort; -import io.fabric8.kubernetes.api.model.extensions.HTTPIngressPath; -import io.fabric8.kubernetes.api.model.extensions.Ingress; -import io.fabric8.kubernetes.api.model.extensions.IngressBackend; -import io.fabric8.kubernetes.api.model.extensions.IngressRule; +import io.fabric8.kubernetes.api.model.networking.v1.HTTPIngressPath; +import io.fabric8.kubernetes.api.model.networking.v1.Ingress; +import io.fabric8.kubernetes.api.model.networking.v1.IngressBackend; +import io.fabric8.kubernetes.api.model.networking.v1.IngressRule; +import io.fabric8.kubernetes.api.model.networking.v1.ServiceBackendPort; import java.util.Collection; import java.util.Optional; @@ -41,8 +41,8 @@ public class Ingresses { for (IngressRule rule : ingress.getSpec().getRules()) { for (HTTPIngressPath path : rule.getHttp().getPaths()) { IngressBackend backend = path.getBackend(); - if (backend.getServiceName().equals(service.getMetadata().getName()) - && matchesServicePort(backend.getServicePort(), foundPort.get())) { + if (backend.getService().getName().equals(service.getMetadata().getName()) + && matchesServicePort(backend.getService().getPort(), foundPort.get())) { return Optional.of(rule); } } @@ -51,11 +51,12 @@ public class Ingresses { return Optional.empty(); } - private static boolean matchesServicePort(IntOrString backendPort, ServicePort servicePort) { - if (backendPort.getStrVal() != null && backendPort.getStrVal().equals(servicePort.getName())) { + private static boolean matchesServicePort( + ServiceBackendPort backendPort, ServicePort servicePort) { + if (backendPort.getName() != null && backendPort.getName().equals(servicePort.getName())) { return true; } - if (backendPort.getIntVal() != null && backendPort.getIntVal().equals(servicePort.getPort())) { + if (backendPort.getNumber() != null && backendPort.getNumber().equals(servicePort.getPort())) { return true; } return false; diff --git a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/KubernetesInternalRuntimeTest.java b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/KubernetesInternalRuntimeTest.java index 7984c46b7f..5d588113b9 100644 --- a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/KubernetesInternalRuntimeTest.java +++ b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/KubernetesInternalRuntimeTest.java @@ -72,10 +72,12 @@ import io.fabric8.kubernetes.api.model.ServicePortBuilder; import io.fabric8.kubernetes.api.model.ServiceSpec; import io.fabric8.kubernetes.api.model.apps.Deployment; import io.fabric8.kubernetes.api.model.apps.DeploymentBuilder; -import io.fabric8.kubernetes.api.model.extensions.Ingress; -import io.fabric8.kubernetes.api.model.extensions.IngressBackend; -import io.fabric8.kubernetes.api.model.extensions.IngressRule; -import io.fabric8.kubernetes.api.model.extensions.IngressSpec; +import io.fabric8.kubernetes.api.model.networking.v1.Ingress; +import io.fabric8.kubernetes.api.model.networking.v1.IngressBackend; +import io.fabric8.kubernetes.api.model.networking.v1.IngressRule; +import io.fabric8.kubernetes.api.model.networking.v1.IngressServiceBackend; +import io.fabric8.kubernetes.api.model.networking.v1.IngressSpec; +import io.fabric8.kubernetes.api.model.networking.v1.ServiceBackendPort; import io.opentracing.Tracer; import java.text.ParseException; import java.util.ArrayList; @@ -1319,11 +1321,14 @@ public class KubernetesInternalRuntimeTest { final Ingress ingress = mock(Ingress.class); mockName(INGRESS_NAME, ingress); final IngressSpec spec = mock(IngressSpec.class); - final IngressBackend backend = mock(IngressBackend.class); - when(backend.getServiceName()).thenReturn(SERVICE_NAME); - when(backend.getServicePort()).thenReturn(new IntOrString(EXPOSED_PORT_1)); - when(spec.getBackend()).thenReturn(backend); + final IngressServiceBackend ingressServiceBackend = mock(IngressServiceBackend.class); + final ServiceBackendPort serviceBackendPort = mock(ServiceBackendPort.class); + when(spec.getDefaultBackend()).thenReturn(backend); + when(backend.getService()).thenReturn(ingressServiceBackend); + when(ingressServiceBackend.getPort()).thenReturn(serviceBackendPort); + when(ingressServiceBackend.getName()).thenReturn(SERVICE_NAME); + when(serviceBackendPort.getNumber()).thenReturn(EXPOSED_PORT_1); final IngressRule rule = mock(IngressRule.class); when(rule.getHost()).thenReturn(INGRESS_HOST); diff --git a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/environment/KubernetesEnvironmentFactoryTest.java b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/environment/KubernetesEnvironmentFactoryTest.java index 28b7a49117..8b25667d42 100644 --- a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/environment/KubernetesEnvironmentFactoryTest.java +++ b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/environment/KubernetesEnvironmentFactoryTest.java @@ -50,7 +50,7 @@ import io.fabric8.kubernetes.api.model.Service; import io.fabric8.kubernetes.api.model.ServiceBuilder; import io.fabric8.kubernetes.api.model.apps.Deployment; import io.fabric8.kubernetes.api.model.apps.DeploymentBuilder; -import io.fabric8.kubernetes.api.model.extensions.IngressBuilder; +import io.fabric8.kubernetes.api.model.networking.v1.IngressBuilder; import org.eclipse.che.api.core.ValidationException; import org.eclipse.che.api.workspace.server.model.impl.WarningImpl; import org.eclipse.che.api.workspace.server.spi.environment.InternalEnvironment; diff --git a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/provision/IngressTlsProvisionerTest.java b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/provision/IngressTlsProvisionerTest.java index cbfe1987e7..c3651d74a2 100644 --- a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/provision/IngressTlsProvisionerTest.java +++ b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/provision/IngressTlsProvisionerTest.java @@ -24,7 +24,7 @@ import static org.testng.Assert.assertNull; import com.google.common.collect.ImmutableMap; import io.fabric8.kubernetes.api.model.Secret; -import io.fabric8.kubernetes.api.model.extensions.Ingress; +import io.fabric8.kubernetes.api.model.networking.v1.Ingress; import java.util.HashMap; import java.util.Map; import org.eclipse.che.api.core.model.workspace.config.ServerConfig; @@ -65,7 +65,8 @@ public class IngressTlsProvisionerTest { private final String machine = "machine"; private final String name = "IngressName"; private final String serviceName = "ServiceName"; - private final String servicePort = "server-port"; + private final String servicePortName = "server-port"; + private final Integer servicePort = 7777; private final String host = "server-host"; private final ExternalServerIngressBuilder externalServerIngressBuilder = @@ -78,6 +79,7 @@ public class IngressTlsProvisionerTest { .withName(name) .withServers(servers) .withServiceName(serviceName) + .withServicePortName(servicePortName) .withServicePort(servicePort) .build(); diff --git a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/provision/KubernetesPreviewUrlCommandProvisionerTest.java b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/provision/KubernetesPreviewUrlCommandProvisionerTest.java index 6bf4e6396a..3c852e5445 100644 --- a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/provision/KubernetesPreviewUrlCommandProvisionerTest.java +++ b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/provision/KubernetesPreviewUrlCommandProvisionerTest.java @@ -19,12 +19,14 @@ import io.fabric8.kubernetes.api.model.ObjectMeta; import io.fabric8.kubernetes.api.model.Service; import io.fabric8.kubernetes.api.model.ServicePort; import io.fabric8.kubernetes.api.model.ServiceSpec; -import io.fabric8.kubernetes.api.model.extensions.HTTPIngressPath; -import io.fabric8.kubernetes.api.model.extensions.HTTPIngressRuleValue; -import io.fabric8.kubernetes.api.model.extensions.Ingress; -import io.fabric8.kubernetes.api.model.extensions.IngressBackend; -import io.fabric8.kubernetes.api.model.extensions.IngressRule; -import io.fabric8.kubernetes.api.model.extensions.IngressSpec; +import io.fabric8.kubernetes.api.model.networking.v1.HTTPIngressPath; +import io.fabric8.kubernetes.api.model.networking.v1.HTTPIngressRuleValue; +import io.fabric8.kubernetes.api.model.networking.v1.Ingress; +import io.fabric8.kubernetes.api.model.networking.v1.IngressBackend; +import io.fabric8.kubernetes.api.model.networking.v1.IngressRule; +import io.fabric8.kubernetes.api.model.networking.v1.IngressServiceBackend; +import io.fabric8.kubernetes.api.model.networking.v1.IngressSpec; +import io.fabric8.kubernetes.api.model.networking.v1.ServiceBackendPort; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -170,7 +172,10 @@ public class KubernetesPreviewUrlCommandProvisionerTest { new HTTPIngressRuleValue( Collections.singletonList( new HTTPIngressPath( - new IngressBackend(null, "servicename", new IntOrString(SERVICE_PORT_NAME)), + new IngressBackend( + null, + new IngressServiceBackend( + "servicename", new ServiceBackendPort(SERVICE_PORT_NAME, PORT))), null, null)))); ingressSpec.setRules(Collections.singletonList(rule)); diff --git a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/provision/UniqueNamesProvisionerTest.java b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/provision/UniqueNamesProvisionerTest.java index 6b159fa810..95bf1bb78c 100644 --- a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/provision/UniqueNamesProvisionerTest.java +++ b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/provision/UniqueNamesProvisionerTest.java @@ -35,8 +35,8 @@ import io.fabric8.kubernetes.api.model.Volume; import io.fabric8.kubernetes.api.model.VolumeBuilder; import io.fabric8.kubernetes.api.model.apps.Deployment; import io.fabric8.kubernetes.api.model.apps.DeploymentBuilder; -import io.fabric8.kubernetes.api.model.extensions.Ingress; -import io.fabric8.kubernetes.api.model.extensions.IngressBuilder; +import io.fabric8.kubernetes.api.model.networking.v1.Ingress; +import io.fabric8.kubernetes.api.model.networking.v1.IngressBuilder; import java.util.HashMap; import org.eclipse.che.api.core.model.workspace.runtime.RuntimeIdentity; import org.eclipse.che.workspace.infrastructure.kubernetes.environment.KubernetesEnvironment; diff --git a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/IngressServerResolverTest.java b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/IngressServerResolverTest.java index c8207c15fa..14d25072ec 100644 --- a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/IngressServerResolverTest.java +++ b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/IngressServerResolverTest.java @@ -17,17 +17,18 @@ import static java.util.Collections.singletonMap; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertTrue; -import io.fabric8.kubernetes.api.model.IntOrString; import io.fabric8.kubernetes.api.model.LoadBalancerStatusBuilder; import io.fabric8.kubernetes.api.model.Service; import io.fabric8.kubernetes.api.model.ServiceBuilder; import io.fabric8.kubernetes.api.model.ServicePortBuilder; -import io.fabric8.kubernetes.api.model.extensions.HTTPIngressPath; -import io.fabric8.kubernetes.api.model.extensions.HTTPIngressRuleValue; -import io.fabric8.kubernetes.api.model.extensions.Ingress; -import io.fabric8.kubernetes.api.model.extensions.IngressBackend; -import io.fabric8.kubernetes.api.model.extensions.IngressBuilder; -import io.fabric8.kubernetes.api.model.extensions.IngressRule; +import io.fabric8.kubernetes.api.model.networking.v1.HTTPIngressPath; +import io.fabric8.kubernetes.api.model.networking.v1.HTTPIngressRuleValue; +import io.fabric8.kubernetes.api.model.networking.v1.Ingress; +import io.fabric8.kubernetes.api.model.networking.v1.IngressBackend; +import io.fabric8.kubernetes.api.model.networking.v1.IngressBuilder; +import io.fabric8.kubernetes.api.model.networking.v1.IngressRule; +import io.fabric8.kubernetes.api.model.networking.v1.IngressServiceBackend; +import io.fabric8.kubernetes.api.model.networking.v1.ServiceBackendPort; import java.util.HashMap; import java.util.Map; import org.eclipse.che.api.core.model.workspace.config.ServerConfig; @@ -300,7 +301,10 @@ public class IngressServerResolverTest { new HTTPIngressRuleValue( singletonList( new HTTPIngressPath( - new IngressBackend(null, name, new IntOrString("8080")), + new IngressBackend( + null, + new IngressServiceBackend( + name, new ServiceBackendPort("8080", 8080))), INGRESS_PATH_PREFIX, null))))) .endSpec() diff --git a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/PreviewUrlExposerTest.java b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/PreviewUrlExposerTest.java index 08b14bc5cb..9937234e00 100644 --- a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/PreviewUrlExposerTest.java +++ b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/PreviewUrlExposerTest.java @@ -20,12 +20,14 @@ import io.fabric8.kubernetes.api.model.ObjectMeta; import io.fabric8.kubernetes.api.model.Service; import io.fabric8.kubernetes.api.model.ServicePort; import io.fabric8.kubernetes.api.model.ServiceSpec; -import io.fabric8.kubernetes.api.model.extensions.HTTPIngressPath; -import io.fabric8.kubernetes.api.model.extensions.HTTPIngressRuleValue; -import io.fabric8.kubernetes.api.model.extensions.Ingress; -import io.fabric8.kubernetes.api.model.extensions.IngressBackend; -import io.fabric8.kubernetes.api.model.extensions.IngressRule; -import io.fabric8.kubernetes.api.model.extensions.IngressSpec; +import io.fabric8.kubernetes.api.model.networking.v1.HTTPIngressPath; +import io.fabric8.kubernetes.api.model.networking.v1.HTTPIngressRuleValue; +import io.fabric8.kubernetes.api.model.networking.v1.Ingress; +import io.fabric8.kubernetes.api.model.networking.v1.IngressBackend; +import io.fabric8.kubernetes.api.model.networking.v1.IngressRule; +import io.fabric8.kubernetes.api.model.networking.v1.IngressServiceBackend; +import io.fabric8.kubernetes.api.model.networking.v1.IngressSpec; +import io.fabric8.kubernetes.api.model.networking.v1.ServiceBackendPort; import java.util.Collections; import java.util.HashMap; import java.util.Map; @@ -45,7 +47,7 @@ import org.testng.annotations.Test; @Listeners(MockitoTestNGListener.class) public class PreviewUrlExposerTest { - private PreviewUrlExposer previewUrlExposer; + private PreviewUrlExposer previewUrlExposer; @Mock private ExternalServiceExposureStrategy externalServiceExposureStrategy; @@ -111,7 +113,10 @@ public class PreviewUrlExposerTest { IngressRule ingressRule = new IngressRule(); ingressRule.setHost("ingresshost"); IngressBackend ingressBackend = - new IngressBackend(null, "servicename", new IntOrString(SERVER_PORT_NAME)); + new IngressBackend( + null, + new IngressServiceBackend( + "servicename", new ServiceBackendPort(SERVER_PORT_NAME, PORT))); ingressRule.setHttp( new HTTPIngressRuleValue(singletonList(new HTTPIngressPath(ingressBackend, null, null)))); ingressSpec.setRules(singletonList(ingressRule)); @@ -172,8 +177,8 @@ public class PreviewUrlExposerTest { Ingress provisionedIngress = env.getIngresses().values().iterator().next(); IngressBackend provisionedIngressBackend = provisionedIngress.getSpec().getRules().get(0).getHttp().getPaths().get(0).getBackend(); - assertEquals(provisionedIngressBackend.getServicePort().getStrVal(), SERVER_PORT_NAME); - assertEquals(provisionedIngressBackend.getServiceName(), SERVICE_NAME); + assertEquals(provisionedIngressBackend.getService().getPort().getName(), SERVER_PORT_NAME); + assertEquals(provisionedIngressBackend.getService().getName(), SERVICE_NAME); } @Test @@ -209,8 +214,9 @@ public class PreviewUrlExposerTest { Ingress provisionedIngress = env.getIngresses().values().iterator().next(); IngressBackend provisionedIngressBackend = provisionedIngress.getSpec().getRules().get(0).getHttp().getPaths().get(0).getBackend(); - assertEquals(provisionedIngressBackend.getServicePort().getStrVal(), SERVER_PORT_NAME); + assertEquals(provisionedIngressBackend.getService().getPort().getName(), SERVER_PORT_NAME); assertEquals( - provisionedIngressBackend.getServiceName(), provisionedService.getMetadata().getName()); + provisionedIngressBackend.getService().getName(), + provisionedService.getMetadata().getName()); } } diff --git a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/external/DefaultHostExternalServiceExposureStrategyTest.java b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/external/DefaultHostExternalServiceExposureStrategyTest.java index d9b321b5b1..ea6ffbbe5c 100644 --- a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/external/DefaultHostExternalServiceExposureStrategyTest.java +++ b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/external/DefaultHostExternalServiceExposureStrategyTest.java @@ -25,9 +25,9 @@ import io.fabric8.kubernetes.api.model.Pod; import io.fabric8.kubernetes.api.model.PodBuilder; import io.fabric8.kubernetes.api.model.ServicePort; import io.fabric8.kubernetes.api.model.ServicePortBuilder; -import io.fabric8.kubernetes.api.model.extensions.Ingress; -import io.fabric8.kubernetes.api.model.extensions.IngressBackend; -import io.fabric8.kubernetes.api.model.extensions.IngressRule; +import io.fabric8.kubernetes.api.model.networking.v1.Ingress; +import io.fabric8.kubernetes.api.model.networking.v1.IngressBackend; +import io.fabric8.kubernetes.api.model.networking.v1.IngressRule; import java.util.Map; import org.eclipse.che.api.core.model.workspace.config.ServerConfig; import org.eclipse.che.api.workspace.server.model.impl.ServerConfigImpl; @@ -148,8 +148,8 @@ public class DefaultHostExternalServiceExposureStrategyTest { for (Ingress ingress : kubernetesEnvironment.getIngresses().values()) { IngressRule ingressRule = ingress.getSpec().getRules().get(0); IngressBackend backend = ingressRule.getHttp().getPaths().get(0).getBackend(); - if (serviceName.equals(backend.getServiceName())) { - assertEquals(backend.getServicePort().getStrVal(), servicePort.getName()); + if (serviceName.equals(backend.getService().getName())) { + assertEquals(backend.getService().getPort().getName(), servicePort.getName()); Annotations.Deserializer ingressAnnotations = Annotations.newDeserializer(ingress.getMetadata().getAnnotations()); diff --git a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/external/ExternalServerIngressBuilderTest.java b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/external/ExternalServerIngressBuilderTest.java index 34be496ded..44d1048d1b 100644 --- a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/external/ExternalServerIngressBuilderTest.java +++ b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/external/ExternalServerIngressBuilderTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2018 Red Hat, Inc. + * Copyright (c) 2012-2021 Red Hat, Inc. * This program and the accompanying materials are made * available under the terms of the Eclipse Public License 2.0 * which is available at https://www.eclipse.org/legal/epl-2.0/ @@ -12,12 +12,13 @@ package org.eclipse.che.workspace.infrastructure.kubernetes.server.external; import static java.util.Collections.singletonMap; +import static org.eclipse.che.workspace.infrastructure.kubernetes.server.external.ExternalServerIngressBuilder.INGRESS_PATH_TYPE; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertTrue; import com.google.common.collect.ImmutableMap; -import io.fabric8.kubernetes.api.model.extensions.HTTPIngressPath; -import io.fabric8.kubernetes.api.model.extensions.Ingress; +import io.fabric8.kubernetes.api.model.networking.v1.HTTPIngressPath; +import io.fabric8.kubernetes.api.model.networking.v1.Ingress; import java.util.Map; import org.eclipse.che.api.core.model.workspace.config.ServerConfig; import org.eclipse.che.api.workspace.server.model.impl.ServerConfigImpl; @@ -37,7 +38,8 @@ public class ExternalServerIngressBuilderTest { private static final String MACHINE_NAME = "machine"; private static final String NAME = "IngressName"; private static final String SERVICE_NAME = "ServiceName"; - private static final String SERVICE_PORT = "server-port"; + private static final String SERVICE_PORT_NAME = "server-port"; + private static final Integer SERVICE_PORT = 7777; private ExternalServerIngressBuilder externalServerIngressBuilder; @@ -62,6 +64,7 @@ public class ExternalServerIngressBuilderTest { .withName(NAME) .withServers(SERVERS) .withServiceName(SERVICE_NAME) + .withServicePortName(SERVICE_PORT_NAME) .withServicePort(SERVICE_PORT) .build(); @@ -83,6 +86,7 @@ public class ExternalServerIngressBuilderTest { .withName(NAME) .withServers(SERVERS) .withServiceName(SERVICE_NAME) + .withServicePortName(SERVICE_PORT_NAME) .withServicePort(SERVICE_PORT) .build(); @@ -104,6 +108,7 @@ public class ExternalServerIngressBuilderTest { .withName(NAME) .withServers(SERVERS) .withServiceName(SERVICE_NAME) + .withServicePortName(SERVICE_PORT_NAME) .withServicePort(SERVICE_PORT) .build(); @@ -116,8 +121,9 @@ public class ExternalServerIngressBuilderTest { HTTPIngressPath httpIngressPath = ingress.getSpec().getRules().get(0).getHttp().getPaths().get(0); assertEquals(httpIngressPath.getPath(), path); - assertEquals(httpIngressPath.getBackend().getServiceName(), SERVICE_NAME); - assertEquals(httpIngressPath.getBackend().getServicePort().getStrVal(), SERVICE_PORT); + assertEquals(httpIngressPath.getPathType(), INGRESS_PATH_TYPE); + assertEquals(httpIngressPath.getBackend().getService().getName(), SERVICE_NAME); + assertEquals(httpIngressPath.getBackend().getService().getPort().getName(), SERVICE_PORT_NAME); assertEquals(ingress.getMetadata().getName(), NAME); assertTrue(ingress.getMetadata().getAnnotations().containsKey("annotation-key")); diff --git a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/external/IngressServerExposerTest.java b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/external/IngressServerExposerTest.java index 1a3187102a..05869dcfcb 100644 --- a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/external/IngressServerExposerTest.java +++ b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/external/IngressServerExposerTest.java @@ -18,7 +18,7 @@ import static org.mockito.Mockito.when; import static org.testng.Assert.assertEquals; import io.fabric8.kubernetes.api.model.ServicePort; -import io.fabric8.kubernetes.api.model.extensions.Ingress; +import io.fabric8.kubernetes.api.model.networking.v1.Ingress; import java.util.Collection; import java.util.HashMap; import java.util.Map; diff --git a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/external/MultiHostExternalServiceExposureStrategyTest.java b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/external/MultiHostExternalServiceExposureStrategyTest.java index d7b1489f09..e8c5e32394 100644 --- a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/external/MultiHostExternalServiceExposureStrategyTest.java +++ b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/server/external/MultiHostExternalServiceExposureStrategyTest.java @@ -25,9 +25,9 @@ import io.fabric8.kubernetes.api.model.Pod; import io.fabric8.kubernetes.api.model.PodBuilder; import io.fabric8.kubernetes.api.model.ServicePort; import io.fabric8.kubernetes.api.model.ServicePortBuilder; -import io.fabric8.kubernetes.api.model.extensions.Ingress; -import io.fabric8.kubernetes.api.model.extensions.IngressBackend; -import io.fabric8.kubernetes.api.model.extensions.IngressRule; +import io.fabric8.kubernetes.api.model.networking.v1.Ingress; +import io.fabric8.kubernetes.api.model.networking.v1.IngressBackend; +import io.fabric8.kubernetes.api.model.networking.v1.IngressRule; import java.util.Map; import org.eclipse.che.api.core.model.workspace.config.ServerConfig; import org.eclipse.che.api.workspace.server.model.impl.ServerConfigImpl; @@ -120,8 +120,8 @@ public class MultiHostExternalServiceExposureStrategyTest { assertEquals(ingressRule.getHost(), ingressName + "." + DOMAIN); assertEquals(ingressRule.getHttp().getPaths().get(0).getPath(), "/"); IngressBackend backend = ingressRule.getHttp().getPaths().get(0).getBackend(); - assertEquals(backend.getServiceName(), serviceName); - assertEquals(backend.getServicePort().getStrVal(), servicePort.getName()); + assertEquals(backend.getService().getName(), serviceName); + assertEquals(backend.getService().getPort().getName(), servicePort.getName()); Annotations.Deserializer ingressAnnotations = Annotations.newDeserializer(ingress.getMetadata().getAnnotations()); diff --git a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/util/IngressesTest.java b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/util/IngressesTest.java index 58858263ee..2164efe6ea 100644 --- a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/util/IngressesTest.java +++ b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/util/IngressesTest.java @@ -21,12 +21,14 @@ import io.fabric8.kubernetes.api.model.ObjectMeta; import io.fabric8.kubernetes.api.model.Service; import io.fabric8.kubernetes.api.model.ServicePort; import io.fabric8.kubernetes.api.model.ServiceSpec; -import io.fabric8.kubernetes.api.model.extensions.HTTPIngressPath; -import io.fabric8.kubernetes.api.model.extensions.HTTPIngressRuleValue; -import io.fabric8.kubernetes.api.model.extensions.Ingress; -import io.fabric8.kubernetes.api.model.extensions.IngressBackend; -import io.fabric8.kubernetes.api.model.extensions.IngressRule; -import io.fabric8.kubernetes.api.model.extensions.IngressSpec; +import io.fabric8.kubernetes.api.model.networking.v1.HTTPIngressPath; +import io.fabric8.kubernetes.api.model.networking.v1.HTTPIngressRuleValue; +import io.fabric8.kubernetes.api.model.networking.v1.Ingress; +import io.fabric8.kubernetes.api.model.networking.v1.IngressBackend; +import io.fabric8.kubernetes.api.model.networking.v1.IngressRule; +import io.fabric8.kubernetes.api.model.networking.v1.IngressServiceBackend; +import io.fabric8.kubernetes.api.model.networking.v1.IngressSpec; +import io.fabric8.kubernetes.api.model.networking.v1.ServiceBackendPort; import java.util.Optional; import org.testng.annotations.Test; @@ -38,7 +40,12 @@ public class IngressesTest { final int PORT = 8080; Service service = createService(SERVER_PORT_NAME, PORT); - Ingress ingress = createIngress(new IngressBackend(null, "servicename", new IntOrString(PORT))); + Ingress ingress = + createIngress( + new IngressBackend( + null, + new IngressServiceBackend( + "servicename", new ServiceBackendPort(SERVER_PORT_NAME, PORT)))); Optional foundRule = Ingresses.findIngressRuleForServicePort(singletonList(ingress), service, PORT); @@ -53,7 +60,11 @@ public class IngressesTest { Service service = createService(SERVER_PORT_NAME, PORT); Ingress ingress = - createIngress(new IngressBackend(null, "servicename", new IntOrString(SERVER_PORT_NAME))); + createIngress( + new IngressBackend( + null, + new IngressServiceBackend( + "servicename", new ServiceBackendPort(SERVER_PORT_NAME, PORT)))); Optional foundRule = Ingresses.findIngressRuleForServicePort(singletonList(ingress), service, PORT); @@ -68,7 +79,11 @@ public class IngressesTest { Service service = createService(SERVER_PORT_NAME, PORT); Ingress ingress = - createIngress(new IngressBackend(null, "servicename", new IntOrString("does not exist"))); + createIngress( + new IngressBackend( + null, + new IngressServiceBackend( + "servicename", new ServiceBackendPort("does not exist", null)))); Optional foundRule = Ingresses.findIngressRuleForServicePort(singletonList(ingress), service, PORT); @@ -81,7 +96,10 @@ public class IngressesTest { final int PORT = 8080; Service service = createService(SERVER_PORT_NAME, PORT); - Ingress ingress = createIngress(new IngressBackend(null, "servicename", new IntOrString(666))); + Ingress ingress = + createIngress( + new IngressBackend( + null, new IngressServiceBackend("servicename", new ServiceBackendPort(null, 666)))); Optional foundRule = Ingresses.findIngressRuleForServicePort(singletonList(ingress), service, PORT); diff --git a/infrastructures/openshift/pom.xml b/infrastructures/openshift/pom.xml index c5ffbfd70c..c7b588bc20 100644 --- a/infrastructures/openshift/pom.xml +++ b/infrastructures/openshift/pom.xml @@ -50,10 +50,6 @@ io.fabric8 kubernetes-model-core - - io.fabric8 - kubernetes-model-extensions - io.fabric8 openshift-client diff --git a/infrastructures/openshift/src/main/java/org/eclipse/che/workspace/infrastructure/openshift/environment/OpenShiftEnvironment.java b/infrastructures/openshift/src/main/java/org/eclipse/che/workspace/infrastructure/openshift/environment/OpenShiftEnvironment.java index d74867b89a..fe6bcddfdc 100644 --- a/infrastructures/openshift/src/main/java/org/eclipse/che/workspace/infrastructure/openshift/environment/OpenShiftEnvironment.java +++ b/infrastructures/openshift/src/main/java/org/eclipse/che/workspace/infrastructure/openshift/environment/OpenShiftEnvironment.java @@ -17,7 +17,7 @@ import io.fabric8.kubernetes.api.model.Pod; import io.fabric8.kubernetes.api.model.Secret; import io.fabric8.kubernetes.api.model.Service; import io.fabric8.kubernetes.api.model.apps.Deployment; -import io.fabric8.kubernetes.api.model.extensions.Ingress; +import io.fabric8.kubernetes.api.model.networking.v1.Ingress; import io.fabric8.openshift.api.model.Route; import java.util.ArrayList; import java.util.HashMap; @@ -29,7 +29,6 @@ import org.eclipse.che.api.workspace.server.spi.environment.InternalEnvironment; import org.eclipse.che.api.workspace.server.spi.environment.InternalMachineConfig; import org.eclipse.che.api.workspace.server.spi.environment.InternalRecipe; import org.eclipse.che.workspace.infrastructure.kubernetes.environment.KubernetesEnvironment; -import org.eclipse.che.workspace.infrastructure.kubernetes.environment.KubernetesEnvironment.Builder; /** * Holds objects of OpenShift environment.