From 125206ef8290e82e4be833c5ca4e9ad4151ab643 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Mon, 26 May 2025 07:31:04 +0000 Subject: [PATCH 01/15] 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 7487daa6fd..eaa32eb009 100644 --- a/bootstrapper-maven-plugin/pom.xml +++ b/bootstrapper-maven-plugin/pom.xml @@ -5,7 +5,7 @@ io.javaoperatorsdk java-operator-sdk - 5.1.1-SNAPSHOT + 5.1.2-SNAPSHOT bootstrapper diff --git a/caffeine-bounded-cache-support/pom.xml b/caffeine-bounded-cache-support/pom.xml index a421b3cd9f..c45e56386d 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.1-SNAPSHOT + 5.1.2-SNAPSHOT caffeine-bounded-cache-support diff --git a/micrometer-support/pom.xml b/micrometer-support/pom.xml index 9d9a47464f..73ed6ff77e 100644 --- a/micrometer-support/pom.xml +++ b/micrometer-support/pom.xml @@ -4,7 +4,7 @@ io.javaoperatorsdk java-operator-sdk - 5.1.1-SNAPSHOT + 5.1.2-SNAPSHOT micrometer-support diff --git a/operator-framework-bom/pom.xml b/operator-framework-bom/pom.xml index 123ae032c7..ccbb4ca4e2 100644 --- a/operator-framework-bom/pom.xml +++ b/operator-framework-bom/pom.xml @@ -4,7 +4,7 @@ io.javaoperatorsdk operator-framework-bom - 5.1.1-SNAPSHOT + 5.1.2-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 b4166a3761..69c02d6f01 100644 --- a/operator-framework-core/pom.xml +++ b/operator-framework-core/pom.xml @@ -4,7 +4,7 @@ io.javaoperatorsdk java-operator-sdk - 5.1.1-SNAPSHOT + 5.1.2-SNAPSHOT ../pom.xml diff --git a/operator-framework-junit5/pom.xml b/operator-framework-junit5/pom.xml index 111fdf3b1b..07bfa9cd1c 100644 --- a/operator-framework-junit5/pom.xml +++ b/operator-framework-junit5/pom.xml @@ -4,7 +4,7 @@ io.javaoperatorsdk java-operator-sdk - 5.1.1-SNAPSHOT + 5.1.2-SNAPSHOT operator-framework-junit-5 diff --git a/operator-framework/pom.xml b/operator-framework/pom.xml index 0d60152818..18cbda43cf 100644 --- a/operator-framework/pom.xml +++ b/operator-framework/pom.xml @@ -4,7 +4,7 @@ io.javaoperatorsdk java-operator-sdk - 5.1.1-SNAPSHOT + 5.1.2-SNAPSHOT operator-framework diff --git a/pom.xml b/pom.xml index 6bc27adeed..586930f0b3 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.javaoperatorsdk java-operator-sdk - 5.1.1-SNAPSHOT + 5.1.2-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 75ef1ee5eb..9a87338da5 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.1-SNAPSHOT + 5.1.2-SNAPSHOT sample-controller-namespace-deletion diff --git a/sample-operators/leader-election/pom.xml b/sample-operators/leader-election/pom.xml index 5611726540..ca74158ae6 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.1-SNAPSHOT + 5.1.2-SNAPSHOT sample-leader-election diff --git a/sample-operators/mysql-schema/pom.xml b/sample-operators/mysql-schema/pom.xml index 263a832d10..94b2f93769 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.1-SNAPSHOT + 5.1.2-SNAPSHOT sample-mysql-schema-operator diff --git a/sample-operators/pom.xml b/sample-operators/pom.xml index d89c0677d6..2f1c9c1645 100644 --- a/sample-operators/pom.xml +++ b/sample-operators/pom.xml @@ -5,7 +5,7 @@ io.javaoperatorsdk java-operator-sdk - 5.1.1-SNAPSHOT + 5.1.2-SNAPSHOT sample-operators diff --git a/sample-operators/tomcat-operator/pom.xml b/sample-operators/tomcat-operator/pom.xml index 0bc6f86eda..38d6b4ec0c 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.1-SNAPSHOT + 5.1.2-SNAPSHOT sample-tomcat-operator diff --git a/sample-operators/webpage/pom.xml b/sample-operators/webpage/pom.xml index d2bfacc70e..7f118be1bb 100644 --- a/sample-operators/webpage/pom.xml +++ b/sample-operators/webpage/pom.xml @@ -5,7 +5,7 @@ io.javaoperatorsdk sample-operators - 5.1.1-SNAPSHOT + 5.1.2-SNAPSHOT sample-webpage-operator From 9891064e11b30dde5b861681c7dcadd9f9177e9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Attila=20M=C3=A9sz=C3=A1ros?= Date: Tue, 27 May 2025 08:53:37 +0200 Subject: [PATCH 02/15] blog: primary resource caching (#2815) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Attila Mészáros Signed-off-by: Chris Laprun Co-authored-by: Martin Stefanko Co-authored-by: Chris Laprun --- .../blog/news/primary-cache-for-next-recon.md | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 docs/content/en/blog/news/primary-cache-for-next-recon.md diff --git a/docs/content/en/blog/news/primary-cache-for-next-recon.md b/docs/content/en/blog/news/primary-cache-for-next-recon.md new file mode 100644 index 0000000000..67326a6f17 --- /dev/null +++ b/docs/content/en/blog/news/primary-cache-for-next-recon.md @@ -0,0 +1,92 @@ +--- +title: How to guarantee allocated values for next reconciliation +date: 2025-05-22 +author: >- + [Attila Mészáros](https://github.com/csviri) and [Chris Laprun](https://github.com/metacosm) +--- + +We recently released v5.1 of Java Operator SDK (JOSDK). One of the highlights of this release is related to a topic of +so-called +[allocated values](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#representing-allocated-values +). + +To describe the problem, let's say that our controller needs to create a resource that has a generated identifier, i.e. +a resource which identifier cannot be directly derived from the custom resource's desired state as specified in its +`spec` field. To record the fact that the resource was successfully created, and to avoid attempting to +recreate the resource again in subsequent reconciliations, it is typical for this type of controller to store the +generated identifier in the custom resource's `status` field. + +The Java Operator SDK relies on the informers' cache to retrieve resources. These caches, however, are only guaranteed +to be eventually consistent. It could happen that, if some other event occurs, that would result in a new +reconciliation, **before** the update that's been made to our resource status has the chance to be propagated first to +the cluster and then back to the informer cache, that the resource in the informer cache does **not** contain the latest +version as modified by the reconciler. This would result in a new reconciliation where the generated identifier would be +missing from the resource status and, therefore, another attempt to create the resource by the reconciler, which is not +what we'd like. + +Java Operator SDK now provides a utility class [ +`PrimaryUpdateAndCacheUtils`](https://github.com/operator-framework/java-operator-sdk/blob/main/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/PrimaryUpdateAndCacheUtils.java) +to handle this particular use case. Using that overlay cache, your reconciler is guaranteed to see the most up-to-date +version of the resource on the next reconciliation: + +```java + +@Override +public UpdateControl reconcile( + StatusPatchCacheCustomResource resource, + Context context) { + + // omitted code + + var freshCopy = createFreshCopy(resource); // need fresh copy just because we use the SSA version of update + freshCopy + .getStatus() + .setValue(statusWithAllocatedValue()); + + // using the utility instead of update control to patch the resource status + var updated = + PrimaryUpdateAndCacheUtils.ssaPatchStatusAndCacheResource(resource, freshCopy, context); + return UpdateControl.noUpdate(); +} +``` + +How does `PrimaryUpdateAndCacheUtils` work? +There are multiple ways to solve this problem, but ultimately, we only provide the solution described below. If you +want to dig deep in alternatives, see +this [PR](https://github.com/operator-framework/java-operator-sdk/pull/2800/files). + +The trick is to intercept the resource that the reconciler updated and cache that version in an additional cache on top +of the informer's cache. Subsequently, if the reconciler needs to read the resource, the SDK will first check if it is +in the overlay cache and read it from there if present, otherwise read it from the informer's cache. If the informer +receives an event with a fresh resource, we always remove the resource from the overlay cache, since that is a more +recent resource. But this **works only** if the reconciler updates the resource using **optimistic locking**. +If the update fails on conflict, because the resource has already been updated on the cluster before we got +the chance to get our update in, we simply wait and poll the informer cache until the new resource version from the +server appears in the informer's cache, +and then try to apply our updates to the resource again using the updated version from the server, again with optimistic +locking. + +So why is optimistic locking required? We hinted at it above, but the gist of it, is that if another party updates the +resource before we get a chance to, we wouldn't be able to properly handle the resulting situation correctly in all +cases. The informer would receive that new event before our own update would get a chance to propagate. Without +optimistic locking, there wouldn't be a fail-proof way to determine which update should prevail (i.e. which occurred +first), in particular in the event of the informer losing the connection to the cluster or other edge cases (the joys of +distributed computing!). + +Optimistic locking simplifies the situation and provides us with stronger guarantees: if the update succeeds, then we +can be sure we have the proper resource version in our caches. The next event will contain our update in all cases. +Because we know that, we can also be sure that we can evict the cached resource in the overlay cache whenever we receive +a new event. The overlay cache is only used if the SDK detects that the original resource (i.e. the one before we +applied our status update in the example above) is still in the informer's cache. + +The following diagram sums up the process: + +```mermaid +flowchart TD + A["Update Resource with Lock"] --> B{"Is Successful"} + B -- Fails on conflict --> D["Poll the Informer cache until resource updated"] + D --> A + B -- Yes --> n2{"Original resource still in informer cache?"} + n2 -- Yes --> C["Cache the resource in overlay cache"] + n2 -- No --> n3["Informer cache already contains up-to-date version, do not use overlay cache"] +``` From 98c4deac9d56a4719f79aee0ce35eab6ca2dd881 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 28 May 2025 09:12:56 +0200 Subject: [PATCH 03/15] chore(deps): bump com.diffplug.spotless:spotless-maven-plugin (#2819) Bumps [com.diffplug.spotless:spotless-maven-plugin](https://github.com/diffplug/spotless) from 2.44.4 to 2.44.5. - [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.4...maven/2.44.5) --- updated-dependencies: - dependency-name: com.diffplug.spotless:spotless-maven-plugin dependency-version: 2.44.5 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 586930f0b3..d6bb27d726 100644 --- a/pom.xml +++ b/pom.xml @@ -91,7 +91,7 @@ 3.1.4 9.0.2 3.4.5 - 2.44.4 + 2.44.5 From e961dcb5b04c1e239838e2c5b9d18a48f239f672 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 28 May 2025 14:06:25 +0200 Subject: [PATCH 04/15] chore(deps): bump org.slf4j:slf4j-api from 2.0.12 to 2.0.17 (#2705) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore(deps): bump org.slf4j:slf4j-api from 2.0.12 to 2.0.17 Bumps org.slf4j:slf4j-api from 2.0.12 to 2.0.17. --- updated-dependencies: - dependency-name: org.slf4j:slf4j-api dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * Update pom.xml --------- 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 | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index d6bb27d726..55bd5d6a93 100644 --- a/pom.xml +++ b/pom.xml @@ -59,10 +59,9 @@ java-operator-sdk https://sonarcloud.io jdk - 5.12.2 7.3.1 - 2.0.12 + 2.0.17 2.24.3 5.18.0 3.17.0 From a2bf2e477b353ab626ef1b216d14420fb140f3e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Attila=20M=C3=A9sz=C3=A1ros?= Date: Fri, 30 May 2025 12:40:26 +0200 Subject: [PATCH 05/15] docs: fix dependent resource sample docs (#2822) --- .../dependent-resources.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/docs/content/en/docs/documentation/dependent-resource-and-workflows/dependent-resources.md b/docs/content/en/docs/documentation/dependent-resource-and-workflows/dependent-resources.md index 304e20bafe..43b7f37364 100644 --- a/docs/content/en/docs/documentation/dependent-resource-and-workflows/dependent-resources.md +++ b/docs/content/en/docs/documentation/dependent-resource-and-workflows/dependent-resources.md @@ -133,7 +133,7 @@ Deleted (or set to be garbage collected). The following example shows how to cre ```java -@KubernetesDependent(labelSelector = WebPageManagedDependentsReconciler.SELECTOR) +@KubernetesDependent(informer = @Informer(labelSelector = SELECTOR)) class DeploymentDependentResource extends CRUDKubernetesDependentResource { @Override @@ -174,7 +174,8 @@ JOSDK will take the appropriate steps to wire everything together and call your `DependentResource` implementations `reconcile` method before your primary resource is reconciled. This makes sense in most use cases where the logic associated with the primary resource is usually limited to status handling based on the state of the secondary resources and the -resources are not dependent on each other. +resources are not dependent on each other. As an alternative, you can also invoke reconciliation explicitly, +event for managed workflows. See [Workflows](https://javaoperatorsdk.io/docs/workflows) for more details on how the dependent resources are reconciled. @@ -184,12 +185,14 @@ instances are managed by JOSDK, an example of which can be seen below: ```java -@ControllerConfiguration( - labelSelector = SELECTOR, +@Workflow( dependents = { @Dependent(type = ConfigMapDependentResource.class), @Dependent(type = DeploymentDependentResource.class), - @Dependent(type = ServiceDependentResource.class) + @Dependent(type = ServiceDependentResource.class), + @Dependent( + type = IngressDependentResource.class, + reconcilePrecondition = ExposedIngressCondition.class) }) public class WebPageManagedDependentsReconciler implements Reconciler, ErrorStatusHandler { @@ -204,7 +207,6 @@ public class WebPageManagedDependentsReconciler webPage.setStatus(createStatus(name)); return UpdateControl.patchStatus(webPage); } - } ``` From 6ebf5f076ab74516bf0763f0c6c67ce694176dbb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Jun 2025 08:18:12 +0200 Subject: [PATCH 06/15] chore(deps): bump org.apache.maven.plugins:maven-clean-plugin (#2823) Bumps [org.apache.maven.plugins:maven-clean-plugin](https://github.com/apache/maven-clean-plugin) from 3.4.1 to 3.5.0. - [Release notes](https://github.com/apache/maven-clean-plugin/releases) - [Commits](https://github.com/apache/maven-clean-plugin/compare/maven-clean-plugin-3.4.1...maven-clean-plugin-3.5.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-clean-plugin dependency-version: 3.5.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 55bd5d6a93..17a4cdaf1b 100644 --- a/pom.xml +++ b/pom.xml @@ -83,7 +83,7 @@ 3.3.1 3.3.1 3.4.2 - 3.4.1 + 3.5.0 3.2.7 1.7.0 3.0.0 From 127e87de9a078d9436e35e33470ea32fc907e508 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Jun 2025 08:53:40 +0200 Subject: [PATCH 07/15] chore(deps): bump org.junit:junit-bom from 5.12.2 to 5.13.0 (#2824) Bumps [org.junit:junit-bom](https://github.com/junit-team/junit5) from 5.12.2 to 5.13.0. - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/compare/r5.12.2...r5.13.0) --- updated-dependencies: - dependency-name: org.junit:junit-bom dependency-version: 5.13.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 17a4cdaf1b..d4d4397747 100644 --- a/pom.xml +++ b/pom.xml @@ -59,7 +59,7 @@ java-operator-sdk https://sonarcloud.io jdk - 5.12.2 + 5.13.0 7.3.1 2.0.17 2.24.3 From 470ac9e19475cf3f3d89be456ed27b3b47082501 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 10 Jun 2025 08:05:29 +0200 Subject: [PATCH 08/15] chore(deps): bump io.micrometer:micrometer-core from 1.15.0 to 1.15.1 (#2828) --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d4d4397747..f4dd22edbc 100644 --- a/pom.xml +++ b/pom.xml @@ -70,7 +70,7 @@ 3.27.3 4.3.0 2.7.3 - 1.15.0 + 1.15.1 3.2.0 0.9.14 2.19.0 From 3143822c754c8f88c3442ed41fab67cc7e29f2a2 Mon Sep 17 00:00:00 2001 From: Chris Laprun Date: Mon, 16 Jun 2025 16:18:57 +0200 Subject: [PATCH 09/15] 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 10/15] 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 11/15] 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 12/15] 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 13/15] 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 14/15] 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 15/15] 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