Search in sources :

Example 1 with CREATE_EXTERNAL_URLS

use of org.eclipse.jkube.kit.enricher.api.BaseEnricher.CREATE_EXTERNAL_URLS in project jkube by eclipse.

the class IngressEnricherTest method testCreateIngressFromXMLConfigWithConfiguredServiceName.

@Test
public void testCreateIngressFromXMLConfigWithConfiguredServiceName() {
    // Given
    ResourceConfig resourceConfig = ResourceConfig.builder().ingress(IngressConfig.builder().ingressRule(IngressRuleConfig.builder().host("foo.bar.com").path(IngressRulePathConfig.builder().pathType("ImplementationSpecific").path("/icons").serviceName("hello-k8s").servicePort(80).build()).build()).ingressRule(IngressRuleConfig.builder().host("*.foo.com").path(IngressRulePathConfig.builder().path("/icons-storage").pathType("Exact").resource(IngressRulePathResourceConfig.builder().apiGroup("k8s.example.com").kind("StorageBucket").name("icon-assets").build()).build()).build()).ingressTlsConfig(IngressTlsConfig.builder().host("https-example.foo.com").secretName("testsecret-tls").build()).build()).build();
    // @formatter:off
    new Expectations() {

        {
            // Enable creation of Ingress for Service of type LoadBalancer
            context.getProperty(CREATE_EXTERNAL_URLS);
            result = "true";
            context.getConfiguration().getResource();
            result = resourceConfig;
        }
    };
    // @formatter:on
    Service providedService = initTestService().build();
    KubernetesListBuilder kubernetesListBuilder = new KubernetesListBuilder().addToItems(providedService);
    // When
    ingressEnricher.create(PlatformMode.kubernetes, kubernetesListBuilder);
    // Then
    assertThat(kubernetesListBuilder).extracting(KubernetesListBuilder::buildItems).asList().hasSize(2).element(1).asInstanceOf(InstanceOfAssertFactories.type(Ingress.class)).hasFieldOrPropertyWithValue("apiVersion", "networking.k8s.io/v1").hasFieldOrPropertyWithValue("metadata.name", providedService.getMetadata().getName()).extracting(Ingress::getSpec).satisfies(is -> assertThat(is).extracting("tls").asList().element(0).hasFieldOrPropertyWithValue("secretName", "testsecret-tls").extracting("hosts").asList().containsExactly("https-example.foo.com")).extracting(IngressSpec::getRules).satisfies(r -> assertThat(r).asList().element(0).hasFieldOrPropertyWithValue("host", "foo.bar.com").extracting("http.paths").asList().element(0).hasFieldOrPropertyWithValue("path", "/icons").hasFieldOrPropertyWithValue("pathType", "ImplementationSpecific").hasFieldOrPropertyWithValue("backend.service.name", "hello-k8s").hasFieldOrPropertyWithValue("backend.service.port.number", 80)).satisfies(r -> assertThat(r).asList().element(1).hasFieldOrPropertyWithValue("host", "*.foo.com").extracting("http.paths").asList().element(0).hasFieldOrPropertyWithValue("path", "/icons-storage").hasFieldOrPropertyWithValue("pathType", "Exact").hasFieldOrPropertyWithValue("backend.resource.apiGroup", "k8s.example.com").hasFieldOrPropertyWithValue("backend.resource.kind", "StorageBucket").hasFieldOrPropertyWithValue("backend.resource.name", "icon-assets"));
}
Also used : Expectations(mockit.Expectations) KubernetesListBuilder(io.fabric8.kubernetes.api.model.KubernetesListBuilder) ProcessorConfig(org.eclipse.jkube.kit.config.resource.ProcessorConfig) IntOrString(io.fabric8.kubernetes.api.model.IntOrString) Expectations(mockit.Expectations) InstanceOfAssertFactories(org.assertj.core.api.InstanceOfAssertFactories) ImageConfiguration(org.eclipse.jkube.kit.config.image.ImageConfiguration) ServicePortBuilder(io.fabric8.kubernetes.api.model.ServicePortBuilder) PlatformMode(org.eclipse.jkube.kit.config.resource.PlatformMode) Configuration(org.eclipse.jkube.kit.enricher.api.model.Configuration) IngressTLSBuilder(io.fabric8.kubernetes.api.model.networking.v1.IngressTLSBuilder) IngressSpec(io.fabric8.kubernetes.api.model.networking.v1.IngressSpec) IngressRulePathConfig(org.eclipse.jkube.kit.config.resource.IngressRulePathConfig) ResourceConfig(org.eclipse.jkube.kit.config.resource.ResourceConfig) IngressRuleConfig(org.eclipse.jkube.kit.config.resource.IngressRuleConfig) ServiceSpecBuilder(io.fabric8.kubernetes.api.model.ServiceSpecBuilder) Service(io.fabric8.kubernetes.api.model.Service) IngressRulePathResourceConfig(org.eclipse.jkube.kit.config.resource.IngressRulePathResourceConfig) AssertionsForClassTypes.assertThat(org.assertj.core.api.AssertionsForClassTypes.assertThat) IngressBuilder(io.fabric8.kubernetes.api.model.networking.v1.IngressBuilder) ServiceBuilder(io.fabric8.kubernetes.api.model.ServiceBuilder) IngressTlsConfig(org.eclipse.jkube.kit.config.resource.IngressTlsConfig) ObjectMetaBuilder(io.fabric8.kubernetes.api.model.ObjectMetaBuilder) Before(org.junit.Before) KubernetesListBuilder(io.fabric8.kubernetes.api.model.KubernetesListBuilder) JKubeEnricherContext(org.eclipse.jkube.kit.enricher.api.JKubeEnricherContext) Test(org.junit.Test) CREATE_EXTERNAL_URLS(org.eclipse.jkube.kit.enricher.api.BaseEnricher.CREATE_EXTERNAL_URLS) KitLogger(org.eclipse.jkube.kit.common.KitLogger) List(java.util.List) TreeMap(java.util.TreeMap) IngressConfig(org.eclipse.jkube.kit.config.resource.IngressConfig) Ingress(io.fabric8.kubernetes.api.model.networking.v1.Ingress) ObjectMeta(io.fabric8.kubernetes.api.model.ObjectMeta) Collections(java.util.Collections) Mocked(mockit.Mocked) IngressSpec(io.fabric8.kubernetes.api.model.networking.v1.IngressSpec) Service(io.fabric8.kubernetes.api.model.Service) Ingress(io.fabric8.kubernetes.api.model.networking.v1.Ingress) ResourceConfig(org.eclipse.jkube.kit.config.resource.ResourceConfig) IngressRulePathResourceConfig(org.eclipse.jkube.kit.config.resource.IngressRulePathResourceConfig) Test(org.junit.Test)

