Search in sources :

Example 6 with APIGroup

use of io.fabric8.kubernetes.api.model.APIGroup in project strimzi-kafka-operator by strimzi.

the class PlatformFeaturesAvailabilityTest method buildAPIGroup.

private APIGroup buildAPIGroup(String group, String... versions) {
    APIGroup apiGroup = new APIGroupBuilder().withName(group).build();
    List<GroupVersionForDiscovery> groupVersions = new ArrayList<>();
    for (String version : versions) {
        groupVersions.add(new GroupVersionForDiscoveryBuilder().withGroupVersion(group + "/" + version).withVersion(version).build());
    }
    apiGroup.setVersions(groupVersions);
    return apiGroup;
}
Also used : GroupVersionForDiscoveryBuilder(io.fabric8.kubernetes.api.model.GroupVersionForDiscoveryBuilder) ArrayList(java.util.ArrayList) APIGroup(io.fabric8.kubernetes.api.model.APIGroup) APIGroupBuilder(io.fabric8.kubernetes.api.model.APIGroupBuilder) GroupVersionForDiscovery(io.fabric8.kubernetes.api.model.GroupVersionForDiscovery)

Example 7 with APIGroup

use of io.fabric8.kubernetes.api.model.APIGroup in project strimzi-kafka-operator by strimzi.

the class PlatformFeaturesAvailabilityTest method testApiDetectionOpenshift.

@Test
public void testApiDetectionOpenshift(Vertx vertx, VertxTestContext context) throws InterruptedException, ExecutionException {
    List<APIGroup> apis = new ArrayList<>();
    apis.add(buildAPIGroup("route.openshift.io", "v1"));
    apis.add(buildAPIGroup("build.openshift.io", "v1"));
    apis.add(buildAPIGroup("image.openshift.io", "v1"));
    startMockApi(vertx, apis);
    KubernetesClient client = new DefaultKubernetesClient("127.0.0.1:" + server.actualPort());
    Checkpoint async = context.checkpoint();
    PlatformFeaturesAvailability.create(vertx, client).onComplete(context.succeeding(pfa -> context.verify(() -> {
        assertThat(pfa.hasRoutes(), is(true));
        assertThat(pfa.hasBuilds(), is(true));
        assertThat(pfa.hasImages(), is(true));
        async.flag();
    })));
}
Also used : VertxTestContext(io.vertx.junit5.VertxTestContext) CoreMatchers.is(org.hamcrest.CoreMatchers.is) HttpServer(io.vertx.core.http.HttpServer) GroupVersionForDiscovery(io.fabric8.kubernetes.api.model.GroupVersionForDiscovery) ArrayList(java.util.ArrayList) APIGroupBuilder(io.fabric8.kubernetes.api.model.APIGroupBuilder) ExtendWith(org.junit.jupiter.api.extension.ExtendWith) APIGroup(io.fabric8.kubernetes.api.model.APIGroup) VersionInfo(io.fabric8.kubernetes.client.VersionInfo) MatcherAssert.assertThat(org.hamcrest.MatcherAssert.assertThat) DefaultKubernetesClient(io.fabric8.kubernetes.client.DefaultKubernetesClient) ParseException(java.text.ParseException) GroupVersionForDiscoveryBuilder(io.fabric8.kubernetes.api.model.GroupVersionForDiscoveryBuilder) Promise(io.vertx.core.Promise) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) Vertx(io.vertx.core.Vertx) Set(java.util.Set) JsonProcessingException(com.fasterxml.jackson.core.JsonProcessingException) VertxExtension(io.vertx.junit5.VertxExtension) Collectors(java.util.stream.Collectors) Test(org.junit.jupiter.api.Test) ExecutionException(java.util.concurrent.ExecutionException) AfterEach(org.junit.jupiter.api.AfterEach) List(java.util.List) HttpMethod(io.vertx.core.http.HttpMethod) KubernetesClient(io.fabric8.kubernetes.client.KubernetesClient) Checkpoint(io.vertx.junit5.Checkpoint) Collections(java.util.Collections) DefaultKubernetesClient(io.fabric8.kubernetes.client.DefaultKubernetesClient) KubernetesClient(io.fabric8.kubernetes.client.KubernetesClient) Checkpoint(io.vertx.junit5.Checkpoint) ArrayList(java.util.ArrayList) APIGroup(io.fabric8.kubernetes.api.model.APIGroup) DefaultKubernetesClient(io.fabric8.kubernetes.client.DefaultKubernetesClient) Test(org.junit.jupiter.api.Test)

Example 8 with APIGroup

use of io.fabric8.kubernetes.api.model.APIGroup in project strimzi-kafka-operator by strimzi.

