From d695154960f5f96471d50db00aaf9219f500324b Mon Sep 17 00:00:00 2001 From: cmoulliard Date: Wed, 19 Feb 2025 13:28:19 +0100 Subject: [PATCH] Create a KubernetesDevServiceInfoBuildItem to allow to build it for consumer services Signed-off-by: cmoulliard --- .../DevServicesKubernetesProcessor.java | 14 +++++++++--- .../KubernetesDevServiceInfoBuildItem.java | 22 +++++++++++++++++++ 2 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 extensions/kubernetes-client/spi/src/main/java/io/quarkus/kubernetes/client/spi/KubernetesDevServiceInfoBuildItem.java diff --git a/extensions/kubernetes-client/deployment/src/main/java/io/quarkus/kubernetes/client/deployment/DevServicesKubernetesProcessor.java b/extensions/kubernetes-client/deployment/src/main/java/io/quarkus/kubernetes/client/deployment/DevServicesKubernetesProcessor.java index 397c8aa44dbd8..09ae4216e7855 100644 --- a/extensions/kubernetes-client/deployment/src/main/java/io/quarkus/kubernetes/client/deployment/DevServicesKubernetesProcessor.java +++ b/extensions/kubernetes-client/deployment/src/main/java/io/quarkus/kubernetes/client/deployment/DevServicesKubernetesProcessor.java @@ -43,6 +43,7 @@ import io.fabric8.kubernetes.client.Config; import io.quarkus.deployment.Feature; import io.quarkus.deployment.IsNormal; +import io.quarkus.deployment.annotations.BuildProducer; import io.quarkus.deployment.annotations.BuildStep; import io.quarkus.deployment.annotations.BuildSteps; import io.quarkus.deployment.builditem.CuratedApplicationShutdownBuildItem; @@ -62,6 +63,7 @@ import io.quarkus.kubernetes.client.runtime.internal.KubernetesClientBuildConfig; import io.quarkus.kubernetes.client.runtime.internal.KubernetesDevServicesBuildTimeConfig; import io.quarkus.kubernetes.client.runtime.internal.KubernetesDevServicesBuildTimeConfig.Flavor; +import io.quarkus.kubernetes.client.spi.KubernetesDevServiceInfoBuildItem; import io.quarkus.runtime.configuration.ConfigUtils; @BuildSteps(onlyIfNot = IsNormal.class, onlyIf = { DevServicesConfig.Enabled.class, NoQuarkusTestKubernetesClient.class }) @@ -89,7 +91,8 @@ public DevServicesResultBuildItem setupKubernetesDevService( Optional consoleInstalledBuildItem, CuratedApplicationShutdownBuildItem closeBuildItem, LoggingSetupBuildItem loggingSetupBuildItem, - DevServicesConfig devServicesConfig) { + DevServicesConfig devServicesConfig, + BuildProducer devServicesKube) { KubernetesDevServiceCfg configuration = getConfiguration(kubernetesClientBuildTimeConfig); @@ -108,7 +111,8 @@ public DevServicesResultBuildItem setupKubernetesDevService( try { devService = startKubernetes(dockerStatusBuildItem, configuration, launchMode, !devServicesSharedNetworkBuildItem.isEmpty(), - devServicesConfig.timeout()); + devServicesConfig.timeout(), + devServicesKube); if (devService == null) { compressor.closeAndDumpCaptured(); } else { @@ -161,7 +165,8 @@ private void shutdownCluster() { @SuppressWarnings("unchecked") private RunningDevService startKubernetes(DockerStatusBuildItem dockerStatusBuildItem, KubernetesDevServiceCfg config, - LaunchModeBuildItem launchMode, boolean useSharedNetwork, Optional timeout) { + LaunchModeBuildItem launchMode, boolean useSharedNetwork, Optional timeout, + BuildProducer devServicesKube) { if (!config.devServicesEnabled) { // explicitly disabled log.debug("Not starting Dev Services for Kubernetes, as it has been disabled in the config."); @@ -233,6 +238,9 @@ private RunningDevService startKubernetes(DockerStatusBuildItem dockerStatusBuil KubeConfig kubeConfig = KubeConfigUtils.parseKubeConfig(container.getKubeconfig()); + devServicesKube + .produce(new KubernetesDevServiceInfoBuildItem(container.getKubeconfig(), container.getContainerId())); + return new RunningDevService(Feature.KUBERNETES_CLIENT.getName(), container.getContainerId(), new ContainerShutdownCloseable(container, Feature.KUBERNETES_CLIENT.getName()), getKubernetesClientConfigFromKubeConfig(kubeConfig)); diff --git a/extensions/kubernetes-client/spi/src/main/java/io/quarkus/kubernetes/client/spi/KubernetesDevServiceInfoBuildItem.java b/extensions/kubernetes-client/spi/src/main/java/io/quarkus/kubernetes/client/spi/KubernetesDevServiceInfoBuildItem.java new file mode 100644 index 0000000000000..81fff63b3322c --- /dev/null +++ b/extensions/kubernetes-client/spi/src/main/java/io/quarkus/kubernetes/client/spi/KubernetesDevServiceInfoBuildItem.java @@ -0,0 +1,22 @@ +package io.quarkus.kubernetes.client.spi; + +import io.quarkus.builder.item.SimpleBuildItem; + +public final class KubernetesDevServiceInfoBuildItem extends SimpleBuildItem { + private final String kubeConfig; + private final String containerId; + + public KubernetesDevServiceInfoBuildItem(String kubeConfig, String containerId) { + this.kubeConfig = kubeConfig; + this.containerId = containerId; + } + + public String getKubeConfig() { + return kubeConfig; + } + + public String getContainerId() { + return containerId; + } + +} \ No newline at end of file