We recently finished working on the CPMS main controller. We now need a way to generate the CPMS object for a cluster based on its current state.
We want a new controller that based on the cluster state generates a CPMS object and creates it against the API of the cluster. The CPMS object that will be created will have the `.spec.state` field set to `Inactive`, meaning that the main CPMS controller won't do any modification to the cluster based on that configuration until the user has reviewed/modified it and activated it by setting it to `Active`.
To catch changes in the cluster state the CPMS generator controller will keep watching the state and perform CPMS object regenerations checking if the object needs updating. If that's the case the generator will delete and recreate the CPMS object. This will constantly happen while the CPMS state is set to `Inactive`. As soon as the user activates it (sets `.spec.state` to `Active`). The generator controller will stop processing and its logic will become a no-op.
For now the generator controller will only be able to generate config for AWS clusters.
We should make sure to include envtest based testing to give us confidence when making changes to the code in the future.
- Add the CPMS generator controller logic
- Write up a suite of tests to validate the behaviour of the controller
- Cluster Infra
- Service Delivery
- Test coverage for the tool is >80%