Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enhance EKS AccessEntries policy attachements and delta logic #102

Merged
merged 1 commit into from
Feb 10, 2024

Conversation

a-hilaly
Copy link
Member

Prior to this patch, we observed some issues with the controller
behaviour regarding access policy association and delta computations,
specifically:

  • False positive deltas were detected at every reconciliation (or
    controller restart)
  • When a delta was detected, the controller disociate the latest
    policies, and patch the desired ones. (Even when it's unnecessary).

The root cause was identifier as the usage of reflect.DeepEqual for
slices. According to the reflect library documentation
DeepEqual returns false if the comapred elements are a nil slice and
a "non-nil empty slice" (e.g nil and []string{}).
This combined with the possibility of a user providing a nil
namespaces slice, while the controller sets an empty one (based on the
API response), cause behaviour inconsistencies.

Users shouldn't care/worry about the "nil-ity" of their arrays/slices;
it is up to the controller to accurately compute the deltas.

This patch replaces the usage of reflect.DeepEqual with a meticulous
custom delta function.

Signed-off-by: Amine Hilaly [email protected]

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Copy link

ack-prow bot commented Feb 10, 2024

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

@ack-prow ack-prow bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Feb 10, 2024
@a-hilaly a-hilaly marked this pull request as ready for review February 10, 2024 00:20
@ack-prow ack-prow bot requested review from jljaco and mikestef9 February 10, 2024 00:20
@ack-prow ack-prow bot added approved and removed do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. labels Feb 10, 2024
@ack-prow ack-prow bot requested a review from jlbutler February 10, 2024 00:20
@ack-bot
Copy link
Collaborator

ack-bot commented Feb 10, 2024

/lgtm

@ack-prow ack-prow bot added the lgtm Indicates that a PR is ready to be merged. label Feb 10, 2024
@ack-bot
Copy link
Collaborator

ack-bot commented Feb 10, 2024

/retest

Prior to this patch, we observed some issues with the controller
behaviour regarding access policy association and delta computations,
specifically:
- False positive deltas were detected at every reconciliation (or
  controller restart)
- When a delta was detected, the controller disociate the latest
  policies, and patch the desired ones. (Even when it's unnecessary).

The root cause was identifier as the usage of `reflect.DeepEqual` for
slices. According to the `reflect` library documentation https://pkg.go.dev/reflect#DeepEqual
`DeepEqual`  returns false if the comapred elements are a nil slice and
a "non-nil empty slice" (e.g `nil` and `[]string{}`).
This combined with the possibility of a user providing a nil
`namespaces` slice, while the controller sets an empty one (based on the
API response), cause behaviour inconsistencies.

Users shouldn't care/worry about the "nil-ity" of their arrays/slices;
it is up to the controller to accurately compute the deltas.

This patch replaces the usage of `reflect.DeepEqual` with a meticulous
custom delta function.

Signed-off-by: Amine Hilaly <[email protected]>
@ack-prow ack-prow bot removed the lgtm Indicates that a PR is ready to be merged. label Feb 10, 2024
@ack-bot
Copy link
Collaborator

ack-bot commented Feb 10, 2024

/lgtm

@ack-prow ack-prow bot added the lgtm Indicates that a PR is ready to be merged. label Feb 10, 2024
Copy link

ack-prow bot commented Feb 10, 2024

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: a-hilaly, ack-bot

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@ack-prow ack-prow bot merged commit 307d36b into aws-controllers-k8s:main Feb 10, 2024
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved lgtm Indicates that a PR is ready to be merged.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants