From 5370dde21301504faee5d9d9d54ec519c88bc951 Mon Sep 17 00:00:00 2001 From: Rohan Kumar Date: Wed, 28 Sep 2022 17:18:55 +0530 Subject: [PATCH] fix (openshift-client) : Fix OSGi startup exceptions while using KubernetesClient/OpenShiftClient + Remove ExtensionAdapter reference from ManagedKubernetesClient, no provider is exposed for ExtensionAdapter interface in kubernetes-client module. bindExtensionAdapter and unbindExtensionAdapter are throwing NullPointerException during startup. + Add Provide-Capability field in openshift-client bundle configuration in order to resolve SPIFly related NPE (reported in #3890) Signed-off-by: Rohan Kumar --- extensions/camel-k/client/pom.xml | 4 ++++ extensions/certmanager/client/pom.xml | 4 ++++ extensions/chaosmesh/client/pom.xml | 4 ++++ extensions/istio/client/pom.xml | 8 ++++++++ extensions/knative/client/pom.xml | 8 ++++++++ extensions/open-cluster-management/client/pom.xml | 4 ++++ extensions/service-catalog/client/pom.xml | 4 ++++ extensions/tekton/client/pom.xml | 4 ++++ extensions/verticalpodautoscaler/client/pom.xml | 4 ++++ extensions/volcano/client/pom.xml | 4 ++++ extensions/volumesnapshot/client/pom.xml | 4 ++++ httpclient-jdk/pom.xml | 4 ++++ httpclient-jetty/pom.xml | 4 ++++ httpclient-okhttp/pom.xml | 4 ++++ kubernetes-client/pom.xml | 4 ++++ .../client/osgi/ManagedKubernetesClient.java | 10 ---------- openshift-client/pom.xml | 5 +++++ 17 files changed, 73 insertions(+), 10 deletions(-) diff --git a/extensions/camel-k/client/pom.xml b/extensions/camel-k/client/pom.xml index 19f3159d680..cd99863dd7f 100644 --- a/extensions/camel-k/client/pom.xml +++ b/extensions/camel-k/client/pom.xml @@ -33,6 +33,10 @@ osgi.extender; filter:="(osgi.extender=osgi.serviceloader.registrar)" + + osgi.serviceloader; + osgi.serviceloader=io.fabric8.kubernetes.client.extension.ExtensionAdapter + io.fabric8.kubernetes.api.builder, !io.fabric8.camelk.client.*, diff --git a/extensions/certmanager/client/pom.xml b/extensions/certmanager/client/pom.xml index 5a89c5792ea..0bf217d5de9 100644 --- a/extensions/certmanager/client/pom.xml +++ b/extensions/certmanager/client/pom.xml @@ -34,6 +34,10 @@ osgi.extender; filter:="(osgi.extender=osgi.serviceloader.registrar)" + + osgi.serviceloader; + osgi.serviceloader=io.fabric8.kubernetes.client.extension.ExtensionAdapter + io.fabric8.kubernetes.api.builder, !io.fabric8.certmanager.client.*, diff --git a/extensions/chaosmesh/client/pom.xml b/extensions/chaosmesh/client/pom.xml index 40cf3a0823e..056f3a2d828 100644 --- a/extensions/chaosmesh/client/pom.xml +++ b/extensions/chaosmesh/client/pom.xml @@ -35,6 +35,10 @@ osgi.extender; filter:="(osgi.extender=osgi.serviceloader.registrar)" + + osgi.serviceloader; + osgi.serviceloader=io.fabric8.kubernetes.client.extension.ExtensionAdapter + io.fabric8.kubernetes.api.builder, !io.fabric8.chaosmesh.client.*, diff --git a/extensions/istio/client/pom.xml b/extensions/istio/client/pom.xml index 91675784bd0..a6f79aea5be 100755 --- a/extensions/istio/client/pom.xml +++ b/extensions/istio/client/pom.xml @@ -29,6 +29,14 @@ Fabric8 :: Istio :: Client + + osgi.extender; + filter:="(osgi.extender=osgi.serviceloader.registrar)" + + + osgi.serviceloader; + osgi.serviceloader=io.fabric8.kubernetes.client.extension.ExtensionAdapter + io.fabric8.kubernetes.api.builder, !io.fabric8.istio.client.*, diff --git a/extensions/knative/client/pom.xml b/extensions/knative/client/pom.xml index bf5117cb313..7ba2776aaf9 100755 --- a/extensions/knative/client/pom.xml +++ b/extensions/knative/client/pom.xml @@ -29,6 +29,14 @@ Fabric8 :: Knative :: Client + + osgi.extender; + filter:="(osgi.extender=osgi.serviceloader.registrar)" + + + osgi.serviceloader; + osgi.serviceloader=io.fabric8.kubernetes.client.extension.ExtensionAdapter + io.fabric8.kubernetes.api.builder, !io.fabric8.knative.client.*, diff --git a/extensions/open-cluster-management/client/pom.xml b/extensions/open-cluster-management/client/pom.xml index 0c295004f3b..4260074872c 100644 --- a/extensions/open-cluster-management/client/pom.xml +++ b/extensions/open-cluster-management/client/pom.xml @@ -35,6 +35,10 @@ osgi.extender; filter:="(osgi.extender=osgi.serviceloader.registrar)" + + osgi.serviceloader; + osgi.serviceloader=io.fabric8.kubernetes.client.extension.ExtensionAdapter + io.fabric8.kubernetes.api.builder, !io.fabric8.openclustermanagement.client.*, diff --git a/extensions/service-catalog/client/pom.xml b/extensions/service-catalog/client/pom.xml index 39ca5bc1c7e..3ed67b85af1 100644 --- a/extensions/service-catalog/client/pom.xml +++ b/extensions/service-catalog/client/pom.xml @@ -34,6 +34,10 @@ osgi.extender; filter:="(osgi.extender=osgi.serviceloader.registrar)" + + osgi.serviceloader; + osgi.serviceloader=io.fabric8.kubernetes.client.extension.ExtensionAdapter + io.fabric8.kubernetes.api.builder, !io.fabric8.servicecatalog.client.*, diff --git a/extensions/tekton/client/pom.xml b/extensions/tekton/client/pom.xml index d3933b73c34..d4fcad9a247 100644 --- a/extensions/tekton/client/pom.xml +++ b/extensions/tekton/client/pom.xml @@ -33,6 +33,10 @@ osgi.extender; filter:="(osgi.extender=osgi.serviceloader.registrar)" + + osgi.serviceloader; + osgi.serviceloader=io.fabric8.kubernetes.client.extension.ExtensionAdapter + io.fabric8.kubernetes.api.builder, !io.fabric8.tekton.client.*, diff --git a/extensions/verticalpodautoscaler/client/pom.xml b/extensions/verticalpodautoscaler/client/pom.xml index bb946b7e959..b27c990078d 100644 --- a/extensions/verticalpodautoscaler/client/pom.xml +++ b/extensions/verticalpodautoscaler/client/pom.xml @@ -34,6 +34,10 @@ osgi.extender; filter:="(osgi.extender=osgi.serviceloader.registrar)" + + osgi.serviceloader; + osgi.serviceloader=io.fabric8.kubernetes.client.extension.ExtensionAdapter + io.fabric8.kubernetes.api.builder, !io.fabric8.verticalpodautoscaler.client.*, diff --git a/extensions/volcano/client/pom.xml b/extensions/volcano/client/pom.xml index 8959dc0aa3c..82a95f4c8b1 100644 --- a/extensions/volcano/client/pom.xml +++ b/extensions/volcano/client/pom.xml @@ -34,6 +34,10 @@ osgi.extender; filter:="(osgi.extender=osgi.serviceloader.registrar)" + + osgi.serviceloader; + osgi.serviceloader=io.fabric8.kubernetes.client.extension.ExtensionAdapter + io.fabric8.kubernetes.api.builder, !io.fabric8.volcano.client.*, diff --git a/extensions/volumesnapshot/client/pom.xml b/extensions/volumesnapshot/client/pom.xml index 65aba8fabe4..f223c7a694b 100644 --- a/extensions/volumesnapshot/client/pom.xml +++ b/extensions/volumesnapshot/client/pom.xml @@ -35,6 +35,10 @@ osgi.extender; filter:="(osgi.extender=osgi.serviceloader.registrar)" + + osgi.serviceloader; + osgi.serviceloader=io.fabric8.kubernetes.client.extension.ExtensionAdapter + io.fabric8.kubernetes.api.builder, !io.fabric8.volumesnapshot.client.*, diff --git a/httpclient-jdk/pom.xml b/httpclient-jdk/pom.xml index 3baff37b639..1bcbf39ac75 100644 --- a/httpclient-jdk/pom.xml +++ b/httpclient-jdk/pom.xml @@ -34,6 +34,10 @@ osgi.extender; filter:="(osgi.extender=osgi.serviceloader.registrar)", + + osgi.serviceloader; + osgi.serviceloader=io.fabric8.kubernetes.client.http.HttpClient$Factory + !android.util*, *, diff --git a/httpclient-jetty/pom.xml b/httpclient-jetty/pom.xml index c3dd4311505..de7eba078a7 100644 --- a/httpclient-jetty/pom.xml +++ b/httpclient-jetty/pom.xml @@ -34,6 +34,10 @@ osgi.extender; filter:="(osgi.extender=osgi.serviceloader.registrar)", + + osgi.serviceloader; + osgi.serviceloader=io.fabric8.kubernetes.client.http.HttpClient$Factory + !android.util*, *, diff --git a/httpclient-okhttp/pom.xml b/httpclient-okhttp/pom.xml index 9a358ec7048..06e84487058 100644 --- a/httpclient-okhttp/pom.xml +++ b/httpclient-okhttp/pom.xml @@ -33,6 +33,10 @@ osgi.extender; filter:="(osgi.extender=osgi.serviceloader.registrar)", + + osgi.serviceloader; + osgi.serviceloader=io.fabric8.kubernetes.client.http.HttpClient$Factory + !android.util*, *, diff --git a/kubernetes-client/pom.xml b/kubernetes-client/pom.xml index 9c2a7ca19bc..e048056a581 100644 --- a/kubernetes-client/pom.xml +++ b/kubernetes-client/pom.xml @@ -33,6 +33,10 @@ osgi.extender; filter:="(osgi.extender=osgi.serviceloader.processor)", + + osgi.serviceloader; + osgi.serviceloader=io.fabric8.kubernetes.client.ServiceToURLProvider + !android.util*, *, diff --git a/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/osgi/ManagedKubernetesClient.java b/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/osgi/ManagedKubernetesClient.java index 257c3762433..deb86418146 100644 --- a/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/osgi/ManagedKubernetesClient.java +++ b/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/osgi/ManagedKubernetesClient.java @@ -21,7 +21,6 @@ import io.fabric8.kubernetes.client.NamespacedKubernetesClient; import io.fabric8.kubernetes.client.OAuthTokenProvider; import io.fabric8.kubernetes.client.ResourceHandler; -import io.fabric8.kubernetes.client.extension.ExtensionAdapter; import org.apache.felix.scr.annotations.Activate; import org.apache.felix.scr.annotations.Component; import org.apache.felix.scr.annotations.ConfigurationPolicy; @@ -66,7 +65,6 @@ @Service({ KubernetesClient.class, NamespacedKubernetesClient.class }) @References({ @Reference(referenceInterface = io.fabric8.kubernetes.client.ResourceHandler.class, cardinality = ReferenceCardinality.OPTIONAL_MULTIPLE, policy = ReferencePolicy.DYNAMIC, bind = "bindResourceHandler", unbind = "unbindResourceHandler"), - @Reference(referenceInterface = ExtensionAdapter.class, cardinality = ReferenceCardinality.OPTIONAL_MULTIPLE, policy = ReferencePolicy.DYNAMIC, bind = "bindExtensionAdapter", unbind = "unbindExtensionAdapter"), @Reference(referenceInterface = OAuthTokenProvider.class, cardinality = ReferenceCardinality.OPTIONAL_UNARY, policyOption = ReferencePolicyOption.GREEDY, bind = "bindOAuthTokenProvider", unbind = "unbindOAuthTokenProvider") }) public class ManagedKubernetesClient extends NamespacedKubernetesClientAdapter { @@ -191,14 +189,6 @@ public void unbindResourceHandler(ResourceHandler resourceHandler) { // not used } - public void bindExtensionAdapter(ExtensionAdapter adapter) { - getClient().getAdapters().register(adapter); - } - - public void unbindExtensionAdapter(ExtensionAdapter adapter) { - getClient().getAdapters().unregister(adapter); - } - public void bindOAuthTokenProvider(OAuthTokenProvider provider) { this.provider = provider; } diff --git a/openshift-client/pom.xml b/openshift-client/pom.xml index 5ba889e2f8c..3a846bc0ac9 100644 --- a/openshift-client/pom.xml +++ b/openshift-client/pom.xml @@ -33,6 +33,11 @@ osgi.extender; filter:="(osgi.extender=osgi.serviceloader.registrar)" + + osgi.serviceloader; + osgi.serviceloader=io.fabric8.kubernetes.client.extension.ExtensionAdapter, + io.fabric8.kubernetes.client.ServiceToURLProvider + !org.junit*, *