Refactor the main reconciliation logic for the plain provisioner's BI controller
Goal: refactor the main Reconcile method for the BI controller into individual methods to help reduce the amount of complexity (and overall LoC) for the driver function.
Right now the plain provisioner's main Reconcile method is reaching a complexity threshold which makes it difficult to read, reason about, and extend when interacting with that part of the codebase.
The controller is responsible for the following control flow:
- Get the BI resource from the informer cache
- Check whether the corresponding Bundle resource is reporting an Unpacked phase
- Get the unpacked Bundle contents from the storage layer's cache
- Build up a helm chart based on the desired set of client.Object resources
- Ensure the release state (e.g. install or upgrade) logic is performed
- Ensure the desired objects have a dynamic watch present in the internal mapping of GVK watches
As the BI API surface gets extended to support things like label selection (#94) or embedded Bundles (#73), we'll need to introduce more complexity into this controller.
Moving to v0.8 milestone. Looks like this issue has been carried from release to release for a while -- let's try to get it merged
This issue has become stale because it has been open 60 days with no activity. The maintainers of this repo will remove this label during issue triage or it will be removed automatically after an update. Adding the lifecycle/frozen label will cause this issue to ignore lifecycle events.