the class PlatformFeaturesAvailabilityTest method startMockApi.

void startMockApi(Vertx vertx, String version, List<APIGroup> apis) throws InterruptedException, ExecutionException {
    Set<String> groupsPaths = apis.stream().map(api -> "/apis/" + api.getName()).collect(Collectors.toSet());
    HttpServer httpServer = vertx.createHttpServer().requestHandler(request -> {
        if (HttpMethod.GET.equals(request.method()) && groupsPaths.contains(request.uri())) {
            String groupName = request.uri().substring(request.uri().lastIndexOf("/") + 1);
            APIGroup group = apis.stream().filter(g -> groupName.equals(g.getName())).findFirst().orElse(null);
            try {
                request.response().setStatusCode(200).end(OBJECTMAPPER.writeValueAsString(group));
            } catch (JsonProcessingException e) {
                e.printStackTrace();
            }
        } else if (HttpMethod.GET.equals(request.method()) && "/version".equals(request.uri())) {
            request.response().setStatusCode(200).end(version);
        } else {
            request.response().setStatusCode(404).end();
        }
    });
    server = httpServer.listen(0).toCompletionStage().toCompletableFuture().get();
}
Also used : VertxTestContext(io.vertx.junit5.VertxTestContext) CoreMatchers.is(org.hamcrest.CoreMatchers.is) HttpServer(io.vertx.core.http.HttpServer) GroupVersionForDiscovery(io.fabric8.kubernetes.api.model.GroupVersionForDiscovery) ArrayList(java.util.ArrayList) APIGroupBuilder(io.fabric8.kubernetes.api.model.APIGroupBuilder) ExtendWith(org.junit.jupiter.api.extension.ExtendWith) APIGroup(io.fabric8.kubernetes.api.model.APIGroup) VersionInfo(io.fabric8.kubernetes.client.VersionInfo) MatcherAssert.assertThat(org.hamcrest.MatcherAssert.assertThat) DefaultKubernetesClient(io.fabric8.kubernetes.client.DefaultKubernetesClient) ParseException(java.text.ParseException) GroupVersionForDiscoveryBuilder(io.fabric8.kubernetes.api.model.GroupVersionForDiscoveryBuilder) Promise(io.vertx.core.Promise) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) Vertx(io.vertx.core.Vertx) Set(java.util.Set) JsonProcessingException(com.fasterxml.jackson.core.JsonProcessingException) VertxExtension(io.vertx.junit5.VertxExtension) Collectors(java.util.stream.Collectors) Test(org.junit.jupiter.api.Test) ExecutionException(java.util.concurrent.ExecutionException) AfterEach(org.junit.jupiter.api.AfterEach) List(java.util.List) HttpMethod(io.vertx.core.http.HttpMethod) KubernetesClient(io.fabric8.kubernetes.client.KubernetesClient) Checkpoint(io.vertx.junit5.Checkpoint) Collections(java.util.Collections) HttpServer(io.vertx.core.http.HttpServer) APIGroup(io.fabric8.kubernetes.api.model.APIGroup) JsonProcessingException(com.fasterxml.jackson.core.JsonProcessingException)

Example 9 with APIGroup

use of io.fabric8.kubernetes.api.model.APIGroup in project strimzi by strimzi.

the class PlatformFeaturesAvailability method checkApiAvailability.

private static Future<Boolean> checkApiAvailability(Vertx vertx, KubernetesClient client, String group, String version) {
    Promise<Boolean> promise = Promise.promise();
    vertx.executeBlocking(request -> {
        try {
            APIGroup apiGroup = client.getApiGroup(group);
            boolean supported;
            if (apiGroup != null) {
                supported = apiGroup.getVersions().stream().anyMatch(v -> version.equals(v.getVersion()));
            } else {
                supported = false;
            }
            LOGGER.warn("API Group {} is {}supported", group, supported ? "" : "not ");
            request.complete(supported);
        } catch (Exception e) {
            LOGGER.error("Detection of API availability failed.", e);
            request.fail(e);
        }
    }, promise);
    return promise.future();
}
Also used : Util(io.strimzi.operator.common.Util) Logger(org.apache.logging.log4j.Logger) APIGroup(io.fabric8.kubernetes.api.model.APIGroup) Promise(io.vertx.core.Promise) Map(java.util.Map) KubernetesClient(io.fabric8.kubernetes.client.KubernetesClient) VersionInfo(io.fabric8.kubernetes.client.VersionInfo) Vertx(io.vertx.core.Vertx) ParseException(java.text.ParseException) Future(io.vertx.core.Future) LogManager(org.apache.logging.log4j.LogManager) APIGroup(io.fabric8.kubernetes.api.model.APIGroup) ParseException(java.text.ParseException)