Aggregations

IntOrString (io.fabric8.kubernetes.api.model.IntOrString)1 KubernetesListBuilder (io.fabric8.kubernetes.api.model.KubernetesListBuilder)1 ObjectMeta (io.fabric8.kubernetes.api.model.ObjectMeta)1 ObjectMetaBuilder (io.fabric8.kubernetes.api.model.ObjectMetaBuilder)1 Service (io.fabric8.kubernetes.api.model.Service)1 ServiceBuilder (io.fabric8.kubernetes.api.model.ServiceBuilder)1 ServicePortBuilder (io.fabric8.kubernetes.api.model.ServicePortBuilder)1 ServiceSpecBuilder (io.fabric8.kubernetes.api.model.ServiceSpecBuilder)1 Ingress (io.fabric8.kubernetes.api.model.networking.v1.Ingress)1 IngressBuilder (io.fabric8.kubernetes.api.model.networking.v1.IngressBuilder)1 IngressSpec (io.fabric8.kubernetes.api.model.networking.v1.IngressSpec)1 IngressTLSBuilder (io.fabric8.kubernetes.api.model.networking.v1.IngressTLSBuilder)1 Collections (java.util.Collections)1 List (java.util.List)1 TreeMap (java.util.TreeMap)1 Expectations (mockit.Expectations)1 Mocked (mockit.Mocked)1 AssertionsForClassTypes.assertThat (org.assertj.core.api.AssertionsForClassTypes.assertThat)1 InstanceOfAssertFactories (org.assertj.core.api.InstanceOfAssertFactories)1 KitLogger (org.eclipse.jkube.kit.common.KitLogger)1