diff --git a/bom/application/pom.xml b/bom/application/pom.xml index 2b653ce0fc4d0..d3811b5acc4f3 100644 --- a/bom/application/pom.xml +++ b/bom/application/pom.xml @@ -151,8 +151,8 @@ 1.7.10 1.6.4 1.4.0 - 6.1.1 - 3.0.0 + 5.12.3 + 2.11.2 3.2.0 4.2.0 1.0.10 diff --git a/extensions/kubernetes-client/deployment/src/main/java/io/quarkus/kubernetes/client/deployment/KubernetesClientProcessor.java b/extensions/kubernetes-client/deployment/src/main/java/io/quarkus/kubernetes/client/deployment/KubernetesClientProcessor.java index 8ce630a5a45f8..85a765326f28f 100644 --- a/extensions/kubernetes-client/deployment/src/main/java/io/quarkus/kubernetes/client/deployment/KubernetesClientProcessor.java +++ b/extensions/kubernetes-client/deployment/src/main/java/io/quarkus/kubernetes/client/deployment/KubernetesClientProcessor.java @@ -19,7 +19,6 @@ import com.fasterxml.jackson.annotation.JsonFormat; -import io.fabric8.kubernetes.client.http.HttpClient; import io.quarkus.arc.deployment.AdditionalBeanBuildItem; import io.quarkus.deployment.Capabilities; import io.quarkus.deployment.Capability; @@ -33,7 +32,6 @@ import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem; import io.quarkus.deployment.builditem.nativeimage.ReflectiveHierarchyBuildItem; import io.quarkus.deployment.builditem.nativeimage.RuntimeReinitializedClassBuildItem; -import io.quarkus.deployment.builditem.nativeimage.ServiceProviderBuildItem; import io.quarkus.deployment.util.JandexUtil; import io.quarkus.jackson.deployment.IgnoreJsonDeserializeClassBuildItem; import io.quarkus.kubernetes.client.runtime.KubernetesClientBuildConfig; @@ -87,8 +85,7 @@ public void process(ApplicationIndexBuildItem applicationIndex, CombinedIndexBui BuildProducer reflectiveClasses, BuildProducer reflectiveHierarchies, BuildProducer ignoredJsonDeserializationClasses, - BuildProducer roleBindingProducer, - BuildProducer serviceProviderProducer) { + BuildProducer roleBindingProducer) { featureProducer.produce(new FeatureBuildItem(Feature.KUBERNETES_CLIENT)); if (kubernetesClientConfig.generateRbac) { @@ -204,9 +201,6 @@ public void process(ApplicationIndexBuildItem applicationIndex, CombinedIndexBui log.debugv("Model Classes:\n{0}", String.join("\n", modelClasses)); } - // Register the default HttpClient implementation - serviceProviderProducer.produce(new ServiceProviderBuildItem( - HttpClient.Factory.class.getName(), "io.fabric8.kubernetes.client.okhttp.OkHttpClientFactory")); // Enable SSL support by default sslNativeSupport.produce(new ExtensionSslNativeSupportBuildItem(Feature.KUBERNETES_CLIENT)); } diff --git a/integration-tests/kubernetes-client/src/test/java/io/quarkus/it/kubernetes/client/CustomKubernetesTestServerTestResource.java b/integration-tests/kubernetes-client/src/test/java/io/quarkus/it/kubernetes/client/CustomKubernetesTestServerTestResource.java index 7d9af45a444c1..68d0c5642c288 100644 --- a/integration-tests/kubernetes-client/src/test/java/io/quarkus/it/kubernetes/client/CustomKubernetesTestServerTestResource.java +++ b/integration-tests/kubernetes-client/src/test/java/io/quarkus/it/kubernetes/client/CustomKubernetesTestServerTestResource.java @@ -11,52 +11,42 @@ public class CustomKubernetesTestServerTestResource extends KubernetesServerTest // setup the ConfigMap objects that the application expects to lookup configuration from @Override protected void configureServer() { - getClient().inNamespace("test").configMaps() - .resource(configMapBuilder("cmap1") - .addToData("dummy", "dummy") - .addToData("overridden.secret", "cm") // will be overridden since secrets have a higher priority - .addToData("some.prop1", "val1") - .addToData("some.prop2", "val2") - .addToData("some.prop4", "v4") // will be overridden since cmap2 has a higher priority - .addToData("some.prop5", "val5") - .addToData("application.properties", "some.prop3=val3") - .addToData("application.yaml", "some:\n prop4: val4").build()) - .create(); + server.getClient().inNamespace("test").configMaps().create(configMapBuilder("cmap1") + .addToData("dummy", "dummy") + .addToData("overridden.secret", "cm") // will be overridden since secrets have a higher priority + .addToData("some.prop1", "val1") + .addToData("some.prop2", "val2") + .addToData("some.prop4", "v4") // will be overridden since cmap2 has a higher priority + .addToData("some.prop5", "val5") + .addToData("application.properties", "some.prop3=val3") + .addToData("application.yaml", "some:\n prop4: val4").build()); - server.getClient().inNamespace("test").configMaps() - .resource(configMapBuilder("cmap2") - .addToData("application.yaml", "some:\n prop4: val4").build()) - .create(); + server.getClient().inNamespace("test").configMaps().create(configMapBuilder("cmap2") + .addToData("application.yaml", "some:\n prop4: val4").build()); - server.getClient().inNamespace("test").configMaps() - .resource(configMapBuilder("cmap3") - .addToData("dummy", "dummyFromDemo") - .addToData("some.prop1", "val1FromDemo") - .addToData("some.prop2", "val2FromDemo") - .addToData("some.prop5", "val5FromDemo") - .addToData("application.properties", "some.prop3=val3FromDemo") - .addToData("application.yaml", "some:\n prop4: val4FromDemo").build()) - .create(); + server.getClient().inNamespace("test").configMaps().create(configMapBuilder("cmap3") + .addToData("dummy", "dummyFromDemo") + .addToData("some.prop1", "val1FromDemo") + .addToData("some.prop2", "val2FromDemo") + .addToData("some.prop5", "val5FromDemo") + .addToData("application.properties", "some.prop3=val3FromDemo") + .addToData("application.yaml", "some:\n prop4: val4FromDemo").build()); - server.getClient().inNamespace("test").secrets() - .resource(secretBuilder("s1") - .addToData("dummysecret", encodeValue("dummysecret")) - .addToData("overridden.secret", encodeValue("secret")) - .addToData("secret.prop1", encodeValue("val1")) - .addToData("secret.prop2", encodeValue("val2")) - .addToData("application.properties", encodeValue("secret.prop3=val3")) - .addToData("application.yaml", encodeValue("secret:\n prop4: val4")).build()) - .create(); + server.getClient().inNamespace("test").secrets().create(secretBuilder("s1") + .addToData("dummysecret", encodeValue("dummysecret")) + .addToData("overridden.secret", encodeValue("secret")) + .addToData("secret.prop1", encodeValue("val1")) + .addToData("secret.prop2", encodeValue("val2")) + .addToData("application.properties", encodeValue("secret.prop3=val3")) + .addToData("application.yaml", encodeValue("secret:\n prop4: val4")).build()); - server.getClient().inNamespace("test").secrets() - .resource(secretBuilder("s1") - .addToData("dummysecret", encodeValue("dummysecretFromDemo")) - .addToData("overridden.secret", encodeValue("secretFromDemo")) - .addToData("secret.prop1", encodeValue("val1FromDemo")) - .addToData("secret.prop2", encodeValue("val2FromDemo")) - .addToData("application.properties", encodeValue("secret.prop3=val3FromDemo")) - .addToData("application.yaml", encodeValue("secret:\n prop4: val4FromDemo")).build()) - .createOrReplace(); + server.getClient().inNamespace("test").secrets().createOrReplace(secretBuilder("s1") + .addToData("dummysecret", encodeValue("dummysecretFromDemo")) + .addToData("overridden.secret", encodeValue("secretFromDemo")) + .addToData("secret.prop1", encodeValue("val1FromDemo")) + .addToData("secret.prop2", encodeValue("val2FromDemo")) + .addToData("application.properties", encodeValue("secret.prop3=val3FromDemo")) + .addToData("application.yaml", encodeValue("secret:\n prop4: val4FromDemo")).build()); } private ConfigMapBuilder configMapBuilder(String name) { diff --git a/integration-tests/kubernetes-client/src/test/java/io/quarkus/it/kubernetes/client/KubernetesClientTest.java b/integration-tests/kubernetes-client/src/test/java/io/quarkus/it/kubernetes/client/KubernetesClientTest.java index 3961655f0f30c..d2b67f4e1b958 100644 --- a/integration-tests/kubernetes-client/src/test/java/io/quarkus/it/kubernetes/client/KubernetesClientTest.java +++ b/integration-tests/kubernetes-client/src/test/java/io/quarkus/it/kubernetes/client/KubernetesClientTest.java @@ -9,7 +9,6 @@ import java.security.Key; import java.security.KeyStore; import java.security.interfaces.ECPrivateKey; -import java.time.Instant; import org.junit.jupiter.api.Test; @@ -97,8 +96,7 @@ private void setupMockServerForTest() { .times(2); mockServer.expect().delete().withPath("/api/v1/namespaces/test/pods/pod1") - .andReturn(200, new PodBuilder(pod1) - .editMetadata().withDeletionTimestamp(Instant.now().toString()).endMetadata().build()) + .andReturn(200, "{}") .once(); // PUT on /pod/test will createOrReplace, which attempts a POST first, then a PUT if receiving a 409 diff --git a/test-framework/kubernetes-client/pom.xml b/test-framework/kubernetes-client/pom.xml index 257f3eb1438d0..012586a6fe97d 100644 --- a/test-framework/kubernetes-client/pom.xml +++ b/test-framework/kubernetes-client/pom.xml @@ -19,7 +19,7 @@ io.fabric8 - kubernetes-client-api + kubernetes-server-mock javax.annotation @@ -38,15 +38,11 @@ jakarta.xml.bind-api - io.sundr - * + io.sundr + * - - io.fabric8 - kubernetes-server-mock - jakarta.annotation jakarta.annotation-api diff --git a/test-framework/kubernetes-client/src/main/java/io/quarkus/test/kubernetes/client/AbstractKubernetesTestResource.java b/test-framework/kubernetes-client/src/main/java/io/quarkus/test/kubernetes/client/AbstractKubernetesTestResource.java index 0f5d7f0bdbedf..819ca8e08256e 100644 --- a/test-framework/kubernetes-client/src/main/java/io/quarkus/test/kubernetes/client/AbstractKubernetesTestResource.java +++ b/test-framework/kubernetes-client/src/main/java/io/quarkus/test/kubernetes/client/AbstractKubernetesTestResource.java @@ -5,6 +5,7 @@ import java.util.Map; import io.fabric8.kubernetes.client.Config; +import io.fabric8.kubernetes.client.GenericKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; import io.quarkus.test.common.QuarkusTestResourceLifecycleManager; @@ -25,7 +26,9 @@ public Map start() { server = createServer(); initServer(); - systemProps.put(Config.KUBERNETES_MASTER_SYSTEM_PROPERTY, getClient().getConfiguration().getMasterUrl()); + try (GenericKubernetesClient client = getClient()) { + systemProps.put(Config.KUBERNETES_MASTER_SYSTEM_PROPERTY, client.getConfiguration().getMasterUrl()); + } configureServer(); //these actually need to be system properties @@ -37,7 +40,7 @@ public Map start() { return systemProps; } - protected abstract C getClient(); + protected abstract GenericKubernetesClient getClient(); /** * Can be used by subclasses in order to diff --git a/test-framework/kubernetes-client/src/main/java/io/quarkus/test/kubernetes/client/KubernetesMockServerTestResource.java b/test-framework/kubernetes-client/src/main/java/io/quarkus/test/kubernetes/client/KubernetesMockServerTestResource.java index 842a3fc110fbc..fd4b3f96e74a7 100644 --- a/test-framework/kubernetes-client/src/main/java/io/quarkus/test/kubernetes/client/KubernetesMockServerTestResource.java +++ b/test-framework/kubernetes-client/src/main/java/io/quarkus/test/kubernetes/client/KubernetesMockServerTestResource.java @@ -2,6 +2,7 @@ import java.lang.annotation.Annotation; +import io.fabric8.kubernetes.client.GenericKubernetesClient; import io.fabric8.kubernetes.client.NamespacedKubernetesClient; import io.fabric8.kubernetes.client.server.mock.KubernetesMockServer; @@ -13,7 +14,7 @@ public class KubernetesMockServerTestResource extends AbstractKubernetesTestResource { @Override - protected NamespacedKubernetesClient getClient() { + protected GenericKubernetesClient getClient() { return server.createClient(); } diff --git a/test-framework/kubernetes-client/src/main/java/io/quarkus/test/kubernetes/client/KubernetesServerTestResource.java b/test-framework/kubernetes-client/src/main/java/io/quarkus/test/kubernetes/client/KubernetesServerTestResource.java index 8df5e7af01936..7020166eb9d65 100644 --- a/test-framework/kubernetes-client/src/main/java/io/quarkus/test/kubernetes/client/KubernetesServerTestResource.java +++ b/test-framework/kubernetes-client/src/main/java/io/quarkus/test/kubernetes/client/KubernetesServerTestResource.java @@ -6,6 +6,7 @@ import java.util.Collections; import java.util.function.Consumer; +import io.fabric8.kubernetes.client.GenericKubernetesClient; import io.fabric8.kubernetes.client.NamespacedKubernetesClient; import io.fabric8.kubernetes.client.server.mock.KubernetesServer; import io.quarkus.test.common.QuarkusTestResourceConfigurableLifecycleManager; @@ -31,7 +32,7 @@ public void init(WithKubernetesTestServer annotation) { } @Override - protected NamespacedKubernetesClient getClient() { + protected GenericKubernetesClient getClient() { return server.getClient(); } diff --git a/test-framework/openshift-client/src/main/java/io/quarkus/test/kubernetes/client/OpenShiftServerTestResource.java b/test-framework/openshift-client/src/main/java/io/quarkus/test/kubernetes/client/OpenShiftServerTestResource.java index bb2d28f17f5dc..720e3c6d646ed 100644 --- a/test-framework/openshift-client/src/main/java/io/quarkus/test/kubernetes/client/OpenShiftServerTestResource.java +++ b/test-framework/openshift-client/src/main/java/io/quarkus/test/kubernetes/client/OpenShiftServerTestResource.java @@ -3,6 +3,7 @@ import java.lang.annotation.Annotation; import java.util.function.Consumer; +import io.fabric8.kubernetes.client.GenericKubernetesClient; import io.fabric8.openshift.client.NamespacedOpenShiftClient; import io.fabric8.openshift.client.server.mock.OpenShiftServer; import io.quarkus.test.common.QuarkusTestResourceConfigurableLifecycleManager; @@ -26,7 +27,7 @@ public void init(WithOpenShiftTestServer annotation) { } @Override - protected NamespacedOpenShiftClient getClient() { + protected GenericKubernetesClient getClient() { return server.getOpenshiftClient(); }