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