Skip to content

Conversation

isabella-janssen
Copy link
Member

@isabella-janssen isabella-janssen commented Jun 12, 2025

This outlines the proposed changes to the MachineConfigNode (MCN) resource in 4.20 to finalize "Image Mode Status Reporting" in the MCO, which is defined in epic MCO-1506. The primary changes in this enhancement include:

  • Definition of API additions needed to support the reporting of on-cluster image mode node updates through the MCN resource.
  • Minor grammar/syntax fixes.
  • Implementation details as ironed out in the corresponding API PR review.

@openshift-ci-robot
Copy link

openshift-ci-robot commented Jun 12, 2025

@isabella-janssen: This pull request references MCO-1748 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "4.20.0" version, but no target version was set.

In response to this:

This outlines the proposed changes to the MachineConfigNode (MCN) resource in 4.20 to finalize "Status Reporting" in the MCO. The primary change for 4.20 is reporting the status through OnClusterLayering-enabled node updates.

Note that since the 4.19 updates to the MCN enhancement have not yet merged (PR #1765), only the most recent commit is relevant to 4.20.

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 openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Jun 12, 2025
@openshift-ci openshift-ci bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Jun 12, 2025
Copy link
Contributor

openshift-ci bot commented Jun 12, 2025

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

@openshift-ci-robot
Copy link

openshift-ci-robot commented Jun 12, 2025

@isabella-janssen: This pull request references MCO-1748 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "4.20.0" version, but no target version was set.

In response to this:

This outlines the proposed changes to the MachineConfigNode (MCN) resource in 4.20 to finalize "Status Reporting" in the MCO. The primary change for 4.20 is reporting the status through OnClusterLayering-enabled node updates.

Note that since the 4.19 updates to the MCN enhancement have not yet merged (PR #1765), only the most recent commit, 43a6bca, is relevant to 4.20.

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 openshift-eng/jira-lifecycle-plugin repository.


The desired config found in the spec will get updated immediately when a new config is found on the node. However, the desired config found in the status will only get updated once the new config has been validated in the machine config daemon. In the current implementation, the desired config is populated in the status by checking whether the update successfully gets past the "UpdatePrepared" phase. If the "UpdatePrepared" phase succeeds, then the status can safely add the desired config.
<!-- TODO: check on the "the image has been successfully created" condition for the deire image being in the status -->
The desired config or image found in `Spec` will get updated immediately when a new config or image is found on the node. However, the desired config and image found in `Status` will only get updated once the new config has been validated in the MCD or the image has been successfully created. In the current implementation, the desired config is populated in the status by checking whether the update successfully gets past the "UpdatePrepared" phase. If the "UpdatePrepared" phase succeeds, then the status can safely add the desired config.
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Question to Reviewer

A standard update flow should progress as follows:

  1. Create rendered MC
  2. Update desired config value in MCN's Spec
  3. Validate new rendered MC
  4. Update desired config value in MCN's Status

My question is whether OCL has a similar "validation" step after setting the machineconfiguration.openshift.io/desiredImage annotation on the node and before the update to that value can occur? If not, does it make sense to have a desired image set in Spec?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To clarify the question, are you asking if we validate the current state of the node on the previous config? Or whether we validate the incoming desiredImage to see if it's valid or not?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The latter, whether we validate the incoming desiredImage to see if it's valid or not. My intent behind this question is to understand if there is some validation post setting the desired image annotation on the node and when the update can actually proceed, similar to how MCN has the reconcile and other checks before UpdatePrepared is flipped to True.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Apologies for missing the follow-up, I think there isn't any validation, so any failures would come in the update process itself when we try to pull the image

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if im understanding your question, i dont know that there is a specific "validation". The node rollout when image mode is enabled is consistent with the legacy MCO rollout process

Copy link
Member Author

@isabella-janssen isabella-janssen Aug 11, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @yuqi-zhang & @dkhater-redhat for the input! I've updated the enhancement to be reflective of what I envision the natural difference in desiredImage in Spec and Status would be:

  • MCN.Spec.ConfigImage.DesiredImage = populated on machineconfiguration.openshift.io/desiredImage annotation being set on node
  • MCN.Status.ConfigImage.DesiredImage = populated on successful start of node update (image successfully pulled/update to image started)

@isabella-janssen isabella-janssen force-pushed the ocl-status-reporting branch 4 times, most recently from 9608341 to fbbc56c Compare June 16, 2025 16:48
@openshift-ci-robot
Copy link

openshift-ci-robot commented Jun 16, 2025

@isabella-janssen: This pull request references MCO-1748 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "4.20.0" version, but no target version was set.

In response to this:

This outlines the proposed changes to the MachineConfigNode (MCN) resource in 4.20 to finalize "Status Reporting" in the MCO. The primary change for 4.20 is reporting the status through OnClusterLayering-enabled node updates.

Note that since the 4.19 updates to the MCN enhancement have not yet merged (PR #1765), only the most recent commit, fbbc56c, is relevant to 4.20.

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 openshift-eng/jira-lifecycle-plugin repository.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note to reviewer

That the following console outputs are what I see as the possible MCN updates during an OCL update, but I would like reviews on the flow from someone with better knowledge of OCL to chime in.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i think that makes sense. I think the most important things to monitor are current, desired, and osimages.

@openshift-ci-robot
Copy link

openshift-ci-robot commented Jun 16, 2025

@isabella-janssen: This pull request references MCO-1748 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "4.20.0" version, but no target version was set.

In response to this:

This outlines the proposed changes to the MachineConfigNode (MCN) resource in 4.20 to finalize "Status Reporting" in the MCO. The primary change for 4.20 is reporting the status through OnClusterLayering-enabled node updates.

Note that since the 4.19 updates to the MCN enhancement have not yet merged (PR #1765), only the most recent commit, b56df3e, is relevant to 4.20.

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 openshift-eng/jira-lifecycle-plugin repository.

@isabella-janssen isabella-janssen marked this pull request as ready for review June 16, 2025 17:16
@openshift-ci openshift-ci bot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Jun 16, 2025
@openshift-ci openshift-ci bot requested review from jmguzik and jsafrane June 16, 2025 17:16
Copy link
Contributor

@yuqi-zhang yuqi-zhang left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some general comments inline


The desired config found in the spec will get updated immediately when a new config is found on the node. However, the desired config found in the status will only get updated once the new config has been validated in the machine config daemon. In the current implementation, the desired config is populated in the status by checking whether the update successfully gets past the "UpdatePrepared" phase. If the "UpdatePrepared" phase succeeds, then the status can safely add the desired config.
<!-- TODO: check on the "the image has been successfully created" condition for the deire image being in the status -->
The desired config or image found in `Spec` will get updated immediately when a new config or image is found on the node. However, the desired config and image found in `Status` will only get updated once the new config has been validated in the MCD or the image has been successfully created. In the current implementation, the desired config is populated in the status by checking whether the update successfully gets past the "UpdatePrepared" phase. If the "UpdatePrepared" phase succeeds, then the status can safely add the desired config.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To clarify the question, are you asking if we validate the current state of the node on the previous config? Or whether we validate the incoming desiredImage to see if it's valid or not?

@openshift-ci-robot
Copy link

openshift-ci-robot commented Jun 17, 2025

@isabella-janssen: This pull request references MCO-1748 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "4.20.0" version, but no target version was set.

In response to this:

This outlines the proposed changes to the MachineConfigNode (MCN) resource in 4.20 to finalize "Status Reporting" in the MCO. The primary change for 4.20 is reporting the status through OnClusterLayering-enabled node updates.

Note that since the 4.19 updates to the MCN enhancement have not yet merged (PR #1765), only the most recent commit, 38ac165, is relevant to 4.20.

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 openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci-robot
Copy link

openshift-ci-robot commented Jun 17, 2025

@isabella-janssen: This pull request references MCO-1748 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "4.20.0" version, but no target version was set.

In response to this:

This outlines the proposed changes to the MachineConfigNode (MCN) resource in 4.20 to finalize "Status Reporting" in the MCO. The primary change for 4.20 is reporting the status through OnClusterLayering-enabled node updates.

Note that since the 4.19 updates to the MCN enhancement have not yet merged (PR #1765), only the most recent commit, dfe00ab, is relevant to 4.20.

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 openshift-eng/jira-lifecycle-plugin repository.

@openshift-bot
Copy link

Inactive enhancement proposals go stale after 28d of inactivity.

See https://github.com/openshift/enhancements#life-cycle for details.

Mark the proposal as fresh by commenting /remove-lifecycle stale.
Stale proposals rot after an additional 7d of inactivity and eventually close.
Exclude this proposal from closing by commenting /lifecycle frozen.

If this proposal is safe to close now please do so with /close.

/lifecycle stale

@openshift-merge-robot openshift-merge-robot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Jul 16, 2025
@openshift-ci openshift-ci bot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Jul 16, 2025
@openshift-merge-robot openshift-merge-robot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Jul 16, 2025
@isabella-janssen
Copy link
Member Author

/remove-lifecycle stale

@openshift-ci openshift-ci bot removed the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Jul 16, 2025
@openshift-ci-robot
Copy link

openshift-ci-robot commented Jul 16, 2025

@isabella-janssen: This pull request references MCO-1748 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "4.20.0" version, but no target version was set.

In response to this:

This outlines the proposed changes to the MachineConfigNode (MCN) resource in 4.20 to finalize "Image Mode Status Reporting" in the MCO, which is defined in epic MCO-1506. The primary changes in this enhancement include:

  • Definition of API additions needed to support the reporting of on-cluster image mode node updates through the MCN resource.
  • Minor grammar/syntax fixes.

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 openshift-eng/jira-lifecycle-plugin repository.

Copy link
Contributor

@yuqi-zhang yuqi-zhang left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

generally lgtm from my side based on the discussions in the API. Is there any other updates you'd like to do here or should we go ahead and merge?


The desired config found in the spec will get updated immediately when a new config is found on the node. However, the desired config found in the status will only get updated once the new config has been validated in the machine config daemon. In the current implementation, the desired config is populated in the status by checking whether the update successfully gets past the "UpdatePrepared" phase. If the "UpdatePrepared" phase succeeds, then the status can safely add the desired config.
<!-- TODO: check on the "the image has been successfully created" condition for the deire image being in the status -->
The desired config or image found in `Spec` will get updated immediately when a new config or image is found on the node. However, the desired config and image found in `Status` will only get updated once the new config has been validated in the MCD or the image has been successfully created. In the current implementation, the desired config is populated in the status by checking whether the update successfully gets past the "UpdatePrepared" phase. If the "UpdatePrepared" phase succeeds, then the status can safely add the desired config.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Apologies for missing the follow-up, I think there isn't any validation, so any failures would come in the update process itself when we try to pull the image

Copy link
Contributor

openshift-ci bot commented Jul 28, 2025

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: yuqi-zhang

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

@openshift-ci openshift-ci bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Jul 28, 2025
@isabella-janssen isabella-janssen changed the title MCO-1748: Proposed updates to MCN in 4.20 for Status Reporting MCO-1748: Proposed updates to MCN in 4.20 for Image Mode Status Reporting Jul 29, 2025
@openshift-ci-robot
Copy link

openshift-ci-robot commented Jul 31, 2025

@isabella-janssen: This pull request references MCO-1748 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "4.20.0" version, but no target version was set.

In response to this:

This outlines the proposed changes to the MachineConfigNode (MCN) resource in 4.20 to finalize "Image Mode Status Reporting" in the MCO, which is defined in epic MCO-1506. The primary changes in this enhancement include:

  • Definition of API additions needed to support the reporting of on-cluster image mode node updates through the MCN resource.
  • Minor grammar/syntax fixes.
  • Implementation details as ironed out in the corresponding API PR review.

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 openshift-eng/jira-lifecycle-plugin repository.

Copy link

@dkhater-redhat dkhater-redhat left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good work isabella! this is very well-structured and comprehensive. i added a couple of comments - I think the most pressing one is the API consistency questions. Have you spoken to joel on it? otherwise great work!


The desired config found in the spec will get updated immediately when a new config is found on the node. However, the desired config found in the status will only get updated once the new config has been validated in the machine config daemon. In the current implementation, the desired config is populated in the status by checking whether the update successfully gets past the "UpdatePrepared" phase. If the "UpdatePrepared" phase succeeds, then the status can safely add the desired config.
<!-- TODO: check on the "the image has been successfully created" condition for the deire image being in the status -->
The desired config or image found in `Spec` will get updated immediately when a new config or image is found on the node. However, the desired config and image found in `Status` will only get updated once the new config has been validated in the MCD or the image has been successfully created. In the current implementation, the desired config is populated in the status by checking whether the update successfully gets past the "UpdatePrepared" phase. If the "UpdatePrepared" phase succeeds, then the status can safely add the desired config.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if im understanding your question, i dont know that there is a specific "validation". The node rollout when image mode is enabled is consistent with the legacy MCO rollout process

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i think that makes sense. I think the most important things to monitor are current, desired, and osimages.

@isabella-janssen
Copy link
Member Author

I think the most pressing one is the API consistency questions. Have you spoken to joel on it?

Thanks for the review @dkhater-redhat! Yes, the API questions were ironed out on @naseerahkani's API PR (openshift/api#2383), so they should be fine.

@isabella-janssen
Copy link
Member Author

generally lgtm from my side based on the discussions in the API. Is there any other updates you'd like to do here or should we go ahead and merge?

@yuqi-zhang Sorry I missed this question, I think this should be fine to approve/merge considering the API review was pretty comprehensive of what I would've expected to be conversations in this PR. But I'm open to merging this post API or MCO merge instead if that's preferred.

Copy link
Contributor

openshift-ci bot commented Aug 11, 2025

@isabella-janssen: all tests passed!

Full PR test history. Your PR dashboard.

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-sigs/prow repository. I understand the commands that are listed here.

@yuqi-zhang
Copy link
Contributor

/lgtm

We can always update as needed, thanks!

@openshift-ci openshift-ci bot added the lgtm Indicates that a PR is ready to be merged. label Aug 12, 2025
@openshift-merge-bot openshift-merge-bot bot merged commit 6d1d502 into openshift:master Aug 12, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved Indicates a PR has been approved by an approver from all required OWNERS files. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. lgtm Indicates that a PR is ready to be merged.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants