Skip to content

Commit

Permalink
fix (openshift-client) : Fix OSGi startup exceptions while using Kube…
Browse files Browse the repository at this point in the history
…rnetesClient/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 <rohaan@redhat.com>
  • Loading branch information
rohanKanojia committed Oct 4, 2022
1 parent f1b1eb9 commit 5370dde
Show file tree
Hide file tree
Showing 17 changed files with 73 additions and 10 deletions.
4 changes: 4 additions & 0 deletions extensions/camel-k/client/pom.xml
Expand Up @@ -33,6 +33,10 @@
osgi.extender;
filter:="(osgi.extender=osgi.serviceloader.registrar)"
</osgi.require-capability>
<osgi.provide-capability>
osgi.serviceloader;
osgi.serviceloader=io.fabric8.kubernetes.client.extension.ExtensionAdapter
</osgi.provide-capability>
<osgi.import>
io.fabric8.kubernetes.api.builder,
!io.fabric8.camelk.client.*,
Expand Down
4 changes: 4 additions & 0 deletions extensions/certmanager/client/pom.xml
Expand Up @@ -34,6 +34,10 @@
osgi.extender;
filter:="(osgi.extender=osgi.serviceloader.registrar)"
</osgi.require-capability>
<osgi.provide-capability>
osgi.serviceloader;
osgi.serviceloader=io.fabric8.kubernetes.client.extension.ExtensionAdapter
</osgi.provide-capability>
<osgi.import>
io.fabric8.kubernetes.api.builder,
!io.fabric8.certmanager.client.*,
Expand Down
4 changes: 4 additions & 0 deletions extensions/chaosmesh/client/pom.xml
Expand Up @@ -35,6 +35,10 @@
osgi.extender;
filter:="(osgi.extender=osgi.serviceloader.registrar)"
</osgi.require-capability>
<osgi.provide-capability>
osgi.serviceloader;
osgi.serviceloader=io.fabric8.kubernetes.client.extension.ExtensionAdapter
</osgi.provide-capability>
<osgi.import>
io.fabric8.kubernetes.api.builder,
!io.fabric8.chaosmesh.client.*,
Expand Down
8 changes: 8 additions & 0 deletions extensions/istio/client/pom.xml
Expand Up @@ -29,6 +29,14 @@
<name>Fabric8 :: Istio :: Client</name>

<properties>
<osgi.require-capability>
osgi.extender;
filter:="(osgi.extender=osgi.serviceloader.registrar)"
</osgi.require-capability>
<osgi.provide-capability>
osgi.serviceloader;
osgi.serviceloader=io.fabric8.kubernetes.client.extension.ExtensionAdapter
</osgi.provide-capability>
<osgi.import>
io.fabric8.kubernetes.api.builder,
!io.fabric8.istio.client.*,
Expand Down
8 changes: 8 additions & 0 deletions extensions/knative/client/pom.xml
Expand Up @@ -29,6 +29,14 @@
<name>Fabric8 :: Knative :: Client</name>