Example 10 with APIGroup

use of io.fabric8.kubernetes.api.model.APIGroup in project strimzi by strimzi.

the class PlatformFeaturesAvailabilityTest method testApiDetectionOce.

@Test
public void testApiDetectionOce(Vertx vertx, VertxTestContext context) throws InterruptedException, ExecutionException {
    List<APIGroup> apis = new ArrayList<>();
    apis.add(buildAPIGroup("route.openshift.io", "v1"));
    apis.add(buildAPIGroup("build.openshift.io", "v1"));
    startMockApi(vertx, apis);
    KubernetesClient client = new DefaultKubernetesClient("127.0.0.1:" + server.actualPort());
    Checkpoint async = context.checkpoint();
    PlatformFeaturesAvailability.create(vertx, client).onComplete(context.succeeding(pfa -> context.verify(() -> {
        assertThat(pfa.hasRoutes(), is(true));
        assertThat(pfa.hasBuilds(), is(true));
        assertThat(pfa.hasImages(), is(false));
        async.flag();
    })));
}
Also used : VertxTestContext(io.vertx.junit5.VertxTestContext) CoreMatchers.is(org.hamcrest.CoreMatchers.is) HttpServer(io.vertx.core.http.HttpServer) GroupVersionForDiscovery(io.fabric8.kubernetes.api.model.GroupVersionForDiscovery) ArrayList(java.util.ArrayList) APIGroupBuilder(io.fabric8.kubernetes.api.model.APIGroupBuilder) ExtendWith(org.junit.jupiter.api.extension.ExtendWith) APIGroup(io.fabric8.kubernetes.api.model.APIGroup) VersionInfo(io.fabric8.kubernetes.client.VersionInfo) MatcherAssert.assertThat(org.hamcrest.MatcherAssert.assertThat) DefaultKubernetesClient(io.fabric8.kubernetes.client.DefaultKubernetesClient) ParseException(java.text.ParseException) GroupVersionForDiscoveryBuilder(io.fabric8.kubernetes.api.model.GroupVersionForDiscoveryBuilder) Promise(io.vertx.core.Promise) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) Vertx(io.vertx.core.Vertx) Set(java.util.Set) JsonProcessingException(com.fasterxml.jackson.core.JsonProcessingException) VertxExtension(io.vertx.junit5.VertxExtension) Collectors(java.util.stream.Collectors) Test(org.junit.jupiter.api.Test) ExecutionException(java.util.concurrent.ExecutionException) AfterEach(org.junit.jupiter.api.AfterEach) List(java.util.List) HttpMethod(io.vertx.core.http.HttpMethod) KubernetesClient(io.fabric8.kubernetes.client.KubernetesClient) Checkpoint(io.vertx.junit5.Checkpoint) Collections(java.util.Collections) DefaultKubernetesClient(io.fabric8.kubernetes.client.DefaultKubernetesClient) KubernetesClient(io.fabric8.kubernetes.client.KubernetesClient) Checkpoint(io.vertx.junit5.Checkpoint) ArrayList(java.util.ArrayList) APIGroup(io.fabric8.kubernetes.api.model.APIGroup) DefaultKubernetesClient(io.fabric8.kubernetes.client.DefaultKubernetesClient) Test(org.junit.jupiter.api.Test)

Aggregations

APIGroup (io.fabric8.kubernetes.api.model.APIGroup)12 APIGroupBuilder (io.fabric8.kubernetes.api.model.APIGroupBuilder)10 GroupVersionForDiscovery (io.fabric8.kubernetes.api.model.GroupVersionForDiscovery)10 GroupVersionForDiscoveryBuilder (io.fabric8.kubernetes.api.model.GroupVersionForDiscoveryBuilder)10 KubernetesClient (io.fabric8.kubernetes.client.KubernetesClient)10 VersionInfo (io.fabric8.kubernetes.client.VersionInfo)10 Promise (io.vertx.core.Promise)10 Vertx (io.vertx.core.Vertx)10 ParseException (java.text.ParseException)10 ArrayList (java.util.ArrayList)10 JsonProcessingException (com.fasterxml.jackson.core.JsonProcessingException)8 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)8 DefaultKubernetesClient (io.fabric8.kubernetes.client.DefaultKubernetesClient)8 HttpMethod (io.vertx.core.http.HttpMethod)8 HttpServer (io.vertx.core.http.HttpServer)8 Checkpoint (io.vertx.junit5.Checkpoint)8 VertxExtension (io.vertx.junit5.VertxExtension)8 VertxTestContext (io.vertx.junit5.VertxTestContext)8 Collections (java.util.Collections)8 List (java.util.List)8