Andrii Korotkov
8849c3f30c
fix: Server side diff now works correctly with fields removal ( #640 )
...
* fix: Server side diff now works correctly with some fields removal
Helps with https://github.com/argoproj/argo-cd/issues/20792
Removed and modified sets may only contain the fields that changed, not including key fields like "name". This can cause merge to fail, since it expects those fields to be present if they are present in the predicted live.
Fortunately, we can inspect the set and derive the key fields necessary. Then they can be added to the set and used during a merge.
Also, have a new test which fails before the fix, but passes now.
Failure of the new test before the fix
```
Error: Received unexpected error:
error removing non config mutations for resource Deployment/nginx-deployment: error reverting webhook removed fields in predicted live resource: .spec.template.spec.containers: element 0: associative list with keys has an element that omits key field "name" (and doesn't have default value)
Test: TestServerSideDiff/will_test_removing_some_field_with_undoing_changes_done_by_webhook
```
Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>
* Use new version of structured merge diff with a new option
Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>
* Add DCO
Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>
* Try to fix sonar exclusions config
Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>
---------
Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>
2024-12-11 15:28:47 -05:00
Leonardo Luz Almeida
aba38192fb
feat: Implement Server-Side Diffs ( #522 )
...
* feat: Implement Server-Side Diffs
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* trigger build
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* chore: remove unused function
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* make HasAnnotationOption more generic
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* add server-side-diff printer option
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* remove managedFields during server-side-diff
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* add ignore mutation webhook logic
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* fix configSet
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* Fix comparison
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* merge typedconfig in typedpredictedlive
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* handle webhook diff conflicts
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* Fix webhook normalization logic
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* address review comments 1/2
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* address review comments 2/2
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* fix lint
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* remove kubectl getter from cluster-cache
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* fix query param verifier instantiation
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
* Add server-side-diff unit tests
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
---------
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-12-18 14:45:13 -05:00
Leonardo Luz Almeida
98ccd3d43f
fix: calculate SSA diffs with smd.merge.Updater ( #467 )
...
* fix: refactor ssa diff logic
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* fix: calculate ssa diff with smd.merge.Updater
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* chore: Add golangci config file
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* fix: remove wrong param passed to golanci-ghaction
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* doc: Add doc to the wrapper file
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* doc: Add instructions about how to extract the openapiv2 document from
k8s
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* better wording
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* better code comments
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
2022-10-04 09:23:20 -04:00
Leonardo Luz Almeida
3951079de1
fix: remove last-applied-configuration before diff in ssa ( #460 )
...
* fix: remove last-apply-configurations before diff in ssa
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* fix: add tests to validate expected behaviour
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
2022-09-16 10:22:00 -04:00
Leonardo Luz Almeida
6cde7989d5
fix: structured-merge diff apply default values in live resource ( #435 )
...
* fix: structured-merge diff apply default values in live resource
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* address review comments
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
2022-08-03 10:57:58 -04:00
Leonardo Luz Almeida
1c4ef33687
feat: Add server-side apply manager config ( #418 )
...
* feat: Add server-side apply manager config
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* Force conflicts when SSA
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* Implement strategic-merge patch in diff
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* Implement structured merge diff
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* Implement structured merge in diff
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* Fix parseable type conversion
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* Handle structured merge diff for create/delete operations
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* User NormalizeUnionsApply instead of Merge for structured-merge diff
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* NormalizeUnions
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* merge first than normalize union
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* calculate diff with fieldsets
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* extract managed fields
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* remove managed fields then merge
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* Just remove fields if manager is found
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* remove config fieldset instead of using managed fields
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* Structure merge diff with defaults
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* tests
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* Normalize union at the end
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* test
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* test
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* Remove fields after merging
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* test
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* test
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* apply defaults when building diff result
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* fix default func call
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* Fix diff default
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* fix merged object
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* keep diff order
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* apply default with patch
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* handle ssa diffs with resource annotations
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* use managed fields to calculate diff
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* Implement unit tests
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* fix bad merge
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* add test to validate service with multiple ports
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* resolveFromStaticParser optimization
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
* try without reordering while patching default values
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
2022-08-02 14:48:09 -04:00
Rо́man
b0c5e00ccf
fix: add default protocol to subset of ports if it is empty ( #347 )
...
Signed-off-by: Roman Rudenko <3kmnazapad@gmail.com>
2022-01-26 10:45:17 -08:00
William Tam
a1dc4c598b
fix: sort endpoint IP addresses before diffing ( #160 )
2020-10-13 16:53:40 -07:00
Alexander Matyushentsev
ee1db0902c
fix: add missing scheme install imports ( #89 )
2020-07-14 09:32:49 -07:00
Alexander Matyushentsev
6fe0c0050b
fix: diff should perform server side like apply during resource diffing ( #82 )
2020-07-09 13:44:23 -07:00
Alexander Matyushentsev
c23d4d77d8
fix: don't remove defaulted fields and rely only on three way diff merge during diffing ( #68 )
...
* fix: don't remove defaulted fields and rely only on three way diff merge during diffing
2020-06-30 14:33:07 -07:00
Alexander Matyushentsev
99bd42d9a3
fix: update packages structure ( #42 )
2020-05-28 17:18:31 -07:00