Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bump kubernetes-client-bom from 6.1.1 to 6.2.0 #28710

Merged
merged 1 commit into from
Oct 24, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 2 additions & 2 deletions bom/application/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -151,8 +151,8 @@
<kotlin.version>1.7.20</kotlin.version>
<kotlin.coroutine.version>1.6.4</kotlin.coroutine.version>
<kotlin-serialization.version>1.4.1</kotlin-serialization.version>
<kubernetes-client.version>6.1.1</kubernetes-client.version> <!-- Please check with Java Operator SDK team before updating -->
<dekorate.version>3.0.2</dekorate.version> <!-- Please check with Java Operator SDK team before updating -->
<kubernetes-client.version>6.2.0</kubernetes-client.version> <!-- Please check with Java Operator SDK team before updating -->
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry you will have to rebase as I just merged a Dekorate bump. I tried to do it but I can't push to your fork because you have this weird org setup :).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No worries, Done :)

you have this weird org setup :).

Yes, I'm using this to better organize the repos in my profile. However, last month I realized (Ioannis shared this) that this won't work well for PRs since I can't let maintainers access my branches :( If someone knows of a better alternative, please share ;)

<dekorate.version>3.1.1</dekorate.version> <!-- Please check with Java Operator SDK team before updating -->
<maven-invoker.version>3.2.0</maven-invoker.version>
<awaitility.version>4.2.0</awaitility.version>
<jboss-logmanager.version>1.0.10</jboss-logmanager.version>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,19 @@

import com.fasterxml.jackson.annotation.JsonFormat;

import io.fabric8.kubernetes.api.builder.VisitableBuilder;
import io.fabric8.kubernetes.api.model.AnyType;
import io.fabric8.kubernetes.api.model.IntOrString;
import io.fabric8.kubernetes.api.model.KubeSchema;
import io.fabric8.kubernetes.api.model.KubernetesResource;
import io.fabric8.kubernetes.api.model.KubernetesResourceList;
import io.fabric8.kubernetes.client.CustomResource;
import io.fabric8.kubernetes.client.DefaultKubernetesClient;
import io.fabric8.kubernetes.client.VersionInfo;
import io.fabric8.kubernetes.client.Watcher;
import io.fabric8.kubernetes.client.http.HttpClient;
import io.fabric8.kubernetes.client.impl.KubernetesClientImpl;
import io.fabric8.kubernetes.internal.KubernetesDeserializer;
import io.quarkus.arc.deployment.AdditionalBeanBuildItem;
import io.quarkus.deployment.Capabilities;
import io.quarkus.deployment.Capability;
Expand All @@ -44,19 +55,16 @@

