From 3143822c754c8f88c3442ed41fab67cc7e29f2a2 Mon Sep 17 00:00:00 2001 From: Chris Laprun Date: Mon, 16 Jun 2025 16:18:57 +0200 Subject: [PATCH 01/42] refactor: remove unused ResourceUpdaterMatcher interface (#2830) Signed-off-by: Chris Laprun --- .../operator/api/config/ConfigurationService.java | 4 ---- .../dependent/kubernetes/ResourceUpdaterMatcher.java | 11 ----------- 2 files changed, 15 deletions(-) delete mode 100644 operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/ResourceUpdaterMatcher.java diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationService.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationService.java index 18e74d29a9..864b65c3f7 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationService.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationService.java @@ -28,7 +28,6 @@ import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependent; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependentResource; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependentResourceConfig; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.ResourceUpdaterMatcher; import io.javaoperatorsdk.operator.processing.dependent.workflow.ManagedWorkflowFactory; import io.javaoperatorsdk.operator.processing.event.source.controller.ControllerEventSource; @@ -396,9 +395,6 @@ default boolean shouldUseSSA( Class dependentResourceType, Class resourceType, KubernetesDependentResourceConfig config) { - if (ResourceUpdaterMatcher.class.isAssignableFrom(dependentResourceType)) { - return false; - } Boolean useSSAConfig = Optional.ofNullable(config).map(KubernetesDependentResourceConfig::useSSA).orElse(null); // don't use SSA for certain resources by default, only if explicitly overridden diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/ResourceUpdaterMatcher.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/ResourceUpdaterMatcher.java deleted file mode 100644 index d893ff3e86..0000000000 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/ResourceUpdaterMatcher.java +++ /dev/null @@ -1,11 +0,0 @@ -package io.javaoperatorsdk.operator.processing.dependent.kubernetes; - -import io.fabric8.kubernetes.api.model.HasMetadata; -import io.javaoperatorsdk.operator.api.reconciler.Context; - -public interface ResourceUpdaterMatcher { - - R updateResource(R actual, R desired, Context context); - - boolean matches(R actual, R desired, Context context); -} From 9f75a494bb5eb33e1e91efb947c75327fa830dd7 Mon Sep 17 00:00:00 2001 From: Chris Laprun Date: Mon, 16 Jun 2025 19:03:50 +0200 Subject: [PATCH 02/42] feat: add retrieval of RegisteredController by name (#2829) * feat: add retrieval of RegisteredController by name Signed-off-by: Chris Laprun --- .../javaoperatorsdk/operator/RuntimeInfo.java | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/RuntimeInfo.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/RuntimeInfo.java index b7fbce7f07..0495131d79 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/RuntimeInfo.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/RuntimeInfo.java @@ -5,6 +5,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import io.fabric8.kubernetes.api.model.HasMetadata; import io.javaoperatorsdk.operator.health.EventSourceHealthIndicator; import io.javaoperatorsdk.operator.health.InformerWrappingEventSourceHealthIndicator; import io.javaoperatorsdk.operator.processing.event.source.controller.ControllerEventSource; @@ -22,7 +23,7 @@ public class RuntimeInfo { private final Operator operator; public RuntimeInfo(Operator operator) { - this.registeredControllers = operator.getRegisteredControllers(); + this.registeredControllers = Collections.unmodifiableSet(operator.getRegisteredControllers()); this.operator = operator; } @@ -30,6 +31,7 @@ public boolean isStarted() { return operator.isStarted(); } + @SuppressWarnings("unused") public Set getRegisteredControllers() { checkIfStarted(); return registeredControllers; @@ -80,4 +82,23 @@ public Map> unhealthyEventSource } return res; } + + /** + * Retrieves the {@link RegisteredController} associated with the specified controller name or + * {@code null} if no such controller is registered. + * + * @param controllerName the name of the {@link RegisteredController} to retrieve + * @return the {@link RegisteredController} associated with the specified controller name or + * {@code null} if no such controller is registered + * @since 5.1.2 + */ + @SuppressWarnings({"unchecked", "unused"}) + public RegisteredController getRegisteredController( + String controllerName) { + checkIfStarted(); + return registeredControllers.stream() + .filter(rc -> rc.getConfiguration().getName().equals(controllerName)) + .findFirst() + .orElse(null); + } } From fe0c44490470e800983ef6727887b23590978158 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Jun 2025 08:29:57 +0200 Subject: [PATCH 03/42] chore(deps): bump log4j.version from 2.24.3 to 2.25.0 (#2833) --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f4dd22edbc..916b41e151 100644 --- a/pom.xml +++ b/pom.xml @@ -62,7 +62,7 @@ 5.13.0 7.3.1 2.0.17 - 2.24.3 + 2.25.0 5.18.0 3.17.0 0.21.0 From 301859af74905f3b7e69532b1463a38baeb90503 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Attila=20M=C3=A9sz=C3=A1ros?= Date: Thu, 19 Jun 2025 11:42:27 +0200 Subject: [PATCH 04/42] docs: add note about cncf to readme (#2834) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Attila Mészáros --- README.md | 4 ++++ docs/static/images/cncf_logo2.png | Bin 0 -> 19132 bytes 2 files changed, 4 insertions(+) create mode 100644 docs/static/images/cncf_logo2.png diff --git a/README.md b/README.md index 86edf232b0..fecef691a6 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,10 @@ conversion hooks and dynamic admission controllers are supported as a separate p Under the hood it uses the excellent [Fabric8 Kubernetes Client](https://github.com/fabric8io/kubernetes-client), which provides additional facilities, like generating CRD from source code (and vice versa). +Icon + +Java Operator SDK is a CNCF project as part of [Operator Framework](https://github.com/operator-framework). + ## Documentation Documentation can be found on the **[JOSDK WebSite](https://javaoperatorsdk.io/)**. diff --git a/docs/static/images/cncf_logo2.png b/docs/static/images/cncf_logo2.png new file mode 100644 index 0000000000000000000000000000000000000000..e1236b7e87568d325ec0be4079298d4991b3458f GIT binary patch literal 19132 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 literal 0 HcmV?d00001 From cec37251a06c1aecdb298b059716a19342d33fc2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Jun 2025 10:17:00 +0200 Subject: [PATCH 05/42] chore(deps): bump com.google.cloud.tools:jib-maven-plugin (#2837) Bumps [com.google.cloud.tools:jib-maven-plugin](https://github.com/GoogleContainerTools/jib) from 3.4.5 to 3.4.6. - [Release notes](https://github.com/GoogleContainerTools/jib/releases) - [Commits](https://github.com/GoogleContainerTools/jib/commits) --- updated-dependencies: - dependency-name: com.google.cloud.tools:jib-maven-plugin dependency-version: 3.4.6 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 916b41e151..b4a0bb9c2b 100644 --- a/pom.xml +++ b/pom.xml @@ -89,7 +89,7 @@ 3.0.0 3.1.4 9.0.2 - 3.4.5 + 3.4.6 2.44.5 From eb135d216dc1bc1fc39d66e046f3d5dfa1711d8a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 25 Jun 2025 07:34:25 +0200 Subject: [PATCH 06/42] chore(deps): bump com.github.ben-manes.caffeine:caffeine (#2827) --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b4a0bb9c2b..1cd306fd64 100644 --- a/pom.xml +++ b/pom.xml @@ -71,7 +71,7 @@ 4.3.0 2.7.3 1.15.1 - 3.2.0 + 3.2.1 0.9.14 2.19.0 4.15 From 3520732016b9e8b1391e28f5686bd1fce3e87d7b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 25 Jun 2025 12:36:25 +0200 Subject: [PATCH 07/42] chore(deps): bump org.junit:junit-bom from 5.13.0 to 5.13.2 (#2839) Bumps [org.junit:junit-bom](https://github.com/junit-team/junit-framework) from 5.13.0 to 5.13.2. - [Release notes](https://github.com/junit-team/junit-framework/releases) - [Commits](https://github.com/junit-team/junit-framework/compare/r5.13.0...r5.13.2) --- updated-dependencies: - dependency-name: org.junit:junit-bom dependency-version: 5.13.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 1cd306fd64..0162bb0849 100644 --- a/pom.xml +++ b/pom.xml @@ -59,7 +59,7 @@ java-operator-sdk https://sonarcloud.io jdk - 5.13.0 + 5.13.2 7.3.1 2.0.17 2.25.0 From 1a01e50315762b0c2d495cdd56fd15d1ac17f3c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Attila=20M=C3=A9sz=C3=A1ros?= Date: Fri, 27 Jun 2025 09:00:16 +0200 Subject: [PATCH 08/42] docs: fix links and mention status utility in faq (#2841) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Attila Mészáros --- docs/content/en/docs/faq/_index.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/content/en/docs/faq/_index.md b/docs/content/en/docs/faq/_index.md index 9308ce4cfa..10a15c0eac 100644 --- a/docs/content/en/docs/faq/_index.md +++ b/docs/content/en/docs/faq/_index.md @@ -90,7 +90,10 @@ reconciliation. For example if you patch the status at the end of the reconcilia it is not guaranteed that during the next reconciliation you will see the fresh resource. Therefore, controllers which do this, usually cache the updated status in memory to make sure it is present for next reconciliation. -Dependent Resources feature supports the [first approach](../dependent-resources/_index.md#external-state-tracking-dependent-resources). +From version 5.1 you can use [this utility](../documentation/reconciler.md#making-sure-the-primary-resource-is-up-to-date-for-the-next-reconciliation) +to make sure an updated status is present for the next reconciliation. + +Dependent Resources feature supports the [first approach](../documentation/dependent-resource-and-workflows/dependent-resources.md#external-state-tracking-dependent-resources). ### How can I skip the reconciliation of a dependent resource? From 099191a272ba6b5490cd6eb06a204c2f210f742a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Attila=20M=C3=A9sz=C3=A1ros?= Date: Fri, 27 Jun 2025 11:52:40 +0200 Subject: [PATCH 09/42] docs: add faq entry regarding event filtering (#2842) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Attila Mészáros --- docs/content/en/docs/faq/_index.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/docs/content/en/docs/faq/_index.md b/docs/content/en/docs/faq/_index.md index 10a15c0eac..23a6ea2743 100644 --- a/docs/content/en/docs/faq/_index.md +++ b/docs/content/en/docs/faq/_index.md @@ -95,6 +95,32 @@ to make sure an updated status is present for the next reconciliation. Dependent Resources feature supports the [first approach](../documentation/dependent-resource-and-workflows/dependent-resources.md#external-state-tracking-dependent-resources). +### How can I make the status update of my custom resource trigger a reconciliation? + +For the primary resource, the framework by default specially checks if the change on the primary +resource is increased the `generation` field in the metadata, and filters out the related event if not. +This field is increased when `.spec` of the resource is changed. Therefore, a change in the `.status` field +will not trigger a reconciliation. + +To change this behavior, you can set the [`generationAwareEventProcessing`](https://github.com/operator-framework/java-operator-sdk/blob/main/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/ControllerConfiguration.java#L43) +to `false`: + +```java +@ControllerConfiguration(generationAwareEventProcessing = false) + static class TestCustomReconciler implements Reconciler { + + @Override + public UpdateControl reconcile(TestCustomResource resource, Context context) { + // code omitted + } + } +``` + +For secondary resources, every change should trigger a reconciliation by default. +Except when you add explicit filter or use dependent resources that by default filter out own changes, +see [related docs](../documentation/dependent-resource-and-workflows/dependent-resources.md#caching-and-event-handling-in-kubernetesdependentresource). + + ### How can I skip the reconciliation of a dependent resource? Skipping workflow reconciliation altogether is possible with the explicit invocation feature since v5. From 8db818c234e6fef61097620a181b4f3253fc1412 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Attila=20M=C3=A9sz=C3=A1ros?= Date: Fri, 27 Jun 2025 12:28:53 +0200 Subject: [PATCH 10/42] docs: add kroxylicious operator to the list (#2843) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Attila Mészáros --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index fecef691a6..72eb2f7974 100644 --- a/README.md +++ b/README.md @@ -67,6 +67,7 @@ projects want to advertise that fact here. For this reason, we ask that if you'd to be featured in this section, please open a PR, adding a link to and short description of your project, as shown below: +- [kroxylicious](https://github.com/kroxylicious/kroxylicious/tree/main/kroxylicious-operator) Kafka proxy operator - [ExposedApp operator](https://github.com/halkyonio/exposedapp-rhdblog): a sample operator written to illustrate JOSDK concepts and its Quarkus extension in the ["Write Kubernetes Operators in Java with the Java Operator SDK" blog series](https://developers.redhat.com/articles/2022/02/15/write-kubernetes-java-java-operator-sdk#). From 1dc866916f5e21c5b9760fa6d97f07f2717d4738 Mon Sep 17 00:00:00 2001 From: Chris Laprun Date: Fri, 27 Jun 2025 13:21:23 +0200 Subject: [PATCH 11/42] docs: improve wording (#2844) [skip ci] Signed-off-by: Chris Laprun --- docs/content/en/docs/faq/_index.md | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/docs/content/en/docs/faq/_index.md b/docs/content/en/docs/faq/_index.md index 23a6ea2743..1c3d82fe35 100644 --- a/docs/content/en/docs/faq/_index.md +++ b/docs/content/en/docs/faq/_index.md @@ -97,30 +97,31 @@ Dependent Resources feature supports the [first approach](../documentation/depen ### How can I make the status update of my custom resource trigger a reconciliation? -For the primary resource, the framework by default specially checks if the change on the primary -resource is increased the `generation` field in the metadata, and filters out the related event if not. -This field is increased when `.spec` of the resource is changed. Therefore, a change in the `.status` field -will not trigger a reconciliation. +The framework checks, by default, when an event occurs, that could trigger a reconciliation, if the event increased the +`generation` field of the primary resource's metadata and filters out the event if it did not. `generation` is typically +only increased when the `.spec` field of a resource is changed. As a result, a change in the `.status` field would not +normally trigger a reconciliation. -To change this behavior, you can set the [`generationAwareEventProcessing`](https://github.com/operator-framework/java-operator-sdk/blob/main/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/ControllerConfiguration.java#L43) +To change this behavior, you can set the [ +`generationAwareEventProcessing`](https://github.com/operator-framework/java-operator-sdk/blob/main/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/ControllerConfiguration.java#L43) to `false`: ```java + @ControllerConfiguration(generationAwareEventProcessing = false) - static class TestCustomReconciler implements Reconciler { +static class TestCustomReconciler implements Reconciler { @Override public UpdateControl reconcile(TestCustomResource resource, Context context) { // code omitted } - } +} ``` -For secondary resources, every change should trigger a reconciliation by default. -Except when you add explicit filter or use dependent resources that by default filter out own changes, +For secondary resources, every change should trigger a reconciliation by default, except when you add explicit filters +or use dependent resource implementations that filter out changes they trigger themselves by default, see [related docs](../documentation/dependent-resource-and-workflows/dependent-resources.md#caching-and-event-handling-in-kubernetesdependentresource). - ### How can I skip the reconciliation of a dependent resource? Skipping workflow reconciliation altogether is possible with the explicit invocation feature since v5. From afe8e174d4a10cfab323345e310a8677b67fcef6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 3 Jul 2025 08:08:04 +0200 Subject: [PATCH 12/42] chore(deps): bump org.apache.maven.plugins:maven-gpg-plugin (#2846) Bumps [org.apache.maven.plugins:maven-gpg-plugin](https://github.com/apache/maven-gpg-plugin) from 3.2.7 to 3.2.8. - [Release notes](https://github.com/apache/maven-gpg-plugin/releases) - [Commits](https://github.com/apache/maven-gpg-plugin/compare/maven-gpg-plugin-3.2.7...maven-gpg-plugin-3.2.8) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-gpg-plugin dependency-version: 3.2.8 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- operator-framework-bom/pom.xml | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/operator-framework-bom/pom.xml b/operator-framework-bom/pom.xml index ccbb4ca4e2..59d9c7739b 100644 --- a/operator-framework-bom/pom.xml +++ b/operator-framework-bom/pom.xml @@ -42,7 +42,7 @@ 1.7.0 - 3.2.7 + 3.2.8 3.3.1 3.11.2 2.44.3 diff --git a/pom.xml b/pom.xml index 0162bb0849..3338294845 100644 --- a/pom.xml +++ b/pom.xml @@ -84,7 +84,7 @@ 3.3.1 3.4.2 3.5.0 - 3.2.7 + 3.2.8 1.7.0 3.0.0 3.1.4 From 771572c112b6266be1eb38456e94f2d32504461f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Jul 2025 08:07:22 +0200 Subject: [PATCH 13/42] chore(deps): bump org.junit:junit-bom from 5.13.2 to 5.13.3 (#2850) --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3338294845..9ea2935eb9 100644 --- a/pom.xml +++ b/pom.xml @@ -59,7 +59,7 @@ java-operator-sdk https://sonarcloud.io jdk - 5.13.2 + 5.13.3 7.3.1 2.0.17 2.25.0 From c44447a63d514c1da3cf996d8aa79e9843c9c1e9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Jul 2025 08:08:33 +0200 Subject: [PATCH 14/42] chore(deps): bump io.github.java-diff-utils:java-diff-utils (#2851) Bumps [io.github.java-diff-utils:java-diff-utils](https://github.com/java-diff-utils/java-diff-utils) from 4.15 to 4.16. - [Release notes](https://github.com/java-diff-utils/java-diff-utils/releases) - [Changelog](https://github.com/java-diff-utils/java-diff-utils/blob/master/CHANGELOG.md) - [Commits](https://github.com/java-diff-utils/java-diff-utils/compare/java-diff-utils-parent-4.15...java-diff-utils-parent-4.16) --- updated-dependencies: - dependency-name: io.github.java-diff-utils:java-diff-utils dependency-version: '4.16' dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9ea2935eb9..6a783768e5 100644 --- a/pom.xml +++ b/pom.xml @@ -74,7 +74,7 @@ 3.2.1 0.9.14 2.19.0 - 4.15 + 4.16 2.11 3.14.0 From 0bd80e9a5a08653b41b1aa2ded09d53bdce5da47 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Jul 2025 08:20:14 +0200 Subject: [PATCH 15/42] chore(deps): bump com.diffplug.spotless:spotless-maven-plugin (#2852) Bumps [com.diffplug.spotless:spotless-maven-plugin](https://github.com/diffplug/spotless) from 2.44.5 to 2.45.0. - [Release notes](https://github.com/diffplug/spotless/releases) - [Changelog](https://github.com/diffplug/spotless/blob/main/CHANGES.md) - [Commits](https://github.com/diffplug/spotless/compare/maven/2.44.5...lib/2.45.0) --- updated-dependencies: - dependency-name: com.diffplug.spotless:spotless-maven-plugin dependency-version: 2.45.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 6a783768e5..fd025f3c63 100644 --- a/pom.xml +++ b/pom.xml @@ -90,7 +90,7 @@ 3.1.4 9.0.2 3.4.6 - 2.44.5 + 2.45.0 From 407c4196a5daad7982d8aac6ed74983312d751bd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 10 Jul 2025 07:16:05 +0200 Subject: [PATCH 16/42] chore(deps): bump org.apache.commons:commons-lang3 from 3.17.0 to 3.18.0 (#2855) --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index fd025f3c63..d5572c8028 100644 --- a/pom.xml +++ b/pom.xml @@ -64,7 +64,7 @@ 2.0.17 2.25.0 5.18.0 - 3.17.0 + 3.18.0 0.21.0 1.13.0 3.27.3 From 07c9ba99936a5953cc7d61d9d9eed2063fe55554 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Jul 2025 09:00:08 +0200 Subject: [PATCH 17/42] chore(deps): bump com.github.ben-manes.caffeine:caffeine (#2857) Bumps [com.github.ben-manes.caffeine:caffeine](https://github.com/ben-manes/caffeine) from 3.2.1 to 3.2.2. - [Release notes](https://github.com/ben-manes/caffeine/releases) - [Commits](https://github.com/ben-manes/caffeine/compare/v3.2.1...v3.2.2) --- updated-dependencies: - dependency-name: com.github.ben-manes.caffeine:caffeine dependency-version: 3.2.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d5572c8028..81c760dde1 100644 --- a/pom.xml +++ b/pom.xml @@ -71,7 +71,7 @@ 4.3.0 2.7.3 1.15.1 - 3.2.1 + 3.2.2 0.9.14 2.19.0 4.16 From 99e311d55bce30781a8d574edd08d2d5dda99957 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Jul 2025 09:05:12 +0200 Subject: [PATCH 18/42] chore(deps): bump log4j.version from 2.25.0 to 2.25.1 (#2858) Bumps `log4j.version` from 2.25.0 to 2.25.1. Updates `org.apache.logging.log4j:log4j-slf4j2-impl` from 2.25.0 to 2.25.1 Updates `org.apache.logging.log4j:log4j-core` from 2.25.0 to 2.25.1 Updates `org.apache.logging.log4j:log4j2-core` from 2.25.0 to 2.25.1 --- updated-dependencies: - dependency-name: org.apache.logging.log4j:log4j-slf4j2-impl dependency-version: 2.25.1 dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: org.apache.logging.log4j:log4j-core dependency-version: 2.25.1 dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: org.apache.logging.log4j:log4j2-core dependency-version: 2.25.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 81c760dde1..1371df99e5 100644 --- a/pom.xml +++ b/pom.xml @@ -62,7 +62,7 @@ 5.13.3 7.3.1 2.0.17 - 2.25.0 + 2.25.1 5.18.0 3.18.0 0.21.0 From dd0fde858b26e05f972f9425ae4d3ab368324bcc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Jul 2025 10:16:15 +0200 Subject: [PATCH 19/42] chore(deps): bump io.micrometer:micrometer-core from 1.15.1 to 1.15.2 (#2859) Bumps [io.micrometer:micrometer-core](https://github.com/micrometer-metrics/micrometer) from 1.15.1 to 1.15.2. - [Release notes](https://github.com/micrometer-metrics/micrometer/releases) - [Commits](https://github.com/micrometer-metrics/micrometer/compare/v1.15.1...v1.15.2) --- updated-dependencies: - dependency-name: io.micrometer:micrometer-core dependency-version: 1.15.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 1371df99e5..8f9a1a5ac3 100644 --- a/pom.xml +++ b/pom.xml @@ -70,7 +70,7 @@ 3.27.3 4.3.0 2.7.3 - 1.15.1 + 1.15.2 3.2.2 0.9.14 2.19.0 From 07f99354fa3947a6380f9fb236cca90a4b68b950 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 16 Jul 2025 08:51:43 +0200 Subject: [PATCH 20/42] chore(deps): bump org.apache.maven:maven-plugin-api from 3.9.9 to 3.9.11 (#2860) --- updated-dependencies: - dependency-name: org.apache.maven:maven-plugin-api dependency-version: 3.9.11 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- bootstrapper-maven-plugin/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bootstrapper-maven-plugin/pom.xml b/bootstrapper-maven-plugin/pom.xml index eaa32eb009..22a9db1bea 100644 --- a/bootstrapper-maven-plugin/pom.xml +++ b/bootstrapper-maven-plugin/pom.xml @@ -15,7 +15,7 @@ 3.15.1 - 3.9.9 + 3.9.11 3.0.0 3.15.1 From 50a90f1ef6a323c03388d7bf88d280579bb2e973 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Attila=20M=C3=A9sz=C3=A1ros?= Date: Wed, 16 Jul 2025 15:27:50 +0200 Subject: [PATCH 21/42] improve: release process (#2861) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit see details: https://central.sonatype.org/publish/publish-portal-maven/#usage see sample also here: https://github.com/teamlead/java-maven-sonatype-starter/tree/master Signed-off-by: Attila Mészáros --- .github/workflows/release-project-in-dir.yml | 20 ++++++++++-------- .github/workflows/snapshot-releases.yml | 22 ++++++++++++-------- pom.xml | 13 ++++++------ 3 files changed, 31 insertions(+), 24 deletions(-) diff --git a/.github/workflows/release-project-in-dir.yml b/.github/workflows/release-project-in-dir.yml index dc79b6f6c2..02280d5a1f 100644 --- a/.github/workflows/release-project-in-dir.yml +++ b/.github/workflows/release-project-in-dir.yml @@ -29,6 +29,11 @@ jobs: java-version: 17 distribution: temurin cache: 'maven' + server-id: central + server-username: MAVEN_USERNAME + server-password: MAVEN_CENTRAL_TOKEN + gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }} + gpg-passphrase: MAVEN_GPG_PASSPHRASE - name: Change version to release version # Assume that RELEASE_VERSION will have form like: "v1.0.1". So we cut the "v" @@ -37,15 +42,12 @@ jobs: env: RELEASE_VERSION: ${{ github.event.release.tag_name }} - - name: Release Maven package - uses: samuelmeuli/action-maven-publish@v1 - with: - maven_profiles: "release" - maven_args: ${{ env.MAVEN_ARGS }} - gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }} - gpg_passphrase: ${{ secrets.GPG_PASSPHRASE }} - nexus_username: ${{ secrets.OSSRH_USERNAME }} - nexus_password: ${{ secrets.OSSRH_TOKEN }} + - name: Publish to Apache Maven Central + run: mvn package deploy -Prelease + env: + MAVEN_USERNAME: ${{ secrets.NEXUS_USERNAME }} + MAVEN_CENTRAL_TOKEN: ${{ secrets.NEXUS_PASSWORD }} + MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} # This is separate job because there were issues with git after release step, was not able to commit changes. update-working-version: diff --git a/.github/workflows/snapshot-releases.yml b/.github/workflows/snapshot-releases.yml index 66fe9d25a3..f9219d1278 100644 --- a/.github/workflows/snapshot-releases.yml +++ b/.github/workflows/snapshot-releases.yml @@ -33,14 +33,18 @@ jobs: - name: Set up Java and Maven uses: actions/setup-java@v4 with: - distribution: temurin java-version: 17 + distribution: temurin cache: 'maven' - - name: Release Maven package - uses: samuelmeuli/action-maven-publish@v1 - with: - maven_profiles: "release" - gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }} - gpg_passphrase: ${{ secrets.GPG_PASSPHRASE }} - nexus_username: ${{ secrets.OSSRH_USERNAME }} - nexus_password: ${{ secrets.OSSRH_TOKEN }} + server-id: central + server-username: MAVEN_USERNAME + server-password: MAVEN_CENTRAL_TOKEN + gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }} + gpg-passphrase: MAVEN_GPG_PASSPHRASE + + - name: Publish to Apache Maven Central + run: mvn package deploy -Prelease + env: + MAVEN_USERNAME: ${{ secrets.NEXUS_USERNAME }} + MAVEN_CENTRAL_TOKEN: ${{ secrets.NEXUS_PASSWORD }} + MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} diff --git a/pom.xml b/pom.xml index 8f9a1a5ac3..fe7de8a8a6 100644 --- a/pom.xml +++ b/pom.xml @@ -544,14 +544,15 @@ - org.sonatype.plugins - nexus-staging-maven-plugin - ${nexus-staging-maven-plugin.version} + org.sonatype.central + central-publishing-maven-plugin + 0.8.0 true - ossrh - https://oss.sonatype.org/ - true + central + true + true + published From ad2cd4e238224d1d38d8d0d65ac28f4e517be7c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Attila=20M=C3=A9sz=C3=A1ros?= Date: Wed, 16 Jul 2025 15:47:37 +0200 Subject: [PATCH 22/42] fix: remove snapshot repo override (#2862) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Attila Mészáros --- pom.xml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/pom.xml b/pom.xml index fe7de8a8a6..7cfc62a8b1 100644 --- a/pom.xml +++ b/pom.xml @@ -44,13 +44,6 @@ https://github.com/operator-framework/java-operator-sdk/tree/main - - - ossrh - https://oss.sonatype.org/content/repositories/snapshots - - - UTF-8 17 From 2409b22e1d90fd39c75add24e6d34eb62adaaf99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Attila=20M=C3=A9sz=C3=A1ros?= Date: Wed, 16 Jul 2025 17:04:03 +0200 Subject: [PATCH 23/42] fix: remove staging plugin from bom module (#2863) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Attila Mészáros --- operator-framework-bom/pom.xml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/operator-framework-bom/pom.xml b/operator-framework-bom/pom.xml index 59d9c7739b..4000db4f5d 100644 --- a/operator-framework-bom/pom.xml +++ b/operator-framework-bom/pom.xml @@ -131,7 +131,6 @@ org.apache.maven.plugins maven-source-plugin - ${maven-source-plugin.version} attach-sources @@ -144,7 +143,6 @@ org.apache.maven.plugins maven-gpg-plugin - ${maven-gpg-plugin.version} sign-artifacts @@ -162,14 +160,15 @@ - org.sonatype.plugins - nexus-staging-maven-plugin - ${nexus-staging-maven-plugin.version} + org.sonatype.central + central-publishing-maven-plugin + 0.8.0 true - ossrh - https://oss.sonatype.org/ - true + central + true + true + published From 34e69ee819e9e1becd2556c8372a05dd73e6d26e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Attila=20M=C3=A9sz=C3=A1ros?= Date: Wed, 16 Jul 2025 17:11:27 +0200 Subject: [PATCH 24/42] fix: put back version for bom in release (#2864) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Attila Mészáros --- operator-framework-bom/pom.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/operator-framework-bom/pom.xml b/operator-framework-bom/pom.xml index 4000db4f5d..fb326beb8f 100644 --- a/operator-framework-bom/pom.xml +++ b/operator-framework-bom/pom.xml @@ -131,6 +131,7 @@ org.apache.maven.plugins maven-source-plugin + ${maven-source-plugin.version} attach-sources @@ -143,6 +144,7 @@ org.apache.maven.plugins maven-gpg-plugin + ${maven-gpg-plugin.version} sign-artifacts From 33594a2e6d158078dc8b45374d152e87c9763513 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Attila=20M=C3=A9sz=C3=A1ros?= Date: Wed, 16 Jul 2025 17:18:34 +0200 Subject: [PATCH 25/42] fix: source plugin for release (#2865) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Attila Mészáros --- operator-framework-bom/pom.xml | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/operator-framework-bom/pom.xml b/operator-framework-bom/pom.xml index fb326beb8f..8bcb72b731 100644 --- a/operator-framework-bom/pom.xml +++ b/operator-framework-bom/pom.xml @@ -136,7 +136,7 @@ attach-sources - jar + jar-no-fork diff --git a/pom.xml b/pom.xml index 7cfc62a8b1..ce4684e70e 100644 --- a/pom.xml +++ b/pom.xml @@ -512,7 +512,7 @@ attach-sources - jar + jar-no-fork From 8f93270d2d925e97f15fb0a937132a3c773d3daa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Attila=20M=C3=A9sz=C3=A1ros?= Date: Wed, 16 Jul 2025 17:27:07 +0200 Subject: [PATCH 26/42] fix: remove source plugin from bom release (#2866) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Attila Mészáros --- operator-framework-bom/pom.xml | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/operator-framework-bom/pom.xml b/operator-framework-bom/pom.xml index 8bcb72b731..df6ad6d2b3 100644 --- a/operator-framework-bom/pom.xml +++ b/operator-framework-bom/pom.xml @@ -128,19 +128,6 @@ - - org.apache.maven.plugins - maven-source-plugin - ${maven-source-plugin.version} - - - attach-sources - - jar-no-fork - - - - org.apache.maven.plugins maven-gpg-plugin From 12b1711088866eb9fe9c43215608e3136714426e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Attila=20M=C3=A9sz=C3=A1ros?= Date: Wed, 16 Jul 2025 17:42:03 +0200 Subject: [PATCH 27/42] fix: temp removing bom release (#2867) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Attila Mészáros --- operator-framework-bom/pom.xml | 55 ---------------------------------- 1 file changed, 55 deletions(-) diff --git a/operator-framework-bom/pom.xml b/operator-framework-bom/pom.xml index df6ad6d2b3..7b1ab64069 100644 --- a/operator-framework-bom/pom.xml +++ b/operator-framework-bom/pom.xml @@ -109,59 +109,4 @@ - - - - release - - - - org.apache.maven.plugins - maven-javadoc-plugin - ${maven-javadoc-plugin.version} - - - attach-javadocs - - jar - - - - - - org.apache.maven.plugins - maven-gpg-plugin - ${maven-gpg-plugin.version} - - - sign-artifacts - - sign - - verify - - - --pinentry-mode - loopback - - - - - - - org.sonatype.central - central-publishing-maven-plugin - 0.8.0 - true - - central - true - true - published - - - - - - From a6c34e550447c9c7280b07813d7f5de0f436816a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Attila=20M=C3=A9sz=C3=A1ros?= Date: Mon, 21 Jul 2025 13:13:32 +0200 Subject: [PATCH 28/42] fix: release and snapshot release (#2873) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit tested locally Signed-off-by: Attila Mészáros --- operator-framework-bom/pom.xml | 88 ++++++++++++++++++++++++++++++---- pom.xml | 20 ++++---- 2 files changed, 91 insertions(+), 17 deletions(-) diff --git a/operator-framework-bom/pom.xml b/operator-framework-bom/pom.xml index 7b1ab64069..fad8f0e164 100644 --- a/operator-framework-bom/pom.xml +++ b/operator-framework-bom/pom.xml @@ -33,19 +33,12 @@ https://github.com/operator-framework/java-operator-sdk/tree/master - - - ossrh - https://oss.sonatype.org/content/repositories/snapshots - - - - 1.7.0 3.2.8 3.3.1 3.11.2 2.44.3 + 0.8.0 @@ -109,4 +102,83 @@ + + + + release + + + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*IT.java + **/*E2E.java + **/InformerRelatedBehaviorTest.java + + + + + org.apache.maven.plugins + maven-javadoc-plugin + ${maven-javadoc-plugin.version} + + + attach-javadocs + + jar + + + + + + org.apache.maven.plugins + maven-source-plugin + ${maven-source-plugin.version} + + + attach-sources + + jar + + verify + + + + + org.apache.maven.plugins + maven-gpg-plugin + + + sign-artifacts + + sign + + verify + + + --pinentry-mode + loopback + + + + + + + org.sonatype.central + central-publishing-maven-plugin + ${central-publishing-maven-plugin.version} + true + + central + true + true + published + + + + + + diff --git a/pom.xml b/pom.xml index ce4684e70e..4cd8f597fd 100644 --- a/pom.xml +++ b/pom.xml @@ -72,6 +72,7 @@ 2.11 3.14.0 3.5.3 + 0.8.0 3.11.2 3.3.1 3.3.1 @@ -286,6 +287,15 @@ org.apache.maven.plugins maven-source-plugin ${maven-source-plugin.version} + + + attach-sources + + jar + + verify + + org.apache.maven.plugins @@ -508,14 +518,6 @@ org.apache.maven.plugins maven-source-plugin - - - attach-sources - - jar-no-fork - - - org.apache.maven.plugins @@ -539,7 +541,7 @@ org.sonatype.central central-publishing-maven-plugin - 0.8.0 + ${central-publishing-maven-plugin.version} true central From 1971fbb17027a9e9ee6c65b23aa5b666764e8529 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Attila=20M=C3=A9sz=C3=A1ros?= Date: Mon, 21 Jul 2025 17:17:15 +0200 Subject: [PATCH 29/42] fix: minikube setup does not use github token (#2874) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Attila Mészáros --- .github/workflows/build.yml | 5 ++++- .github/workflows/e2e-test.yml | 9 ++++++--- .github/workflows/integration-tests.yml | 6 +++--- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b81fa41b6d..25562aa1c9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -11,7 +11,10 @@ jobs: strategy: matrix: java: [ 17, 21, 24 ] - kubernetes: [ '1.30.12', '1.31.8', '1.32.4','1.33.0' ] + # Use the latest versions supported by minikube, otherwise GitHub it will + # end up in a throttling requests from minikube and workflow will fail. + # Minikube does such requests only if a version is not officially supported. + kubernetes: [ '1.30.12', '1.31.8', '1.32.4','1.33.1' ] uses: ./.github/workflows/integration-tests.yml with: java-version: ${{ matrix.java }} diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml index e06b427960..408e694a4c 100644 --- a/.github/workflows/e2e-test.yml +++ b/.github/workflows/e2e-test.yml @@ -1,6 +1,6 @@ # Integration and end to end tests which runs locally and deploys the Operator to a Kubernetes # (Minikube) cluster and creates custom resources to verify the operator's functionality -name: Integration & End to End tests +name: End to End tests on: pull_request: paths-ignore: @@ -32,8 +32,11 @@ jobs: - name: Setup Minikube-Kubernetes uses: manusa/actions-setup-minikube@v2.14.0 with: - minikube version: v1.34.0 - kubernetes version: v1.33.0 + minikube version: v1.36.0 + # Use the latest versions supported by minikube, otherwise GitHub it will + # end up in a throttling requests from minikube and workflow will fail. + # Minikube does such requests only if a version is not officially supported. + kubernetes version: v1.33.1 github token: ${{ secrets.GITHUB_TOKEN }} driver: docker diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml index 75a6093371..614624242a 100644 --- a/.github/workflows/integration-tests.yml +++ b/.github/workflows/integration-tests.yml @@ -41,10 +41,10 @@ jobs: - name: Set up Minikube uses: manusa/actions-setup-minikube@v2.14.0 with: - minikube version: 'v1.34.0' + minikube version: 'v1.36.0' kubernetes version: '${{ inputs.kube-version }}' - driver: 'docker' - github token: ${{ secrets.GITHUB_TOKEN }} + github token: ${{ github.token }} + - name: "${{inputs.it-category}} integration tests (kube: ${{ inputs.kube-version }} / java: ${{ inputs.java-version }} / client: ${{ inputs.http-client }})" run: | if [ -z "${{inputs.it-category}}" ]; then From b0663eeedcdb632f5af944d8b30a3117583affbe Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 21 Jul 2025 17:51:19 +0200 Subject: [PATCH 30/42] chore(deps): bump com.diffplug.spotless:spotless-maven-plugin (#2871) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- updated-dependencies: - dependency-name: com.diffplug.spotless:spotless-maven-plugin dependency-version: 2.46.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Attila Mészáros --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4cd8f597fd..e5c2c29c5a 100644 --- a/pom.xml +++ b/pom.xml @@ -84,7 +84,7 @@ 3.1.4 9.0.2 3.4.6 - 2.45.0 + 2.46.0 From 33c59ae020714f5395585972fcb985cc04c1bf19 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 22 Jul 2025 09:00:23 +0200 Subject: [PATCH 31/42] chore(deps): bump commons-io:commons-io from 2.19.0 to 2.20.0 (#2872) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- updated-dependencies: - dependency-name: commons-io:commons-io dependency-version: 2.20.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Attila Mészáros --- bootstrapper-maven-plugin/pom.xml | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bootstrapper-maven-plugin/pom.xml b/bootstrapper-maven-plugin/pom.xml index 22a9db1bea..742c47adc9 100644 --- a/bootstrapper-maven-plugin/pom.xml +++ b/bootstrapper-maven-plugin/pom.xml @@ -58,7 +58,7 @@ commons-io commons-io - 2.19.0 + 2.20.0 com.github.spullara.mustache.java diff --git a/pom.xml b/pom.xml index e5c2c29c5a..a888d4f9df 100644 --- a/pom.xml +++ b/pom.xml @@ -66,7 +66,7 @@ 1.15.2 3.2.2 0.9.14 - 2.19.0 + 2.20.0 4.16 2.11 From 7906bcb319afb0a3f985eec1d74bcfea2e615402 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 23 Jul 2025 08:57:52 +0200 Subject: [PATCH 32/42] chore(deps): bump com.diffplug.spotless:spotless-maven-plugin (#2877) Bumps [com.diffplug.spotless:spotless-maven-plugin](https://github.com/diffplug/spotless) from 2.46.0 to 2.46.1. - [Release notes](https://github.com/diffplug/spotless/releases) - [Changelog](https://github.com/diffplug/spotless/blob/main/CHANGES.md) - [Commits](https://github.com/diffplug/spotless/compare/maven/2.46.0...maven/2.46.1) --- updated-dependencies: - dependency-name: com.diffplug.spotless:spotless-maven-plugin dependency-version: 2.46.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a888d4f9df..d2a6d00eca 100644 --- a/pom.xml +++ b/pom.xml @@ -84,7 +84,7 @@ 3.1.4 9.0.2 3.4.6 - 2.46.0 + 2.46.1 From 28e18f7d27a23a5943b0abb429b7ae77b47c577c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 23 Jul 2025 08:58:00 +0200 Subject: [PATCH 33/42] chore(deps): bump org.junit:junit-bom from 5.13.3 to 5.13.4 (#2878) Bumps [org.junit:junit-bom](https://github.com/junit-team/junit-framework) from 5.13.3 to 5.13.4. - [Release notes](https://github.com/junit-team/junit-framework/releases) - [Commits](https://github.com/junit-team/junit-framework/compare/r5.13.3...r5.13.4) --- updated-dependencies: - dependency-name: org.junit:junit-bom dependency-version: 5.13.4 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d2a6d00eca..88283de27c 100644 --- a/pom.xml +++ b/pom.xml @@ -52,7 +52,7 @@ java-operator-sdk https://sonarcloud.io jdk - 5.13.3 + 5.13.4 7.3.1 2.0.17 2.25.1 From 457c23ffaac7954db0b148f450e9b0ca3d6ce9fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Attila=20M=C3=A9sz=C3=A1ros?= Date: Tue, 5 Aug 2025 13:51:14 +0200 Subject: [PATCH 34/42] fix: startup all resource indexing (#2881) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Attila Mészáros --- .../source/informer/InformerEventSource.java | 10 ++- .../informer/InformerEventSourceTest.java | 7 +- .../junit/AbstractOperatorExtension.java | 4 + .../junit/LocallyRunOperatorExtension.java | 22 +++++- .../StartupSecondaryAccessCustomResource.java | 13 ++++ .../StartupSecondaryAccessIT.java | 53 +++++++++++++ .../StartupSecondaryAccessReconciler.java | 75 +++++++++++++++++++ 7 files changed, 180 insertions(+), 4 deletions(-) create mode 100644 operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/startsecondaryaccess/StartupSecondaryAccessCustomResource.java create mode 100644 operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/startsecondaryaccess/StartupSecondaryAccessIT.java create mode 100644 operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/startsecondaryaccess/StartupSecondaryAccessReconciler.java diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerEventSource.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerEventSource.java index b52dc278f2..c029a54170 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerEventSource.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerEventSource.java @@ -95,7 +95,7 @@ private InformerEventSource( parseResourceVersions); // If there is a primary to secondary mapper there is no need for primary to secondary index. primaryToSecondaryMapper = configuration.getPrimaryToSecondaryMapper(); - if (primaryToSecondaryMapper == null) { + if (useSecondaryToPrimaryIndex()) { primaryToSecondaryIndex = // The index uses the secondary to primary mapper (always present) to build the index new DefaultPrimaryToSecondaryIndex<>(configuration.getSecondaryToPrimaryMapper()); @@ -157,6 +157,14 @@ public void onDelete(R resource, boolean b) { } } + @Override + public synchronized void start() { + super.start(); + // this makes sure that on first reconciliation all resources are + // present on the index + manager().list().forEach(primaryToSecondaryIndex::onAddOrUpdate); + } + private synchronized void onAddOrUpdate( Operation operation, R newObject, R oldObject, Runnable superOnOp) { var resourceID = ResourceID.fromResource(newObject); diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerEventSourceTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerEventSourceTest.java index 3205bca523..a08989c8ce 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerEventSourceTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerEventSourceTest.java @@ -57,7 +57,12 @@ void setup() { .thenReturn(mock(SecondaryToPrimaryMapper.class)); when(informerEventSourceConfiguration.getResourceClass()).thenReturn(Deployment.class); - informerEventSource = new InformerEventSource<>(informerEventSourceConfiguration, clientMock); + informerEventSource = + new InformerEventSource<>(informerEventSourceConfiguration, clientMock) { + // mocking start + @Override + public synchronized void start() {} + }; var mockControllerConfig = mock(ControllerConfiguration.class); when(mockControllerConfig.getConfigurationService()).thenReturn(new BaseConfigurationService()); diff --git a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/AbstractOperatorExtension.java b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/AbstractOperatorExtension.java index 00bf7e8380..794bc11d9a 100644 --- a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/AbstractOperatorExtension.java +++ b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/AbstractOperatorExtension.java @@ -111,6 +111,10 @@ public T create(T resource) { return kubernetesClient.resource(resource).inNamespace(namespace).create(); } + public T serverSideApply(T resource) { + return kubernetesClient.resource(resource).inNamespace(namespace).serverSideApply(); + } + public T replace(T resource) { return kubernetesClient.resource(resource).inNamespace(namespace).replace(); } diff --git a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/LocallyRunOperatorExtension.java b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/LocallyRunOperatorExtension.java index 3e6ad35e52..54cb57544d 100644 --- a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/LocallyRunOperatorExtension.java +++ b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/LocallyRunOperatorExtension.java @@ -54,6 +54,7 @@ public class LocallyRunOperatorExtension extends AbstractOperatorExtension { private final List> additionalCustomResourceDefinitions; private final Map registeredControllers; private final Map crdMappings; + private final Consumer beforeStartHook; private LocallyRunOperatorExtension( List reconcilers, @@ -68,7 +69,8 @@ private LocallyRunOperatorExtension( Consumer configurationServiceOverrider, Function namespaceNameSupplier, Function perClassNamespaceNameSupplier, - List additionalCrds) { + List additionalCrds, + Consumer beforeStartHook) { super( infrastructure, infrastructureTimeout, @@ -82,6 +84,7 @@ private LocallyRunOperatorExtension( this.portForwards = portForwards; this.localPortForwards = new ArrayList<>(portForwards.size()); this.additionalCustomResourceDefinitions = additionalCustomResourceDefinitions; + this.beforeStartHook = beforeStartHook; configurationServiceOverrider = configurationServiceOverrider != null ? configurationServiceOverrider.andThen( @@ -298,6 +301,10 @@ protected void before(ExtensionContext context) { }); crdMappings.clear(); + if (beforeStartHook != null) { + beforeStartHook.accept(this); + } + LOGGER.debug("Starting the operator locally"); this.operator.start(); } @@ -356,6 +363,7 @@ public static class Builder extends AbstractBuilder { private final List portForwards; private final List> additionalCustomResourceDefinitions; private final List additionalCRDs = new ArrayList<>(); + private Consumer beforeStartHook; private KubernetesClient kubernetesClient; protected Builder() { @@ -424,6 +432,15 @@ public Builder withAdditionalCRD(String... paths) { return this; } + /** + * Used to initialize resources when the namespace is generated but the operator is not started + * yet. + */ + public Builder withBeforeStartHook(Consumer beforeStartHook) { + this.beforeStartHook = beforeStartHook; + return this; + } + public LocallyRunOperatorExtension build() { return new LocallyRunOperatorExtension( reconcilers, @@ -438,7 +455,8 @@ public LocallyRunOperatorExtension build() { configurationServiceOverrider, namespaceNameSupplier, perClassNamespaceNameSupplier, - additionalCRDs); + additionalCRDs, + beforeStartHook); } } diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/startsecondaryaccess/StartupSecondaryAccessCustomResource.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/startsecondaryaccess/StartupSecondaryAccessCustomResource.java new file mode 100644 index 0000000000..b9701c94bd --- /dev/null +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/startsecondaryaccess/StartupSecondaryAccessCustomResource.java @@ -0,0 +1,13 @@ +package io.javaoperatorsdk.operator.baseapi.startsecondaryaccess; + +import io.fabric8.kubernetes.api.model.Namespaced; +import io.fabric8.kubernetes.client.CustomResource; +import io.fabric8.kubernetes.model.annotation.Group; +import io.fabric8.kubernetes.model.annotation.ShortNames; +import io.fabric8.kubernetes.model.annotation.Version; + +@Group("sample.javaoperatorsdk") +@Version("v1") +@ShortNames("ssac") +public class StartupSecondaryAccessCustomResource extends CustomResource + implements Namespaced {} diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/startsecondaryaccess/StartupSecondaryAccessIT.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/startsecondaryaccess/StartupSecondaryAccessIT.java new file mode 100644 index 0000000000..61fc40803c --- /dev/null +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/startsecondaryaccess/StartupSecondaryAccessIT.java @@ -0,0 +1,53 @@ +package io.javaoperatorsdk.operator.baseapi.startsecondaryaccess; + +import java.util.Map; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; + +import io.fabric8.kubernetes.api.model.ConfigMap; +import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; +import io.javaoperatorsdk.operator.junit.LocallyRunOperatorExtension; + +import static io.javaoperatorsdk.operator.baseapi.startsecondaryaccess.StartupSecondaryAccessReconciler.LABEL_KEY; +import static io.javaoperatorsdk.operator.baseapi.startsecondaryaccess.StartupSecondaryAccessReconciler.LABEL_VALUE; +import static org.assertj.core.api.Assertions.assertThat; +import static org.awaitility.Awaitility.await; + +class StartupSecondaryAccessIT { + + public static final int SECONDARY_NUMBER = 200; + + @RegisterExtension + static LocallyRunOperatorExtension extension = + LocallyRunOperatorExtension.builder() + .withReconciler(new StartupSecondaryAccessReconciler()) + .withBeforeStartHook( + ex -> { + var primary = new StartupSecondaryAccessCustomResource(); + primary.setMetadata(new ObjectMetaBuilder().withName("test1").build()); + primary = ex.serverSideApply(primary); + + for (int i = 0; i < SECONDARY_NUMBER; i++) { + ConfigMap cm = new ConfigMap(); + cm.setMetadata( + new ObjectMetaBuilder() + .withLabels(Map.of(LABEL_KEY, LABEL_VALUE)) + .withNamespace(ex.getNamespace()) + .withName("cm" + i) + .build()); + cm.addOwnerReference(primary); + ex.serverSideApply(cm); + } + }) + .build(); + + @Test + void reconcilerSeeAllSecondaryResources() { + var reconciler = extension.getReconcilerOfType(StartupSecondaryAccessReconciler.class); + + await().untilAsserted(() -> assertThat(reconciler.isReconciled()).isTrue()); + + assertThat(reconciler.isSecondaryAndCacheSameAmount()).isTrue(); + } +} diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/startsecondaryaccess/StartupSecondaryAccessReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/startsecondaryaccess/StartupSecondaryAccessReconciler.java new file mode 100644 index 0000000000..a2c51fdafd --- /dev/null +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/startsecondaryaccess/StartupSecondaryAccessReconciler.java @@ -0,0 +1,75 @@ +package io.javaoperatorsdk.operator.baseapi.startsecondaryaccess; + +import java.util.List; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import io.fabric8.kubernetes.api.model.ConfigMap; +import io.javaoperatorsdk.operator.api.config.informer.InformerEventSourceConfiguration; +import io.javaoperatorsdk.operator.api.reconciler.Context; +import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; +import io.javaoperatorsdk.operator.api.reconciler.EventSourceContext; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; +import io.javaoperatorsdk.operator.processing.event.source.EventSource; +import io.javaoperatorsdk.operator.processing.event.source.informer.InformerEventSource; + +import static io.javaoperatorsdk.operator.baseapi.startsecondaryaccess.StartupSecondaryAccessIT.SECONDARY_NUMBER; + +@ControllerConfiguration +public class StartupSecondaryAccessReconciler + implements Reconciler { + + private static final Logger log = LoggerFactory.getLogger(StartupSecondaryAccessReconciler.class); + + public static final String LABEL_KEY = "app"; + public static final String LABEL_VALUE = "secondary-test"; + + private InformerEventSource cmInformer; + + private boolean secondaryAndCacheSameAmount = true; + private boolean reconciled = false; + + @Override + public UpdateControl reconcile( + StartupSecondaryAccessCustomResource resource, + Context context) { + + var secondary = context.getSecondaryResources(ConfigMap.class); + var cached = cmInformer.list().toList(); + + log.info( + "Secondary number: {}, cached: {}, expected: {}", + secondary.size(), + cached.size(), + SECONDARY_NUMBER); + + if (secondary.size() != cached.size()) { + secondaryAndCacheSameAmount = false; + } + reconciled = true; + return UpdateControl.noUpdate(); + } + + @Override + public List> prepareEventSources( + EventSourceContext context) { + cmInformer = + new InformerEventSource<>( + InformerEventSourceConfiguration.from( + ConfigMap.class, StartupSecondaryAccessCustomResource.class) + .withLabelSelector(LABEL_KEY + "=" + LABEL_VALUE) + .build(), + context); + return List.of(cmInformer); + } + + public boolean isSecondaryAndCacheSameAmount() { + return secondaryAndCacheSameAmount; + } + + public boolean isReconciled() { + return reconciled; + } +} From a94297054ed80a3a58e4da8ce16fe079e3ea90b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Attila=20M=C3=A9sz=C3=A1ros?= Date: Tue, 5 Aug 2025 13:51:58 +0200 Subject: [PATCH 35/42] improve: DependentResourceCrossRefIT cleanup and logging (#2883) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Attila Mészáros --- .../DependentResourceCrossRefIT.java | 16 ++++++++++++++++ .../DependentResourceCrossRefReconciler.java | 6 ++++++ 2 files changed, 22 insertions(+) diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/dependentresourcecrossref/DependentResourceCrossRefIT.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/dependentresourcecrossref/DependentResourceCrossRefIT.java index ae5cd25895..1b71c79448 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/dependentresourcecrossref/DependentResourceCrossRefIT.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/dependentresourcecrossref/DependentResourceCrossRefIT.java @@ -44,6 +44,22 @@ void dependentResourceCanReferenceEachOther() { assertThat(operator.get(Secret.class, TEST_RESOURCE_NAME + i)).isNotNull(); } }); + + for (int i = 0; i < EXECUTION_NUMBER; i++) { + operator.delete(testResource(i)); + } + await() + .timeout(Duration.ofSeconds(30)) + .untilAsserted( + () -> { + for (int i = 0; i < EXECUTION_NUMBER; i++) { + assertThat( + operator.get( + DependentResourceCrossRefResource.class, + testResource(i).getMetadata().getName())) + .isNull(); + } + }); } DependentResourceCrossRefResource testResource(int n) { diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/dependentresourcecrossref/DependentResourceCrossRefReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/dependentresourcecrossref/DependentResourceCrossRefReconciler.java index 5d54ecdabe..247174838c 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/dependentresourcecrossref/DependentResourceCrossRefReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/dependentresourcecrossref/DependentResourceCrossRefReconciler.java @@ -5,6 +5,9 @@ import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import io.fabric8.kubernetes.api.model.ConfigMap; import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; import io.fabric8.kubernetes.api.model.Secret; @@ -26,6 +29,8 @@ @ControllerConfiguration public class DependentResourceCrossRefReconciler implements Reconciler { + private static final Logger log = + LoggerFactory.getLogger(DependentResourceCrossRefReconciler.class); public static final String SECRET_NAME = "secret"; private final AtomicInteger numberOfExecutions = new AtomicInteger(0); @@ -48,6 +53,7 @@ public ErrorStatusUpdateControl updateErrorSt DependentResourceCrossRefResource resource, Context context, Exception e) { + log.error("Status update on error", e); errorHappened = true; return ErrorStatusUpdateControl.noStatusUpdate(); } From 8259fd357389528bed56ec42e38b07a49156dfaf Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Tue, 5 Aug 2025 12:14:11 +0000 Subject: [PATCH 36/42] Set new SNAPSHOT version into pom files. --- bootstrapper-maven-plugin/pom.xml | 2 +- caffeine-bounded-cache-support/pom.xml | 2 +- micrometer-support/pom.xml | 2 +- operator-framework-bom/pom.xml | 2 +- operator-framework-core/pom.xml | 2 +- operator-framework-junit5/pom.xml | 2 +- operator-framework/pom.xml | 2 +- pom.xml | 2 +- sample-operators/controller-namespace-deletion/pom.xml | 2 +- sample-operators/leader-election/pom.xml | 2 +- sample-operators/mysql-schema/pom.xml | 2 +- sample-operators/pom.xml | 2 +- sample-operators/tomcat-operator/pom.xml | 2 +- sample-operators/webpage/pom.xml | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/bootstrapper-maven-plugin/pom.xml b/bootstrapper-maven-plugin/pom.xml index 742c47adc9..3e292e810b 100644 --- a/bootstrapper-maven-plugin/pom.xml +++ b/bootstrapper-maven-plugin/pom.xml @@ -5,7 +5,7 @@ io.javaoperatorsdk java-operator-sdk - 5.1.2-SNAPSHOT + 5.1.3-SNAPSHOT bootstrapper diff --git a/caffeine-bounded-cache-support/pom.xml b/caffeine-bounded-cache-support/pom.xml index c45e56386d..14e19dd85e 100644 --- a/caffeine-bounded-cache-support/pom.xml +++ b/caffeine-bounded-cache-support/pom.xml @@ -4,7 +4,7 @@ io.javaoperatorsdk java-operator-sdk - 5.1.2-SNAPSHOT + 5.1.3-SNAPSHOT caffeine-bounded-cache-support diff --git a/micrometer-support/pom.xml b/micrometer-support/pom.xml index 73ed6ff77e..ea18d07ce7 100644 --- a/micrometer-support/pom.xml +++ b/micrometer-support/pom.xml @@ -4,7 +4,7 @@ io.javaoperatorsdk java-operator-sdk - 5.1.2-SNAPSHOT + 5.1.3-SNAPSHOT micrometer-support diff --git a/operator-framework-bom/pom.xml b/operator-framework-bom/pom.xml index fad8f0e164..4b314d5719 100644 --- a/operator-framework-bom/pom.xml +++ b/operator-framework-bom/pom.xml @@ -4,7 +4,7 @@ io.javaoperatorsdk operator-framework-bom - 5.1.2-SNAPSHOT + 5.1.3-SNAPSHOT pom Operator SDK - Bill of Materials Java SDK for implementing Kubernetes operators diff --git a/operator-framework-core/pom.xml b/operator-framework-core/pom.xml index 69c02d6f01..c99b609113 100644 --- a/operator-framework-core/pom.xml +++ b/operator-framework-core/pom.xml @@ -4,7 +4,7 @@ io.javaoperatorsdk java-operator-sdk - 5.1.2-SNAPSHOT + 5.1.3-SNAPSHOT ../pom.xml diff --git a/operator-framework-junit5/pom.xml b/operator-framework-junit5/pom.xml index 07bfa9cd1c..8c8a349af0 100644 --- a/operator-framework-junit5/pom.xml +++ b/operator-framework-junit5/pom.xml @@ -4,7 +4,7 @@ io.javaoperatorsdk java-operator-sdk - 5.1.2-SNAPSHOT + 5.1.3-SNAPSHOT operator-framework-junit-5 diff --git a/operator-framework/pom.xml b/operator-framework/pom.xml index 18cbda43cf..9324f16835 100644 --- a/operator-framework/pom.xml +++ b/operator-framework/pom.xml @@ -4,7 +4,7 @@ io.javaoperatorsdk java-operator-sdk - 5.1.2-SNAPSHOT + 5.1.3-SNAPSHOT operator-framework diff --git a/pom.xml b/pom.xml index 88283de27c..0282fccb0a 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.javaoperatorsdk java-operator-sdk - 5.1.2-SNAPSHOT + 5.1.3-SNAPSHOT pom Operator SDK for Java Java SDK for implementing Kubernetes operators diff --git a/sample-operators/controller-namespace-deletion/pom.xml b/sample-operators/controller-namespace-deletion/pom.xml index 9a87338da5..312e2fb199 100644 --- a/sample-operators/controller-namespace-deletion/pom.xml +++ b/sample-operators/controller-namespace-deletion/pom.xml @@ -5,7 +5,7 @@ io.javaoperatorsdk sample-operators - 5.1.2-SNAPSHOT + 5.1.3-SNAPSHOT sample-controller-namespace-deletion diff --git a/sample-operators/leader-election/pom.xml b/sample-operators/leader-election/pom.xml index ca74158ae6..f01406b132 100644 --- a/sample-operators/leader-election/pom.xml +++ b/sample-operators/leader-election/pom.xml @@ -5,7 +5,7 @@ io.javaoperatorsdk sample-operators - 5.1.2-SNAPSHOT + 5.1.3-SNAPSHOT sample-leader-election diff --git a/sample-operators/mysql-schema/pom.xml b/sample-operators/mysql-schema/pom.xml index 94b2f93769..cf1be19cbb 100644 --- a/sample-operators/mysql-schema/pom.xml +++ b/sample-operators/mysql-schema/pom.xml @@ -5,7 +5,7 @@ io.javaoperatorsdk sample-operators - 5.1.2-SNAPSHOT + 5.1.3-SNAPSHOT sample-mysql-schema-operator diff --git a/sample-operators/pom.xml b/sample-operators/pom.xml index 2f1c9c1645..7763767a1f 100644 --- a/sample-operators/pom.xml +++ b/sample-operators/pom.xml @@ -5,7 +5,7 @@ io.javaoperatorsdk java-operator-sdk - 5.1.2-SNAPSHOT + 5.1.3-SNAPSHOT sample-operators diff --git a/sample-operators/tomcat-operator/pom.xml b/sample-operators/tomcat-operator/pom.xml index 38d6b4ec0c..3a9b640db8 100644 --- a/sample-operators/tomcat-operator/pom.xml +++ b/sample-operators/tomcat-operator/pom.xml @@ -5,7 +5,7 @@ io.javaoperatorsdk sample-operators - 5.1.2-SNAPSHOT + 5.1.3-SNAPSHOT sample-tomcat-operator diff --git a/sample-operators/webpage/pom.xml b/sample-operators/webpage/pom.xml index 7f118be1bb..d3a691a93a 100644 --- a/sample-operators/webpage/pom.xml +++ b/sample-operators/webpage/pom.xml @@ -5,7 +5,7 @@ io.javaoperatorsdk sample-operators - 5.1.2-SNAPSHOT + 5.1.3-SNAPSHOT sample-webpage-operator From 4bb58aab24911e26be95e1c3ad58d74706335cf9 Mon Sep 17 00:00:00 2001 From: ds-akloskowski Date: Thu, 7 Aug 2025 17:38:13 +0200 Subject: [PATCH 37/42] fix: Reorder setting visited flag and readyPostcondition result (#2886) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Adrian Kłoskowski --- .../dependent/workflow/WorkflowReconcileExecutor.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/WorkflowReconcileExecutor.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/WorkflowReconcileExecutor.java index 065e790ba4..9e29305b51 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/WorkflowReconcileExecutor.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/WorkflowReconcileExecutor.java @@ -144,9 +144,11 @@ protected void doRun(DependentResourceNode dependentResourceNode) { log.debug("Reconciling for primary: {} node: {} ", primaryID, dependentResourceNode); ReconcileResult reconcileResult = dependentResource.reconcile(primary, context); final var detailBuilder = createOrGetResultFor(dependentResourceNode); - detailBuilder.withReconcileResult(reconcileResult).markAsVisited(); - if (isConditionMet(dependentResourceNode.getReadyPostcondition(), dependentResourceNode)) { + boolean isReadyPostconditionMet = + isConditionMet(dependentResourceNode.getReadyPostcondition(), dependentResourceNode); + detailBuilder.withReconcileResult(reconcileResult).markAsVisited(); + if (isReadyPostconditionMet) { log.debug( "Setting already reconciled for: {} primaryID: {}", dependentResourceNode, primaryID); handleDependentsReconcile(dependentResourceNode); From 3723b1c8b72258583e260a40be298bce148c4daf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 8 Aug 2025 09:01:04 +0200 Subject: [PATCH 38/42] chore(deps): bump org.assertj:assertj-core from 3.27.3 to 3.27.4 (#2888) Bumps [org.assertj:assertj-core](https://github.com/assertj/assertj) from 3.27.3 to 3.27.4. - [Release notes](https://github.com/assertj/assertj/releases) - [Commits](https://github.com/assertj/assertj/compare/assertj-build-3.27.3...assertj-build-3.27.4) --- updated-dependencies: - dependency-name: org.assertj:assertj-core dependency-version: 3.27.4 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 0282fccb0a..961c227a8a 100644 --- a/pom.xml +++ b/pom.xml @@ -60,7 +60,7 @@ 3.18.0 0.21.0 1.13.0 - 3.27.3 + 3.27.4 4.3.0 2.7.3 1.15.2 From 03a0949437526f9486578151ec7a31dc31a19974 Mon Sep 17 00:00:00 2001 From: Antonio <122279781+afalhambra-hivemq@users.noreply.github.com> Date: Fri, 8 Aug 2025 12:02:35 +0200 Subject: [PATCH 39/42] doc: Update UpdateControl#patchStatus JavaDoc (#2889) Signed-off-by: Antonio Fernandez Alhambra --- .../javaoperatorsdk/operator/api/reconciler/UpdateControl.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/UpdateControl.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/UpdateControl.java index 1b5eefd7ff..1bd98c12d6 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/UpdateControl.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/UpdateControl.java @@ -21,8 +21,7 @@ private UpdateControl(P resource, boolean patchResource, boolean patchStatus) { } /** - * Preferred way to update the status. It does not do optimistic locking. Uses JSON Patch to patch - * the resource. + * Preferred way to update the status. Uses JSON Patch to patch the resource. * *

Note that this does not work, if the {@link CustomResource#initStatus()} is implemented, * since it breaks the diffing process. Don't implement it if using this method. There is also an From 680600aa30718b42cbb03193c140fb8fad672460 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Aug 2025 17:04:00 +0200 Subject: [PATCH 40/42] chore(deps): bump io.micrometer:micrometer-core from 1.15.2 to 1.15.3 (#2896) Bumps [io.micrometer:micrometer-core](https://github.com/micrometer-metrics/micrometer) from 1.15.2 to 1.15.3. - [Release notes](https://github.com/micrometer-metrics/micrometer/releases) - [Commits](https://github.com/micrometer-metrics/micrometer/compare/v1.15.2...v1.15.3) --- updated-dependencies: - dependency-name: io.micrometer:micrometer-core dependency-version: 1.15.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 961c227a8a..0dbd0879d8 100644 --- a/pom.xml +++ b/pom.xml @@ -63,7 +63,7 @@ 3.27.4 4.3.0 2.7.3 - 1.15.2 + 1.15.3 3.2.2 0.9.14 2.20.0 From 660ee937622c896b24bf1f71f97470ef04512fb7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Aug 2025 17:37:02 +0200 Subject: [PATCH 41/42] chore(deps): bump actions/checkout from 4 to 5 (#2897) Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build.yml | 2 +- .github/workflows/e2e-test.yml | 2 +- .github/workflows/hugo.yaml | 2 +- .github/workflows/integration-tests.yml | 2 +- .github/workflows/pr.yml | 2 +- .github/workflows/release-project-in-dir.yml | 4 ++-- .github/workflows/snapshot-releases.yml | 4 ++-- .github/workflows/sonar.yml | 2 +- 8 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 25562aa1c9..ebc3588a2e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -38,7 +38,7 @@ jobs: matrix: java: [ 17, 21, 24 ] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Set up Java and Maven uses: actions/setup-java@v4 with: diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml index 408e694a4c..c7e91915b6 100644 --- a/.github/workflows/e2e-test.yml +++ b/.github/workflows/e2e-test.yml @@ -27,7 +27,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Setup Minikube-Kubernetes uses: manusa/actions-setup-minikube@v2.14.0 diff --git a/.github/workflows/hugo.yaml b/.github/workflows/hugo.yaml index 511f10a8e0..c1b967616d 100644 --- a/.github/workflows/hugo.yaml +++ b/.github/workflows/hugo.yaml @@ -41,7 +41,7 @@ jobs: - name: Install Dart Sass run: sudo snap install dart-sass - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: submodules: recursive fetch-depth: 0 diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml index 614624242a..fb4196be9c 100644 --- a/.github/workflows/integration-tests.yml +++ b/.github/workflows/integration-tests.yml @@ -29,7 +29,7 @@ jobs: continue-on-error: ${{ inputs.experimental }} timeout-minutes: 40 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: ref: ${{ inputs.checkout-ref }} - name: Set up Java and Maven diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 27742bf7c2..b4f045a2ef 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -17,7 +17,7 @@ jobs: check_format_and_unit_tests: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Set up Java and Maven uses: actions/setup-java@v4 with: diff --git a/.github/workflows/release-project-in-dir.yml b/.github/workflows/release-project-in-dir.yml index 02280d5a1f..7b0d732a56 100644 --- a/.github/workflows/release-project-in-dir.yml +++ b/.github/workflows/release-project-in-dir.yml @@ -19,7 +19,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout "${{inputs.version_branch}}" branch - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: ref: "${{inputs.version_branch}}" @@ -56,7 +56,7 @@ jobs: if: "!contains(github.event.release.tag_name, 'RC')" # not sure we should keep this the RC part steps: - name: Checkout "${{inputs.version_branch}}" branch - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: ref: "${{inputs.version_branch}}" diff --git a/.github/workflows/snapshot-releases.yml b/.github/workflows/snapshot-releases.yml index f9219d1278..be2a219d37 100644 --- a/.github/workflows/snapshot-releases.yml +++ b/.github/workflows/snapshot-releases.yml @@ -16,7 +16,7 @@ jobs: test: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Set up Java and Maven uses: actions/setup-java@v4 with: @@ -29,7 +29,7 @@ jobs: runs-on: ubuntu-latest needs: test steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Set up Java and Maven uses: actions/setup-java@v4 with: diff --git a/.github/workflows/sonar.yml b/.github/workflows/sonar.yml index b7a96edef6..b95d5175c2 100644 --- a/.github/workflows/sonar.yml +++ b/.github/workflows/sonar.yml @@ -23,7 +23,7 @@ jobs: runs-on: ubuntu-latest if: ${{ ( github.event_name == 'push' ) || ( github.event_name == 'pull_request' && github.event.pull_request.head.repo.owner.login == 'java-operator-sdk' ) }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Set up Java and Maven uses: actions/setup-java@v4 with: From 60216a465ef923fb2cb6c2c1b14649bdd1357f88 Mon Sep 17 00:00:00 2001 From: Chris Laprun Date: Wed, 13 Aug 2025 17:53:04 +0200 Subject: [PATCH 42/42] fix: do not output warning when resolving a configuration (#2892) * fix: do not output warning when resolving a configuration * fix: remove test code that shouldn't have been included * fix: remove duplicated line --------- Signed-off-by: Chris Laprun --- .../api/config/BaseConfigurationService.java | 23 +++++++++++++++---- .../api/config/ConfigurationService.java | 1 - 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/BaseConfigurationService.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/BaseConfigurationService.java index 438f7d91a9..891f199dbe 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/BaseConfigurationService.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/BaseConfigurationService.java @@ -30,6 +30,12 @@ import static io.javaoperatorsdk.operator.api.config.ControllerConfiguration.CONTROLLER_NAME_AS_FIELD_MANAGER; +/** + * A default {@link ConfigurationService} implementation, resolving {@link Reconciler}s + * configuration when it has already been resolved before. If this behavior is not adequate, please + * use {@link AbstractConfigurationService} instead as a base for your {@code ConfigurationService} + * implementation. + */ public class BaseConfigurationService extends AbstractConfigurationService { private static final String LOGGER_NAME = "Default ConfigurationService implementation"; @@ -149,10 +155,12 @@ private static void configureFromAnnotatedReconciler( @Override protected void logMissingReconcilerWarning(String reconcilerKey, String reconcilersNameMessage) { - logger.warn( - "Configuration for reconciler '{}' was not found. {}", - reconcilerKey, - reconcilersNameMessage); + if (!createIfNeeded()) { + logger.warn( + "Configuration for reconciler '{}' was not found. {}", + reconcilerKey, + reconcilersNameMessage); + } } @SuppressWarnings("unused") @@ -318,6 +326,13 @@ private

ResolvedControllerConfiguration

controllerCon informerConfig); } + /** + * @deprecated This method was meant to allow subclasses to prevent automatic creation of the + * configuration when not found. This functionality is now removed, if you want to be able to + * prevent automated, on-demand creation of a reconciler's configuration, please use the + * {@link AbstractConfigurationService} implementation instead as base for your extension. + */ + @Deprecated(forRemoval = true) protected boolean createIfNeeded() { return true; } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationService.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationService.java index 864b65c3f7..41134e64ac 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationService.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationService.java @@ -485,7 +485,6 @@ default Set> withPreviousAnnotationForDependentReso * * @return if resource version should be parsed (as integer) * @since 4.5.0 - * @return if resource version should be parsed (as integer) */ default boolean parseResourceVersionsForEventFilteringAndCaching() { return false;