-
Notifications
You must be signed in to change notification settings - Fork 413
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
[release-4.1] Bug 1706082: Add Spec.Configuration to MachineConfigPool, render controller writes it #856
[release-4.1] Bug 1706082: Add Spec.Configuration to MachineConfigPool, render controller writes it #856
Conversation
@cgwalters: This pull request references an invalid Bugzilla bug:
In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
This patch makes sure the Generation field for an MCP is correctly increased (it's not right now in 4.1 because we never update the Spec field of the MCP). The race we've been seeing is:
|
Going to wait for a CI run before I force push again to retrigger Prow's check of the Bugzilla target (which is now |
/bugzilla refresh |
@cgwalters: This pull request references a valid Bugzilla bug. In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
Looks like there is a compilation issue in e2e |
633e7a4
to
cb46c52
Compare
Prep for adding more tests. (cherry picked from commit 4f9bd50)
Rather than poll all of the daemons, add a helper that waits for a pool to complete a config. One of our tests walks over the MCDs, change it to just assert on all of the nodes. The SSH test can also just wait for a pool and then `rsh` to each node. (cherry picked from commit 9970f24)
See openshift#765 (comment) MachineConfigPool needs a `Spec.Configuration` and `Status.Configuration` [just like other objects][1] so that we can properly detect state. Currently there's a race because the render controller may set `Status.Configuration` while the pool's `Status` still has `Updated`, so one can't reliably check whether the pool is at a given config. With this, ownership is clear: the render controller sets the spec, and the node controller updates the status. [1] https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status)
cb46c52
to
7cdc5b7
Compare
🎉 |
/approve |
yay!! /lgtm |
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: cgwalters, kikisdeliveryservice, runcom 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 |
Anyone know who takes care of "Pending — Not mergeable. Needs cherry-pick-approved label. " ? |
yeah i talked to @runcom and i'll get that on next week. |
Parent BZ is still not verified by QA. Reaching out to QA might be helpful when I re-review for 4.1.4 inclusion tomorrow. I see you have some CI testing around this. But I'm not entirely sure of the source of these changes. Is this a combination of #765 and #773 ? What's the impact of not merging this? |
we won't tell exactly that an upgrade completed because we'll report "OK" doing the comparison with the old version (this is what this fixes) |
Yep, exactly.
The bug symptoms would persist; the MCO could claim it was done upgrading when it hadn't (transiently). And/or we'd have to come up with a different fix which...seems at best equally risky. We know this code works in 4.2. |
we've been in master since May 16. Even though QA has not VERIFIED I'm going to let this through. We likely have had a reasonable about of CI soak time in master. |
Cherry-picked from 37e8466
See #765 (comment)
MachineConfigPool needs a
Spec.Configuration
andStatus.Configuration
[just like other objects][1] so that we can properly detect state.
Currently there's a race because the render controller may set
Status.Configuration
while the pool's
Status
still hasUpdated
, so one can't reliably check whether thepool is at a given config.
With this, ownership is clear: the render controller sets the spec, and the node controller
updates the status.
[1] https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status)