Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Rewrote ISM Policy reconciler (#846)
### Description The ISM Policy reconciler was constantly trying to update the ISM Policy and it was not handling reconciliation requeue in some cases. There were possibly other issues as well. Below I have described what caused the different issues I encountered - The ISM Policy request was different from the response, but they were both made with the same struct. This caused the reconciler to always see the existing ISM Policy and the ISM Policy from the CR as different and try to update it. I have created a separate struct model for each to separate the logic and in the code I now compare the existing policy with the policy from the CR by comparing both the Policy IDs and the policy spec - There were some very complex cases in the code that were very difficult to understand so I have attempted to make the code more concise and easy to read and understand - I have added reconciliation requeuing to all cases so the operator doesn't just stop reconciling the ISM Policy in some cases One thing I am wondering is that I am not sure why we would want to create a CR without specifying the cluster ID and then the operator automatically links it to that cluster ID so it breaks if the OpenSearch CR is deleted. Is this intended and why? I'm talking about the section with the comment "Check cluster ref has not changed" Tested cases: - A new ISM Policy is created through a CR and the operator creates it in the OpenSearch Cluster - The CR for an ISM Policy that is created by the operator is removed and the operator removes it in the OpenSearch Cluster - An ISM Policy that already exists in the OpenSearch Cluster is created through a CR and the operator ignores it and marks it as existing - The CR for an ISM Policy that was pre-existing and therefore was not created by the operator is removed and the operator does not remove the ISM Policy from the OpenSearch Cluster - An ISM Policy that already exists in the OpenSearch Cluster is created through a CR and the operator ignores it and marks it as existing. The ISM Policy is then manually removed from the OpenSearch Cluster and the operator now applies the ISM Policy from the CR The test for ISM Policies is currently failing miserably, but I decided to create the PR to get feedback before I dive into fixing it. ### Issues Resolved #833 #732 Possibly other issues ### Check List - [x] Commits are signed per the DCO using --signoff - [x] Unittest added for the new/changed functionality and all unit tests are successful - [x] Customer-visible features documented - [x] No linter warnings (`make lint`) If CRDs are changed: - [ ] CRD YAMLs updated (`make manifests`) and also copied into the helm chart - [ ] Changes to CRDs documented Please refer to the [PR guidelines](https://github.com/opensearch-project/opensearch-k8s-operator/blob/main/docs/developing.md#submitting-a-pr) before submitting this pull request. By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. For more information on following Developer Certificate of Origin and signing off your commits, please check [here](https://github.com/opensearch-project/OpenSearch/blob/main/CONTRIBUTING.md#developer-certificate-of-origin). Signed-off-by: rkthtrifork <[email protected]>
- Loading branch information