-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Add last-applied-configuration annotation #7089
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
base: master
Are you sure you want to change the base?
Conversation
Signed-off-by: zhoujinyu <2319109590@qq.com>
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
Summary of ChangesHello @FAUST-BENCHOU, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request addresses a long-standing Highlights
🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request adds the last-applied-configuration annotation to the ResourceInterpreterCustomization object during an edit operation. This is a standard practice in Kubernetes to track changes. The implementation correctly handles potential recursion by removing the annotation from a copy of the object before serializing it. I've suggested a small refinement to make the code more concise and robust by handling the case where the annotation map becomes empty.
| tempCustomization := editedCustomization.DeepCopy() | ||
| tempAnnotations := tempCustomization.GetAnnotations() | ||
| if tempAnnotations != nil { | ||
| delete(tempAnnotations, corev1.LastAppliedConfigAnnotation) | ||
| tempCustomization.SetAnnotations(tempAnnotations) | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The logic to prepare the object for the last-applied-configuration annotation can be made more robust and concise. The SetAnnotations call on line 180 is redundant as GetAnnotations returns a reference to the map which is modified in-place. Additionally, if the annotations map becomes empty after removing the last-applied-configuration key, it should be set to nil to avoid serializing an empty map in the annotation's value.
| tempCustomization := editedCustomization.DeepCopy() | |
| tempAnnotations := tempCustomization.GetAnnotations() | |
| if tempAnnotations != nil { | |
| delete(tempAnnotations, corev1.LastAppliedConfigAnnotation) | |
| tempCustomization.SetAnnotations(tempAnnotations) | |
| } | |
| tempCustomization := editedCustomization.DeepCopy() | |
| if tempAnnotations := tempCustomization.GetAnnotations(); tempAnnotations != nil { | |
| delete(tempAnnotations, corev1.LastAppliedConfigAnnotation) | |
| if len(tempAnnotations) == 0 { | |
| tempCustomization.SetAnnotations(nil) | |
| } | |
| } |
|
@FAUST-BENCHOU Thank you for your proactive contributions! I've noticed you're working on TODO items, which is great! However, please note that as the project evolves, many of these TODO notes become stale—either because the intended work has already been completed, is no longer relevant, or has been superseded by other changes, as documented in issue #6996. To ensure your efforts are aligned with the community's current direction and can be accepted, I recommend first discussing in issue #6996 whether the specific TODO item is still applicable and what update strategy should be followed, before proceeding with concrete changes. |
|
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #7089 +/- ##
==========================================
- Coverage 46.55% 46.54% -0.01%
==========================================
Files 700 700
Lines 48091 48104 +13
==========================================
+ Hits 22389 22392 +3
- Misses 24020 24030 +10
Partials 1682 1682
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Sure!i noticed that there are about 80 TODO in project which is a huge nubmber.can i record these TODO in #6996 and analysis their necessity? |
Absolutely, that's exactly what I'd like to do as well. However, I suggest proceeding in small batches—analyzing just one or two at a time. |
Got that,I won't bring over some of the todo lists from upstream Kubernetes; I'll start with the essentials.Thx for your advice🙃 |
|
You mentioned bringing over TODO lists from upstream Kubernetes—was the TODO item addressed in this PR also imported from upstream Kubernetes? I've mentioned you in #6996 — we can analyze the approach to address this TODO item. |
No this one in pkg/karmadactl/interpret/edit.go was not. |
What type of PR is this?
What this PR does / why we need it:
Need of "TODO: add last-applied-configuration annotation"