Skip to content

Commit d24715d

Browse files
authored
docs: migration guide to v3 (operator-framework#1088)
1 parent 53e49ca commit d24715d

File tree

3 files changed

+42
-15
lines changed

3 files changed

+42
-15
lines changed

docs/documentation/dependent-resources.md

+8-13
Original file line numberDiff line numberDiff line change
@@ -229,22 +229,17 @@ public class WebPageStandaloneDependentsReconciler
229229
return UpdateControl.updateStatus(webPage);
230230
}
231231

232-
private void createDependentResources(KubernetesClient client) {
232+
private void createDependentResources(KubernetesClient client) {
233233
this.configMapDR = new ConfigMapDependentResource();
234-
this.configMapDR.setKubernetesClient(client);
235-
configMapDR.configureWith(new KubernetesDependentResourceConfig()
236-
.setLabelSelector(DEPENDENT_RESOURCE_LABEL_SELECTOR));
237-
238234
this.deploymentDR = new DeploymentDependentResource();
239-
deploymentDR.setKubernetesClient(client);
240-
deploymentDR.configureWith(new KubernetesDependentResourceConfig()
241-
.setLabelSelector(DEPENDENT_RESOURCE_LABEL_SELECTOR));
242-
243235
this.serviceDR = new ServiceDependentResource();
244-
serviceDR.setKubernetesClient(client);
245-
serviceDR.configureWith(new KubernetesDependentResourceConfig()
246-
.setLabelSelector(DEPENDENT_RESOURCE_LABEL_SELECTOR));
247-
}
236+
237+
Arrays.asList(configMapDR, deploymentDR, serviceDR).forEach(dr -> {
238+
dr.setKubernetesClient(client);
239+
dr.configureWith(new KubernetesDependentResourceConfig()
240+
.setLabelSelector(DEPENDENT_RESOURCE_LABEL_SELECTOR));
241+
});
242+
}
248243

249244
// omitted code
250245
}

docs/documentation/v3-migration.md

+32
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,35 @@ permalink: /docs/v3-migration
66
---
77

88
# Migrating from v2 to v3
9+
10+
Version 3 introduces some breaking changes to APIs, however the migration to these changes should be trivial.
11+
12+
## Reconciler
13+
14+
- [`Reconciler`](https://github.com/java-operator-sdk/java-operator-sdk/blob/67d8e25c26eb92392c6d2a9eb39ea6dddbbfafcc/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/Reconciler.java#L16-L16)
15+
can throw checked exception (not just runtime exception), and that also can be handled by `ErrorStatusHandler`.
16+
- `cleanup` method is extracted from the `Reconciler` interface to a
17+
separate [`Cleaner`](https://github.com/java-operator-sdk/java-operator-sdk/blob/main/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/Cleaner.java)
18+
interface. Finalizers only makes sense that the `Cleanup` is implemented, from
19+
now finalizer is only added if the `Reconciler` implements this interface (or has managed dependent resources
20+
implementing `Deleter` interface, see dependent resource docs).
21+
- [`Context`](https://github.com/java-operator-sdk/java-operator-sdk/blob/main/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/Context.java#L9-L9)
22+
object of `Reconciler` now takes the Primary resource as parametrized type: `Context<MyCustomResource>`.
23+
- [`ErrorStatusHandler`](https://github.com/java-operator-sdk/java-operator-sdk/blob/67d8e25c26eb92392c6d2a9eb39ea6dddbbfafcc/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/ErrorStatusHandler.java)
24+
result changed, it functionally has been extended to now prevent Exception to be retried and handles checked
25+
exceptions as mentioned above.
26+
27+
28+
## Event Sources
29+
30+
- Event Sources are now registered with a name. But [utility method](https://github.com/java-operator-sdk/java-operator-sdk/blob/92bfafd8831e5fb9928663133f037f1bf4783e3e/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/EventSourceInitializer.java#L33-L33)
31+
is available to make it easy to [migrate](https://github.com/java-operator-sdk/java-operator-sdk/blob/92bfafd8831e5fb9928663133f037f1bf4783e3e/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageStandaloneDependentsReconciler.java#L51-L52)
32+
to a default name.
33+
- [InformerEventSource](https://github.com/java-operator-sdk/java-operator-sdk/blob/92bfafd8831e5fb9928663133f037f1bf4783e3e/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerEventSource.java#L75-L75)
34+
constructor changed to reflect additional functionality in a non backwards compatible way. All the configuration
35+
options from the constructor where moved to [`InformerConfiguration`](https://github.com/java-operator-sdk/java-operator-sdk/blob/f6c6d568ea0a098e11beeeded20fe70f9c5bf692/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/informer/InformerConfiguration.java)
36+
. See sample usage in [`WebPageReconciler`](https://github.com/java-operator-sdk/java-operator-sdk/blob/f6c6d568ea0a098e11beeeded20fe70f9c5bf692/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageReconciler.java#L56-L59)
37+
.
38+
- `PrimaryResourcesRetriever` was renamed to `SecondaryToPrimaryMapper`
39+
- `AssociatedSecondaryResourceIdentifier` was renamed to `PrimaryToSecondaryMapper`
40+
- `getAssociatedResource` is now renamed to get `getSecondaryResource` in multiple places

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/ControllerConfiguration.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616

1717
/**
1818
* Optional finalizer name, if it is not provided, one will be automatically generated. Note that
19-
* finalizers are only added when Reconciler implement {@link Cleaner} interface, or at least one
20-
* managed dependent resource implement
19+
* finalizers are only added when Reconciler implement {@link Cleaner} interface and/or at least
20+
* one managed dependent resource implements the
2121
* {@link io.javaoperatorsdk.operator.api.reconciler.dependent.Deleter} interface.
2222
*
2323
* @return the finalizer name

0 commit comments

Comments
 (0)