public class KubernetesClientProcessor {

private static final DotName WATCHER = DotName.createSimple("io.fabric8.kubernetes.client.Watcher");
private static final Logger log = Logger.getLogger(KubernetesClientProcessor.class.getName());
private static final DotName WATCHER = DotName.createSimple(Watcher.class.getName());
private static final DotName RESOURCE_EVENT_HANDLER = DotName
.createSimple("io.fabric8.kubernetes.client.informers.ResourceEventHandler");
private static final DotName KUBERNETES_RESOURCE = DotName
.createSimple("io.fabric8.kubernetes.api.model.KubernetesResource");
.createSimple(io.fabric8.kubernetes.client.informers.ResourceEventHandler.class.getName());
private static final DotName KUBERNETES_RESOURCE = DotName.createSimple(KubernetesResource.class.getName());
private static final DotName KUBERNETES_RESOURCE_LIST = DotName
.createSimple("io.fabric8.kubernetes.api.model.KubernetesResourceList");

private static final DotName VISITABLE_BUILDER = DotName
.createSimple("io.fabric8.kubernetes.api.builder.VisitableBuilder");
private static final DotName CUSTOM_RESOURCE = DotName.createSimple("io.fabric8.kubernetes.client.CustomResource");

private static final Logger log = Logger.getLogger(KubernetesClientProcessor.class.getName());
.createSimple(KubernetesResourceList.class.getName());
private static final DotName KUBE_SCHEMA = DotName.createSimple(KubeSchema.class.getName());
private static final DotName VISITABLE_BUILDER = DotName.createSimple(VisitableBuilder.class.getName());
private static final DotName CUSTOM_RESOURCE = DotName.createSimple(CustomResource.class.getName());

private static final Predicate<DotName> IS_OKHTTP_CLASS = d -> d.toString().startsWith("okhttp3");
private static final DotName JSON_FORMAT = DotName.createSimple(JsonFormat.class.getName());
Expand All @@ -77,7 +85,7 @@ public void registerBeanProducers(BuildProducer<AdditionalBeanBuildItem> additio
@BuildStep
public void nativeImageSupport(BuildProducer<RuntimeReinitializedClassBuildItem> runtimeInitializedClassProducer) {
runtimeInitializedClassProducer
.produce(new RuntimeReinitializedClassBuildItem("io.fabric8.kubernetes.client.utils.Utils"));
.produce(new RuntimeReinitializedClassBuildItem(io.fabric8.kubernetes.client.utils.Utils.class.getName()));
}

@BuildStep
Expand Down Expand Up @@ -163,10 +171,9 @@ public void process(ApplicationIndexBuildItem applicationIndex, CombinedIndexBui

// we also ignore some classes that are annotated with @JsonDeserialize that would force the registration of the entire model
ignoredJsonDeserializationClasses.produce(
new IgnoreJsonDeserializeClassBuildItem(DotName.createSimple("io.fabric8.kubernetes.api.model.KubeSchema")));
new IgnoreJsonDeserializeClassBuildItem(KUBE_SCHEMA));
ignoredJsonDeserializationClasses.produce(
new IgnoreJsonDeserializeClassBuildItem(
DotName.createSimple("io.fabric8.kubernetes.api.model.KubernetesResourceList")));
new IgnoreJsonDeserializeClassBuildItem(KUBERNETES_RESOURCE_LIST));
ignoredJsonDeserializationClasses.produce(new IgnoreJsonDeserializeClassBuildItem(KUBERNETES_RESOURCE));

final String[] deserializerClasses = combinedIndexBuildItem.getIndex()
Expand All @@ -185,14 +192,19 @@ public void process(ApplicationIndexBuildItem applicationIndex, CombinedIndexBui
.toArray(String[]::new);
reflectiveClasses.produce(new ReflectiveClassBuildItem(true, false, serializerClasses));

reflectiveClasses
.produce(new ReflectiveClassBuildItem(true, true, KubernetesClientImpl.class.getName()));
reflectiveClasses
.produce(new ReflectiveClassBuildItem(true, true, DefaultKubernetesClient.class.getName()));
reflectiveClasses
.produce(new ReflectiveClassBuildItem(true, false, "io.fabric8.kubernetes.api.model.IntOrString"));
.produce(new ReflectiveClassBuildItem(true, false, AnyType.class.getName()));
reflectiveClasses
.produce(new ReflectiveClassBuildItem(true, false, IntOrString.class.getName()));

reflectiveClasses
.produce(new ReflectiveClassBuildItem(true, false, "io.fabric8.kubernetes.internal.KubernetesDeserializer"));
.produce(new ReflectiveClassBuildItem(true, false, KubernetesDeserializer.class.getName()));
reflectiveClasses
.produce(new ReflectiveClassBuildItem(true, true, "io.fabric8.kubernetes.client.VersionInfo"));
.produce(new ReflectiveClassBuildItem(true, true, VersionInfo.class.getName()));

if (log.isDebugEnabled()) {
final String watchedClassNames = watchedClasses
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,28 @@

import java.util.Collections;

import org.jboss.jandex.DotName;

import io.fabric8.kubernetes.client.extension.ExtensionAdapter;
import io.fabric8.openshift.client.DefaultOpenShiftClient;
import io.fabric8.openshift.client.impl.NamespacedOpenShiftExtensionAdapter;
import io.fabric8.openshift.client.impl.OpenShiftClientImpl;
import io.fabric8.openshift.client.impl.OpenShiftExtensionAdapter;
import io.quarkus.arc.deployment.AdditionalBeanBuildItem;
import io.quarkus.arc.deployment.IgnoreSplitPackageBuildItem;
import io.quarkus.deployment.Feature;
import io.quarkus.deployment.annotations.BuildProducer;
import io.quarkus.deployment.annotations.BuildStep;
import io.quarkus.deployment.builditem.CombinedIndexBuildItem;
import io.quarkus.deployment.builditem.FeatureBuildItem;
import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
import io.quarkus.deployment.builditem.nativeimage.ServiceProviderBuildItem;
import io.quarkus.it.openshift.client.runtime.OpenShiftClientProducer;

public class OpenShiftClientProcessor {

@BuildStep
public void process(BuildProducer<AdditionalBeanBuildItem> additionalBeanBuildItemProducer) {
public void registerBeanProducers(BuildProducer<AdditionalBeanBuildItem> additionalBeanBuildItemProducer) {
// wire up the OpenShiftClient bean support
additionalBeanBuildItemProducer.produce(AdditionalBeanBuildItem.unremovableOf(OpenShiftClientProducer.class));
}
Expand All @@ -23,6 +33,39 @@ public FeatureBuildItem feature() {
return new FeatureBuildItem(Feature.OPENSHIFT_CLIENT);
}

@BuildStep
public void process(BuildProducer<ReflectiveClassBuildItem> reflectiveClasses,
CombinedIndexBuildItem combinedIndexBuildItem,
BuildProducer<ServiceProviderBuildItem> serviceProviderProducer) {

final String[] deserializerClasses = combinedIndexBuildItem.getIndex()
.getAllKnownSubclasses(DotName.createSimple("com.fasterxml.jackson.databind.JsonDeserializer"))
.stream()
.map(c -> c.name().toString())
.filter(s -> s.startsWith("io.fabric8.openshift"))
.toArray(String[]::new);
reflectiveClasses.produce(new ReflectiveClassBuildItem(true, false, deserializerClasses));

final String[] serializerClasses = combinedIndexBuildItem.getIndex()
.getAllKnownSubclasses(DotName.createSimple("com.fasterxml.jackson.databind.JsonSerializer"))
.stream()
.map(c -> c.name().toString())
.filter(s -> s.startsWith("io.fabric8.openshift"))
.toArray(String[]::new);
reflectiveClasses.produce(new ReflectiveClassBuildItem(true, false, serializerClasses));

reflectiveClasses
.produce(new ReflectiveClassBuildItem(true, true, OpenShiftClientImpl.class.getName()));
reflectiveClasses
.produce(new ReflectiveClassBuildItem(true, true, DefaultOpenShiftClient.class.getName()));

// Register the default OpenShift ExtensionAdapter implementations
serviceProviderProducer.produce(new ServiceProviderBuildItem(
ExtensionAdapter.class.getName(), OpenShiftExtensionAdapter.class.getName()));
serviceProviderProducer.produce(new ServiceProviderBuildItem(
ExtensionAdapter.class.getName(), NamespacedOpenShiftExtensionAdapter.class.getName()));
}

@BuildStep
public IgnoreSplitPackageBuildItem splitPackages() {
return new IgnoreSplitPackageBuildItem(Collections.singleton("io.fabric8.openshift.api.model"));
Expand Down