<properties>
<osgi.require-capability>
osgi.extender;
filter:="(osgi.extender=osgi.serviceloader.registrar)"
</osgi.require-capability>
<osgi.provide-capability>
osgi.serviceloader;
osgi.serviceloader=io.fabric8.kubernetes.client.extension.ExtensionAdapter
</osgi.provide-capability>
<osgi.import>
io.fabric8.kubernetes.api.builder,
!io.fabric8.knative.client.*,
Expand Down
4 changes: 4 additions & 0 deletions extensions/open-cluster-management/client/pom.xml
Expand Up @@ -35,6 +35,10 @@
osgi.extender;
filter:="(osgi.extender=osgi.serviceloader.registrar)"
</osgi.require-capability>
<osgi.provide-capability>
osgi.serviceloader;
osgi.serviceloader=io.fabric8.kubernetes.client.extension.ExtensionAdapter
</osgi.provide-capability>
<osgi.import>
io.fabric8.kubernetes.api.builder,
!io.fabric8.openclustermanagement.client.*,
Expand Down
4 changes: 4 additions & 0 deletions extensions/service-catalog/client/pom.xml
Expand Up @@ -34,6 +34,10 @@
osgi.extender;
filter:="(osgi.extender=osgi.serviceloader.registrar)"
</osgi.require-capability>
<osgi.provide-capability>
osgi.serviceloader;
osgi.serviceloader=io.fabric8.kubernetes.client.extension.ExtensionAdapter
</osgi.provide-capability>
<osgi.import>
io.fabric8.kubernetes.api.builder,
!io.fabric8.servicecatalog.client.*,
Expand Down
4 changes: 4 additions & 0 deletions extensions/tekton/client/pom.xml
Expand Up @@ -33,6 +33,10 @@
osgi.extender;
filter:="(osgi.extender=osgi.serviceloader.registrar)"
</osgi.require-capability>
<osgi.provide-capability>
osgi.serviceloader;
osgi.serviceloader=io.fabric8.kubernetes.client.extension.ExtensionAdapter
</osgi.provide-capability>
<osgi.import>
io.fabric8.kubernetes.api.builder,
!io.fabric8.tekton.client.*,
Expand Down
4 changes: 4 additions & 0 deletions extensions/verticalpodautoscaler/client/pom.xml
Expand Up @@ -34,6 +34,10 @@
osgi.extender;
filter:="(osgi.extender=osgi.serviceloader.registrar)"
</osgi.require-capability>
<osgi.provide-capability>
osgi.serviceloader;
osgi.serviceloader=io.fabric8.kubernetes.client.extension.ExtensionAdapter
</osgi.provide-capability>
<osgi.import>
io.fabric8.kubernetes.api.builder,
!io.fabric8.verticalpodautoscaler.client.*,
Expand Down
4 changes: 4 additions & 0 deletions extensions/volcano/client/pom.xml
Expand Up @@ -34,6 +34,10 @@
osgi.extender;
filter:="(osgi.extender=osgi.serviceloader.registrar)"
</osgi.require-capability>
<osgi.provide-capability>
osgi.serviceloader;
osgi.serviceloader=io.fabric8.kubernetes.client.extension.ExtensionAdapter
</osgi.provide-capability>
<osgi.import>
io.fabric8.kubernetes.api.builder,
!io.fabric8.volcano.client.*,
Expand Down
4 changes: 4 additions & 0 deletions extensions/volumesnapshot/client/pom.xml
Expand Up @@ -35,6 +35,10 @@
osgi.extender;
filter:="(osgi.extender=osgi.serviceloader.registrar)"
</osgi.require-capability>
<osgi.provide-capability>
osgi.serviceloader;
osgi.serviceloader=io.fabric8.kubernetes.client.extension.ExtensionAdapter
</osgi.provide-capability>
<osgi.import>
io.fabric8.kubernetes.api.builder,
!io.fabric8.volumesnapshot.client.*,
Expand Down
4 changes: 4 additions & 0 deletions httpclient-jdk/pom.xml
Expand Up @@ -34,6 +34,10 @@
osgi.extender;
filter:="(osgi.extender=osgi.serviceloader.registrar)",
</osgi.require-capability>
<osgi.provide-capability>
osgi.serviceloader;
osgi.serviceloader=io.fabric8.kubernetes.client.http.HttpClient$Factory
</osgi.provide-capability>
<osgi.import>
!android.util*,
*,
Expand Down
4 changes: 4 additions & 0 deletions httpclient-jetty/pom.xml
Expand Up @@ -34,6 +34,10 @@
osgi.extender;
filter:="(osgi.extender=osgi.serviceloader.registrar)",
</osgi.require-capability>
<osgi.provide-capability>
osgi.serviceloader;
osgi.serviceloader=io.fabric8.kubernetes.client.http.HttpClient$Factory
</osgi.provide-capability>
<osgi.import>
!android.util*,
*,
Expand Down
4 changes: 4 additions & 0 deletions httpclient-okhttp/pom.xml
Expand Up @@ -33,6 +33,10 @@
osgi.extender;
filter:="(osgi.extender=osgi.serviceloader.registrar)",
</osgi.require-capability>
<osgi.provide-capability>
osgi.serviceloader;
osgi.serviceloader=io.fabric8.kubernetes.client.http.HttpClient$Factory
</osgi.provide-capability>
<osgi.import>
!android.util*,
*,
Expand Down
4 changes: 4 additions & 0 deletions kubernetes-client/pom.xml
Expand Up @@ -33,6 +33,10 @@
osgi.extender;
filter:="(osgi.extender=osgi.serviceloader.processor)",
</osgi.require-capability>
<osgi.provide-capability>
osgi.serviceloader;
osgi.serviceloader=io.fabric8.kubernetes.client.ServiceToURLProvider
</osgi.provide-capability>
<osgi.import>
!android.util*,
*,
Expand Down
Expand Up @@ -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;
Expand Down Expand Up @@ -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<DefaultKubernetesClient> {
Expand Down Expand Up @@ -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;
}
Expand Down
5 changes: 5 additions & 0 deletions openshift-client/pom.xml
Expand Up @@ -33,6 +33,11 @@
osgi.extender;
filter:="(osgi.extender=osgi.serviceloader.registrar)"
</osgi.require-capability>
<osgi.provide-capability>
osgi.serviceloader;
osgi.serviceloader=io.fabric8.kubernetes.client.extension.ExtensionAdapter,
io.fabric8.kubernetes.client.ServiceToURLProvider
</osgi.provide-capability>
<osgi.import>
!org.junit*,
*
Expand Down

0 comments on commit 5370dde

Please sign in to comment.