-
Task
-
Resolution: Done
-
Undefined
-
None
-
None
-
None
Resource operators (see package io.strimzi.operator.common.operator.resource in module operator-common) are classes which make it easier to work with Kubernetes resources. They contain several kinds of logic:
- reconcile mechanism which decides whether a resource should be created, deleted or patched
- Diffing mechanism which decides whether it is needed to patch the resource (whether there is any difference)
- Async mechanisms which can make some synchronous blocking calls async
- Additional checks such as making sure that deleted resource is already deleted
These classes currently heavily depend on Vert.x. They return Vert.x futures, the use Vert.x futures and blocking execution etc. That makes them impossible to use when not using Vert.x such as from the new User operator or in the PodSet controller.
The logic in these classes is useful even when not using Vert.x. So we should make them useable also without it. We should investigate:
1. If they can be rewritten to use pure Java (e.g. completion stages or completable futures) while still being used form the Vert.x part of the code
2. Whether we need to create a parallel classes for use without Vert.x.
This should be also implemented.
Created by Strimzi#7594
Implementation note:
The second option above was selected for PR #8673. The change included several resource operators that may be usable by the User and Topic operators to migrate from Vert.x.