diff --git a/jkube-kit/jkube-kit-quarkus/src/main/java/org/eclipse/jkube/quarkus/QuarkusUtils.java b/jkube-kit/jkube-kit-quarkus/src/main/java/org/eclipse/jkube/quarkus/QuarkusUtils.java index 30724bfa51..b6477dcd69 100644 --- a/jkube-kit/jkube-kit-quarkus/src/main/java/org/eclipse/jkube/quarkus/QuarkusUtils.java +++ b/jkube-kit/jkube-kit-quarkus/src/main/java/org/eclipse/jkube/quarkus/QuarkusUtils.java @@ -49,6 +49,8 @@ public class QuarkusUtils { private static final String QUARKUS_MAVEN_PLUGIN_ARTIFACTID = "quarkus-maven-plugin"; private static final int QUARKUS_MAJOR_VERSION_SINCE_PATH_RESOLUTION_CHANGE = 1; private static final int QUARKUS_MINOR_VERSION_SINCE_PATH_RESOLUTION_CHANGE = 11; + private static final int QUARKUS_MAJOR_VERSION_SINCE_STARTUP_CHANGE = 2; + private static final int QUARKUS_MINOR_VERSION_SINCE_STARTUP_CHANGE = 1; private static final int QUARKUS2_MAJOR_VERSION = 2; private static final int QUARKUS2_MINOR_VERSION = 0; private static final String DEFAULT_ROOT_PATH = "/"; @@ -203,6 +205,17 @@ public static String resolveCompleteQuarkusHealthRootPath(JavaProject javaProjec return ret; } + /** + * Check whether given Quarkus version supports startup endpoint or not by checking + * Quarkus version is greater than 2.1. + * + * @param javaProject current project + * @return boolean value indicating whether it's supported or not. + */ + public static boolean isStartupEndpointSupported(JavaProject javaProject) { + return isVersionAtLeast(QUARKUS_MAJOR_VERSION_SINCE_STARTUP_CHANGE, QUARKUS_MINOR_VERSION_SINCE_STARTUP_CHANGE, findQuarkusVersion(javaProject)); + } + private static String resolveQuarkusNonApplicationRootPath(String quarkusVersion, Properties quarkusProperties) { final String defaultValue = isVersionAtLeast(QUARKUS2_MAJOR_VERSION, QUARKUS2_MINOR_VERSION, quarkusVersion) ? DEFAULT_NON_APPLICATION_ROOT_AFTER_2_0 : DEFAULT_NON_APPLICATION_ROOT_BEFORE_2_0; diff --git a/jkube-kit/jkube-kit-quarkus/src/main/java/org/eclipse/jkube/quarkus/enricher/QuarkusHealthCheckEnricher.java b/jkube-kit/jkube-kit-quarkus/src/main/java/org/eclipse/jkube/quarkus/enricher/QuarkusHealthCheckEnricher.java index deb731766a..5019d99936 100644 --- a/jkube-kit/jkube-kit-quarkus/src/main/java/org/eclipse/jkube/quarkus/enricher/QuarkusHealthCheckEnricher.java +++ b/jkube-kit/jkube-kit-quarkus/src/main/java/org/eclipse/jkube/quarkus/enricher/QuarkusHealthCheckEnricher.java @@ -30,6 +30,7 @@ import static org.eclipse.jkube.kit.common.Configs.asInteger; import static org.eclipse.jkube.quarkus.QuarkusUtils.QUARKUS_GROUP_ID; import static org.eclipse.jkube.quarkus.QuarkusUtils.concatPath; +import static org.eclipse.jkube.quarkus.QuarkusUtils.isStartupEndpointSupported; import static org.eclipse.jkube.quarkus.QuarkusUtils.resolveCompleteQuarkusHealthRootPath; /** @@ -73,8 +74,11 @@ protected Probe getLivenessProbe() { @Override protected Probe getStartupProbe() { - return discoverQuarkusHealthCheck(asInteger(getConfig(Config.STARTUP_INITIAL_DELAY, "5")), + if (isStartupEndpointSupported(getContext().getProject())) { + return discoverQuarkusHealthCheck(asInteger(getConfig(Config.STARTUP_INITIAL_DELAY, "5")), QuarkusUtils::resolveQuarkusStartupPath); + } + return null; } private Probe discoverQuarkusHealthCheck(int initialDelay, Function pathResolver) { diff --git a/jkube-kit/jkube-kit-quarkus/src/test/java/org/eclipse/jkube/quarkus/QuarkusUtilsTest.java b/jkube-kit/jkube-kit-quarkus/src/test/java/org/eclipse/jkube/quarkus/QuarkusUtilsTest.java index 291735e47e..f0c6849911 100644 --- a/jkube-kit/jkube-kit-quarkus/src/test/java/org/eclipse/jkube/quarkus/QuarkusUtilsTest.java +++ b/jkube-kit/jkube-kit-quarkus/src/test/java/org/eclipse/jkube/quarkus/QuarkusUtilsTest.java @@ -33,6 +33,7 @@ import static org.eclipse.jkube.quarkus.QuarkusUtils.extractPort; import static org.eclipse.jkube.quarkus.QuarkusUtils.findQuarkusVersion; import static org.eclipse.jkube.quarkus.QuarkusUtils.getQuarkusConfiguration; +import static org.eclipse.jkube.quarkus.QuarkusUtils.isStartupEndpointSupported; import static org.eclipse.jkube.quarkus.QuarkusUtils.resolveCompleteQuarkusHealthRootPath; import static org.eclipse.jkube.quarkus.QuarkusUtils.resolveQuarkusLivenessPath; import static org.eclipse.jkube.quarkus.QuarkusUtils.resolveQuarkusStartupPath; @@ -296,6 +297,30 @@ public void resolveQuarkusStartupPath_withStartupPathSet_shouldReturnValidPath() .isEqualTo("startup"); } + @Test + public void isStartupEndpointSupported_withQuarkusVersionBefore2_1_shouldReturnFalse() { + // Given + javaProject.setDependencies(quarkusDependencyWithVersion("2.0.3.Final")); + + // When + boolean result = isStartupEndpointSupported(javaProject); + + // Then + assertThat(result).isFalse(); + } + + @Test + public void isStartupEndpointSupported_withQuarkusVersionAfter2_1_shouldReturnTrue() { + // Given + javaProject.setDependencies(quarkusDependencyWithVersion("2.9.2.Final")); + + // When + boolean result = isStartupEndpointSupported(javaProject); + + // Then + assertThat(result).isTrue(); + } + @Test public void concatPath_withEmptyRootAndPrefixed() { assertThat(concatPath("/", "/liveness")).isEqualTo("/liveness"); diff --git a/jkube-kit/jkube-kit-quarkus/src/test/java/org/eclipse/jkube/quarkus/enricher/QuarkusHealthCheckEnricherTest.java b/jkube-kit/jkube-kit-quarkus/src/test/java/org/eclipse/jkube/quarkus/enricher/QuarkusHealthCheckEnricherTest.java index 8f84642c2f..541170a15d 100644 --- a/jkube-kit/jkube-kit-quarkus/src/test/java/org/eclipse/jkube/quarkus/enricher/QuarkusHealthCheckEnricherTest.java +++ b/jkube-kit/jkube-kit-quarkus/src/test/java/org/eclipse/jkube/quarkus/enricher/QuarkusHealthCheckEnricherTest.java @@ -90,7 +90,7 @@ public void create_withCustomPath_shouldReturnCustomPath() { // When new QuarkusHealthCheckEnricher(context).create(PlatformMode.kubernetes, klb); // Then - assertLivenessReadinessStartupProbes(klb, tuple("HTTP", "/my-custom-path/live", "HTTP", "/my-custom-path/ready", "HTTP", "/my-custom-path/started")); + assertLivenessReadinessStartupProbes(klb, tuple("HTTP", "/my-custom-path/live", "HTTP", "/my-custom-path/ready", null, null)); } @Test @@ -101,7 +101,7 @@ public void create_withDefaultsAndQuarkus1_shouldReturnDefaults() { // When new QuarkusHealthCheckEnricher(context).create(PlatformMode.kubernetes, klb); // Then - assertLivenessReadinessStartupProbes(klb, tuple("HTTP", "/health/live", "HTTP", "/health/ready", "HTTP", "/health/started")); + assertLivenessReadinessStartupProbes(klb, tuple("HTTP", "/health/live", "HTTP", "/health/ready", null, null)); } @Test @@ -112,7 +112,7 @@ public void create_withDefaultsAndQuarkus2_shouldReturnPrefixedDefaults() { // When new QuarkusHealthCheckEnricher(context).create(PlatformMode.kubernetes, klb); // Then - assertLivenessReadinessStartupProbes(klb, tuple("HTTP", "/q/health/live", "HTTP", "/q/health/ready", "HTTP", "/q/health/started")); + assertLivenessReadinessStartupProbes(klb, tuple("HTTP", "/q/health/live", "HTTP", "/q/health/ready", null, null)); } @Test @@ -129,7 +129,7 @@ public void create_withQuarkus2AndApplicationProperties_shouldReturnCustomizedPa // When new QuarkusHealthCheckEnricher(context).create(PlatformMode.kubernetes, klb); // Then - assertLivenessReadinessStartupProbes(klb, tuple("HTTP", "/not-app/health/im-alive", "HTTP", "/not-app/health/im-ready", "HTTP", "/not-app/health/im-started")); + assertLivenessReadinessStartupProbes(klb, tuple("HTTP", "/not-app/health/im-alive", "HTTP", "/not-app/health/im-ready", null, null)); } @Test @@ -144,7 +144,7 @@ public void create_withQuarkus2AndCustomRootProperty_shouldReturnCustomizedPaths // When new QuarkusHealthCheckEnricher(context).create(PlatformMode.kubernetes, klb); // Then - assertLivenessReadinessStartupProbes(klb, tuple("HTTP", "/root/q/health/liveness", "HTTP", "/root/q/health/ready", "HTTP", "/root/q/health/started")); + assertLivenessReadinessStartupProbes(klb, tuple("HTTP", "/root/q/health/liveness", "HTTP", "/root/q/health/ready", null, null)); } @Test @@ -195,7 +195,7 @@ public void create_withQuarkus1_0AndAbsoluteLivenessPathProperty_shouldIgnoreLea // When new QuarkusHealthCheckEnricher(context).create(PlatformMode.kubernetes, klb); // Then - assertLivenessReadinessStartupProbes(klb, tuple("HTTP", "/health/absolute/liveness", "HTTP", "/health/ready", "HTTP", "/health/started")); + assertLivenessReadinessStartupProbes(klb, tuple("HTTP", "/health/absolute/liveness", "HTTP", "/health/ready", null, null)); } @Test @@ -207,7 +207,7 @@ public void create_withQuarkus1_0AndAbsoluteReadinessPathProperty_shouldIgnoreLe // When new QuarkusHealthCheckEnricher(context).create(PlatformMode.kubernetes, klb); // Then - assertLivenessReadinessStartupProbes(klb, tuple("HTTP", "/health/live", "HTTP", "/health/absolute/readiness", "HTTP", "/health/started")); + assertLivenessReadinessStartupProbes(klb, tuple("HTTP", "/health/live", "HTTP", "/health/absolute/readiness", null, null)); } @Test @@ -221,7 +221,7 @@ public void create_withQuarkus2AndAbsoluteHealthPathProperty_shouldReturnCustomi // When new QuarkusHealthCheckEnricher(context).create(PlatformMode.kubernetes, klb); // Then - assertLivenessReadinessStartupProbes(klb, tuple("HTTP", "/absolute/health/live", "HTTP", "/absolute/health/ready", "HTTP", "/absolute/health/started")); + assertLivenessReadinessStartupProbes(klb, tuple("HTTP", "/absolute/health/live", "HTTP", "/absolute/health/ready", null, null)); } @Test @@ -234,7 +234,7 @@ public void create_withQuarkus1_0AndAbsoluteHealthPathProperty_shouldIgnoreLeadi // When new QuarkusHealthCheckEnricher(context).create(PlatformMode.kubernetes, klb); // Then - assertLivenessReadinessStartupProbes(klb, tuple("HTTP", "/not-ignored/absolute/live", "HTTP", "/not-ignored/absolute/ready", "HTTP", "/not-ignored/absolute/started")); + assertLivenessReadinessStartupProbes(klb, tuple("HTTP", "/not-ignored/absolute/live", "HTTP", "/not-ignored/absolute/ready", null, null)); } @Test @@ -246,7 +246,7 @@ public void create_withQuarkus1_0AndAbsoluteStartupPathProperty_shouldIgnoreLead // When new QuarkusHealthCheckEnricher(context).create(PlatformMode.kubernetes, klb); // Then - assertLivenessReadinessStartupProbes(klb, tuple("HTTP", "/health/live", "HTTP", "/health/ready", "HTTP", "/health/absolute/startup")); + assertLivenessReadinessStartupProbes(klb, tuple("HTTP", "/health/live", "HTTP", "/health/ready", null, null)); } @Test