Skip to content

Conversation

djoshy
Copy link
Contributor

@djoshy djoshy commented Jun 5, 2025

Install time workflow, active for release (n-1) and above

flowchart TD
    A[MCO install-time check] --> B{Is the skew API spec set?}   
    B --> |No|C{Can the MCO manage boot images for this cluster?}
    B --> |Yes|E[Done]   
    C --> |No|D[Set skew API spec to Manual, with boot image matching install time values]
    C --> |Yes|E
    D --> E
Loading

Reconciliation flow for skew API fields, active for upgrades to release (n-1) & above

flowchart TD
    A[Operator sync loop] --> B{Is the skew API spec/status set?}   
    B --> |No|C{Can the MCO manage boot images for this cluster?}
    B --> |Yes|E[Done]   
    C --> |No|D[Set Upgradeable=False to force cluster admin opinion]
    C --> |Yes|F[Set skew API status to Automatic]
    D --> E
    F --> E
Loading

Skew enforcement mechanism sync loop, active in release n

flowchart TD
    A[Sync loop for skew mechanism. Triggered on: skew API knob updates, boot image update conditions] --> U{Is skew API mode set?}   
    U --> |Yes|V{Determine skew API mode: Automatic, Manual or None?}
    U --> |No|K
    V --> |None|L[Raise a low level Prometheus alert to indicate scaling risk]
    V --> |Manual|I 
    V --> |Automatic|E{Is the boot image controller in an error mode?}
    E --> |No| H[Wait until boot image controller is not progressing]
    E --> |Yes| K
    H --> I[Is the current skew compliant against the limit defined in the release image?]   
    I --> |Yes| Done
    I --> |No| K[MCO sets Upgradeable=False] 
    K --> Done
    L --> Done
Loading

Validation Tables

Both Spec Fields Set

ManagedBootImages spec SkewEnforcement spec ManagedBootImages status SkewEnforcement status Action
All Manual (ignored) (ignored) Good
All None (ignored) (ignored) Good
Partial Manual (ignored) (ignored) Good
Partial None (ignored) (ignored) Good
None Manual (ignored) (ignored) Good
None None (ignored) (ignored) Good

Only ManagedBootImages Empty

ManagedBootImages spec SkewEnforcement spec ManagedBootImages status SkewEnforcement status Action
Empty Manual All (ignored) Good
Empty None All (ignored) Good
Empty Manual Partial (ignored) Good
Empty None Partial (ignored) Good
Empty Manual None (ignored) Good
Empty None None (ignored) Good
Empty Manual Empty (ignored) Good
Empty None Empty (ignored) Good

Only SkewEnforcement Empty

ManagedBootImages spec SkewEnforcement spec ManagedBootImages status SkewEnforcement status Action
All Empty (ignored) Automatic Good
All Empty (ignored) Empty Controller error
Partial Empty (ignored) Automatic API validation failure
Partial Empty (ignored) Empty Good
None Empty (ignored) Automatic API validation failure
None Empty (ignored) Empty Good

Both Spec Fields Empty

ManagedBootImages spec SkewEnforcement spec ManagedBootImages status SkewEnforcement status Action
Empty Empty All Automatic Good
Empty Empty All Empty Controller error
Empty Empty Partial Automatic API validation failure
Empty Empty Partial Empty Good
Empty Empty None Automatic API validation failure
Empty Empty None Empty Good
Empty Empty Empty Automatic API validation failure
Empty Empty Empty Empty Good

@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 5, 2025
@openshift-ci-robot
Copy link

openshift-ci-robot commented Jun 5, 2025

@djoshy: This pull request references MCO-1669 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:

WIP boot image enforcement API, based on discussions from openshift/enhancements#1761

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

openshift-ci bot commented Jun 5, 2025

Hello @djoshy! Some important instructions when contributing to openshift/api:
API design plays an important part in the user experience of OpenShift and as such API PRs are subject to a high level of scrutiny to ensure they follow our best practices. If you haven't already done so, please review the OpenShift API Conventions and ensure that your proposed changes are compliant. Following these conventions will help expedite the api review process for your PR.

@openshift-ci openshift-ci bot added do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. labels Jun 5, 2025
@openshift-ci openshift-ci bot requested review from deads2k and everettraven June 5, 2025 16:51
@djoshy djoshy force-pushed the skew-enforcement branch from eee6809 to 54938cf Compare July 14, 2025 20:21
@djoshy
Copy link
Contributor Author

djoshy commented Jul 14, 2025

Thanks for the questions & review(sorry it took a while!), this should be ready for another look. Happy to hop on a call if that is easier.

Update: Did another push to fix up some tests.

@djoshy djoshy force-pushed the skew-enforcement branch from 54938cf to 0344f1e Compare July 15, 2025 14:58
Copy link
Contributor

@everettraven everettraven left a comment

Choose a reason for hiding this comment

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

Leaving another handful of comments.

I'm also happy to hop on a call if you think it would be beneficial.

@djoshy djoshy force-pushed the skew-enforcement branch from 0344f1e to 5816e99 Compare July 17, 2025 18:46
Copy link
Contributor

@everettraven everettraven left a comment

Choose a reason for hiding this comment

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

A few minor comments, but other than these I think this looks good

@djoshy djoshy force-pushed the skew-enforcement branch from 5816e99 to ac57873 Compare July 23, 2025 20:26
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.

A couple of maybe dumb questions:

@djoshy djoshy force-pushed the skew-enforcement branch from ac57873 to 66a9ee8 Compare July 30, 2025 13:04
@openshift-ci-robot
Copy link

openshift-ci-robot commented Aug 7, 2025

@djoshy: This pull request references MCO-1669 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:

Based on discussions from openshift/enhancements#1761
Proposed workflow:

flowchart TD
   A[Sync loop for skew mechanism. Triggered on: skew API knob updates, boot image update conditions] --> U{Is Skew API knob defined for this cluster?}    
   U --> |Yes| V{Determine skew API mode: Automatic, Manual or None?}
   V --> |None|J
   V --> |Manual|I 
   V --> |Automatic|E
   U --> |No| B{Can the MCO manage boot images for this cluster?}
   B --> |Yes| C[Skew API knob set to automatic]
   B --> |No| D[Skew API knob set to manual, cluster boot image estimated from cluster defaults]
   C --> E{Is the boot image controller disabled or in an error mode?}
   E --> |No| H[Wait until boot image controller is not progressing]
   E --> |Yes| G[Throw an error to cluster admin]
   G --> Done
   D --> I
   H --> I[Is skew compliant against the current release image?]   
   I --> |No| K[Set CO upgradeable=false] 
   I --> |Yes| Done
   K --> J[Disable scaling via MCS rejects & RHCOS templates]
   J --> Done
Loading

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 Aug 7, 2025

@djoshy: This pull request references MCO-1669 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:

Based on discussions from openshift/enhancements#1761
Proposed workflow:

flowchart TD
   A[Sync loop for skew mechanism. Triggered on: skew API knob updates, boot image update conditions] --> U{Is Skew API knob defined for this cluster?}    
   U --> |Yes| V{Determine skew API mode: Automatic, Manual or None?}
   V --> |None|J
   V --> |Manual|I 
   V --> |Automatic|E
   U --> |No| B{Can the MCO manage boot images for this cluster?}
   B --> |Yes| C[Skew API knob set to automatic]
   B --> |No| D[Skew API knob set to manual, cluster boot image estimated from cluster version]
   C --> E{Is the boot image controller disabled or in an error mode?}
   E --> |No| H[Wait until boot image controller is not progressing]
   E --> |Yes| G[Throw an error to cluster admin]
   G --> Done
   D --> I
   H --> I[Is skew compliant against the current release image?]   
   I --> |No| K[Set CO upgradeable=false] 
   I --> |Yes| Done
   K --> J[Disable scaling via MCS rejects & RHCOS templates]
   J --> Done
Loading

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 Aug 7, 2025

@djoshy: This pull request references MCO-1669 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:

Based on discussions from openshift/enhancements#1761:
Workflow for release (n-1)

flowchart TD
   A[Operator sync loop] --> B{Is the skew API spec/status set?}   
   B --> |No|C{Can the MCO manage boot images for this cluster?}
   B --> |Yes|E[Done]   
   C --> |No|D[Set Upgradeable=False to warn cluster admin]
   C --> |Yes|F[Set skew AI status to Automatic]
   D --> E
   F --> E
Loading

Workflow for release n

flowchart TD
   A[Sync loop for skew mechanism. Triggered on: skew API knob updates, boot image update conditions] --> V{Determine skew API mode: Automatic, Manual or None?}   
   V --> |None|L[Raise a low level Prometheus alert to indicate scaling risk]
   V --> |Manual|I 
   V --> |Automatic|E{Is the boot image controller disabled or in an error mode?}
   E --> |No| H[Wait until boot image controller is not progressing]
   E --> |Yes| G[Throw an error to cluster admin]
   G --> K
   H --> I[Is the current skew compliant against the limit defined in the release image?]   
   I --> |Yes| Done
   I --> |No| K[MCO degrades the cluster] 
   K --> Done
   L --> Done
Loading

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 Aug 11, 2025

@djoshy: This pull request references MCO-1669 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:

Based on discussions from openshift/enhancements#1761:
Workflow for pre-release skew enforcement not active

flowchart TD
   A[Operator sync loop] --> B{Is the skew API spec/status set?}   
   B --> |No|C{Can the MCO manage boot images for this cluster?}
   B --> |Yes|E[Done]   
   C --> |No|D[Set Upgradeable=False to force cluster admin opinion]
   C --> |Yes|F[Set skew API status to Automatic]
   D --> E
   F --> E
Loading

Workflow for release n, skew enforcement is active

flowchart TD
   A[Sync loop for skew mechanism. Triggered on: skew API knob updates, boot image update conditions] --> V{Determine skew API mode: Automatic, Manual or None?}   
   V --> |None|L[Raise a low level Prometheus alert to indicate scaling risk]
   V --> |Manual|I 
   V --> |Automatic|E{Is the boot image controller disabled or in an error mode?}
   E --> |No| H[Wait until boot image controller is not progressing]
   E --> |Yes| G[Throw an error to cluster admin]
   G --> K
   H --> I[Is the current skew compliant against the limit defined in the release image?]   
   I --> |Yes| Done
   I --> |No| K[MCO sets Upgradeable=False] 
   K --> Done
   L --> Done
Loading

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-merge-robot openshift-merge-robot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Aug 11, 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 Aug 15, 2025
@djoshy
Copy link
Contributor Author

djoshy commented Aug 15, 2025

Last push includes:

  • removed Automatic enum value from the spec
  • updated the go doc to account for our recent discussions about Manual mode, and how the user is required to set a value to allow upgrades for certain cases.
  • accounted for new linter rules

It seems to be failing NoNewRequiredFields in verify, which must be a recent change. Is it okay to not have a required tag for a union discriminators like Mode?

@everettraven
Copy link
Contributor

Last push includes:

  • removed Automatic enum value from the spec
  • updated the go doc to account for our recent discussions about Manual mode, and how the user is required to set a value to allow upgrades for certain cases.
  • accounted for new linter rules

It seems to be failing NoNewRequiredFields in verify, which must be a recent change. Is it okay to not have a required tag for a union discriminators like Mode?

@djoshy The NoNewRequiredFields isn't new from what I recall, but it is actually a bit buggy and picks up required children fields in a new optional parent field - which is OK. That appears to be what is happening in this case so we can override the check when we are ready for this to merge (overriding it now won't do any good as other things will likely merge in the meantime and re-trigger testing).

Copy link
Contributor

@everettraven everettraven left a comment

Choose a reason for hiding this comment

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

Took another look at this and from what I recall this aligns with what was discussed synchronously. I'm going to circle back around to see if there are any outstanding comments left from Joel's previous review while I was out, but otherwise this direction looks good to me.

@openshift-ci-robot
Copy link

openshift-ci-robot commented Sep 16, 2025

@djoshy: This pull request references MCO-1669 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.21.0" version, but no target version was set.

In response to this:

Install time workflow, active for release (n-1) and above

flowchart TD
   A[MCO install-time check] --> B{Is the skew API spec set?}   
   B --> |No|C{Can the MCO manage boot images for this cluster?}
   B --> |Yes|E[Done]   
   C --> |No|D[Set skew API spec to Manual, with boot image matching install time values]
   C --> |Yes|E
   D --> E
Loading

Reconciliation flow for skew API fields, active for upgrades to release (n-1) & above

flowchart TD
   A[Operator sync loop] --> B{Is the skew API spec/status set?}   
   B --> |No|C{Can the MCO manage boot images for this cluster?}
   B --> |Yes|E[Done]   
   C --> |No|D[Set Upgradeable=False to force cluster admin opinion]
   C --> |Yes|F[Set skew API status to Automatic]
   D --> E
   F --> E
Loading

Skew enforcement mechanism sync loop, active in release n

flowchart TD
   A[Sync loop for skew mechanism. Triggered on: skew API knob updates, boot image update conditions] --> U{Is skew API mode set?}   
   U --> |Yes|V{Determine skew API mode: Automatic, Manual or None?}
   U --> |No|K
   V --> |None|L[Raise a low level Prometheus alert to indicate scaling risk]
   V --> |Manual|I 
   V --> |Automatic|E{Is the boot image controller in an error mode?}
   E --> |No| H[Wait until boot image controller is not progressing]
   E --> |Yes| K
   H --> I[Is the current skew compliant against the limit defined in the release image?]   
   I --> |Yes| Done
   I --> |No| K[MCO sets Upgradeable=False] 
   K --> Done
   L --> Done
Loading

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 Sep 16, 2025

@djoshy: This pull request references MCO-1669 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.21.0" version, but no target version was set.

In response to this:

Install time workflow, active for release (n-1) and above

flowchart TD
   A[MCO install-time check] --> B{Is the skew API spec set?}   
   B --> |No|C{Can the MCO manage boot images for this cluster?}
   B --> |Yes|E[Done]   
   C --> |No|D[Set skew API spec to Manual, with boot image matching install time values]
   C --> |Yes|E
   D --> E
Loading

Reconciliation flow for skew API fields, active for upgrades to release (n-1) & above

flowchart TD
   A[Operator sync loop] --> B{Is the skew API spec/status set?}   
   B --> |No|C{Can the MCO manage boot images for this cluster?}
   B --> |Yes|E[Done]   
   C --> |No|D[Set Upgradeable=False to force cluster admin opinion]
   C --> |Yes|F[Set skew API status to Automatic]
   D --> E
   F --> E
Loading

Skew enforcement mechanism sync loop, active in release n

flowchart TD
   A[Sync loop for skew mechanism. Triggered on: skew API knob updates, boot image update conditions] --> U{Is skew API mode set?}   
   U --> |Yes|V{Determine skew API mode: Automatic, Manual or None?}
   U --> |No|K
   V --> |None|L[Raise a low level Prometheus alert to indicate scaling risk]
   V --> |Manual|I 
   V --> |Automatic|E{Is the boot image controller in an error mode?}
   E --> |No| H[Wait until boot image controller is not progressing]
   E --> |Yes| K
   H --> I[Is the current skew compliant against the limit defined in the release image?]   
   I --> |Yes| Done
   I --> |No| K[MCO sets Upgradeable=False] 
   K --> Done
   L --> Done
Loading

Validation Tables

Both Spec Fields Set

ManagedBootImages spec SkewEnforcement spec ManagedBootImages status SkewEnforcement status Action
All Manual (ignored) (ignored) Good
All None (ignored) (ignored) Good
Partial Manual (ignored) (ignored) Good
Partial None (ignored) (ignored) Good
None Manual (ignored) (ignored) Good
None None (ignored) (ignored) Good

Only ManagedBootImages Empty

ManagedBootImages spec SkewEnforcement spec ManagedBootImages status SkewEnforcement status Action
Empty Manual All (ignored) Good
Empty None All (ignored) Good
Empty Manual Partial (ignored) Good
Empty None Partial (ignored) Good
Empty Manual None (ignored) Good
Empty None None (ignored) Good
Empty Manual Empty (ignored) Good
Empty None Empty (ignored) Good

Only SkewEnforcement Empty

ManagedBootImages spec SkewEnforcement spec ManagedBootImages status SkewEnforcement status Action
All Empty (ignored) Automatic Good
All Empty (ignored) Empty Controller error
Partial Empty (ignored) Automatic API validation failure
Partial Empty (ignored) Empty Good
None Empty (ignored) Automatic API validation failure
None Empty (ignored) Empty Good

Both Spec Fields Empty

ManagedBootImages spec SkewEnforcement spec ManagedBootImages status SkewEnforcement status Action
Empty Empty All Automatic Good
Empty Empty All Empty Controller error
Empty Empty Partial Automatic API validation failure
Empty Empty Partial Empty Good
Empty Empty None Automatic API validation failure
Empty Empty None Empty Good
Empty Empty Empty Automatic API validation failure
Empty Empty Empty Empty Good

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.

@djoshy
Copy link
Contributor Author

djoshy commented Sep 16, 2025

/test all

I think we're good to go here, I've updated the flowcharts and added the validation tables to the description per our latest discussions. cc @yuqi-zhang @everettraven Care to take a last look?

Copy link
Contributor

@everettraven everettraven left a comment

Choose a reason for hiding this comment

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

A handful of minor comments, but other than these the API changes and proposed flow LGTM

// manual describes the current boot image of the cluster.
// This should be set to the oldest boot image used amongst all machine resources in the cluster.
// This includes the RHCOS version of the boot image and the OCP release version which shipped with that RHCOS boot image.
// If ocpVersion and rhcosVersion are defined, both values will be used for checking skew compliance.
Copy link
Contributor

Choose a reason for hiding this comment

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

I assume the lower value (older image?) will be the authority? When does it make sense for both of these to be set? Should we enforce a single value only?

Copy link
Contributor Author

@djoshy djoshy Sep 17, 2025

Choose a reason for hiding this comment

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

I assume the lower value (older image?) will be the authority?

Our initial thought was an AND check if they're both defined, but its not a strongly held opinion by any means.

When does it make sense for both of these to be set? Should we enforce a single value only? When does it make sense for both of these to be set?

In Manual mode, where the admin sets these values, requiring only one of them felt a bit more convenient in terms of UX.

In Automatic mode, the MCO's controller would be able to set both. I think we figured more diagnostic information, if possible, was better.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I suppose, if we think its a bit superfluous/problematic, we could potentially tighten up the validation later? 🤔

Copy link
Contributor

Choose a reason for hiding this comment

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

So I think an AND check means the oldest image is the one the skew comes from

I guess it's hard to define what the right thing to do here is, but if you think in automatic mode there's value in setting both, I can see that making sense

We could add a validation so that in Manual mode, only one choice can be made (in spec?) to prevent us having to make a choice

Starting to feel like the manual spec config should be a discriminated union 🤔

Copy link
Contributor

Choose a reason for hiding this comment

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

No strong opinion on this, but as David said, I think this was here mostly for ease of use for different admins, and in that sense, there shouldn't be a reason for them to set both RHCOS and OCP versions. I'd be +1 on Joel's last suggestion around enforcing that in manual mode, you can only set one or the other.

Copy link
Contributor

Choose a reason for hiding this comment

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

New union looks correct to me, thanks

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Updated status side + tests too, let me know how that looks! I tried my best to align the go-docs, hope I didn't miss anything 😅

Copy link
Contributor

Choose a reason for hiding this comment

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

Maybe I'm missing it, but I don't see the tests added for the manual modes in the status specifically.

I know it may seem redundant, but I'd personally like to have explicit tests for the union behavior in both spec and status to ensure we don't inadvertently break any expectations here in the future.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

ack, sorry about that, just added it - let me know if that's sufficient. Also fixed the typo that Joel had mentioned on slack in the new union discriminator's godoc.

Copy link
Contributor Author

@djoshy djoshy Sep 19, 2025

Choose a reason for hiding this comment

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

argh, found another typo, fixing and pushing up shortly 😅

Update: should be ready now

@djoshy djoshy force-pushed the skew-enforcement branch 4 times, most recently from b7878f2 to 9657bc1 Compare September 19, 2025 17:19
Copy link
Contributor

@everettraven everettraven left a comment

Choose a reason for hiding this comment

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

Another couple minor typos (old field names most likely)

// This field must match the OCP semver compatible format of x.y.z. This field must be between
// 5 and 10 characters long.
// Required when mode is set to "OCPVersion" and forbidden otherwise.
// +kubebuilder:validation:XValidation:rule="self.matches('^[0-9]+\\\\.[0-9]+\\\\.[0-9]+$')",message="bootImageOCPVersion must match the OCP semver compatible format of x.y.z"
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
// +kubebuilder:validation:XValidation:rule="self.matches('^[0-9]+\\\\.[0-9]+\\\\.[0-9]+$')",message="bootImageOCPVersion must match the OCP semver compatible format of x.y.z"
// +kubebuilder:validation:XValidation:rule="self.matches('^[0-9]+\\\\.[0-9]+\\\\.[0-9]+$')",message="ocpVersion must match the OCP semver compatible format of x.y.z"

Copy link
Contributor Author

@djoshy djoshy Sep 19, 2025

Choose a reason for hiding this comment

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

Fixed, thanks! And added a test since I realized we didn't have them for this error mode.

Copy link
Contributor

@everettraven everettraven left a comment

Choose a reason for hiding this comment

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

/lgtm

@openshift-ci openshift-ci bot added the lgtm Indicates that a PR is ready to be merged. label Sep 19, 2025
@openshift-ci-robot
Copy link

/test remaining-required

Scheduling tests matching the pipeline_run_if_changed parameter:
/test e2e-aws-ovn
/test e2e-aws-ovn-hypershift
/test e2e-aws-ovn-hypershift-conformance
/test e2e-aws-ovn-techpreview
/test e2e-aws-serial-1of2
/test e2e-aws-serial-2of2
/test e2e-aws-serial-techpreview-1of2
/test e2e-aws-serial-techpreview-2of2
/test e2e-azure
/test e2e-gcp
/test e2e-upgrade
/test e2e-upgrade-out-of-change

Copy link
Contributor

openshift-ci bot commented Sep 19, 2025

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: everettraven, JoelSpeed

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:
  • OWNERS [JoelSpeed,everettraven]

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

@everettraven
Copy link
Contributor

@djoshy I'll leave it up to you how you would like to get this change verified and add the verified label.

@djoshy
Copy link
Contributor Author

djoshy commented Sep 22, 2025

/verified later

We'll verify this later alongside the MCO PoC PR.

@openshift-ci-robot
Copy link

@djoshy: Only users can be targets for the /verified later command.

In response to this:

/verified later

We'll verify this later alongside the MCO PoC PR.

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.

@djoshy
Copy link
Contributor Author

djoshy commented Sep 22, 2025

/verified later @ptalgulk01

@openshift-ci-robot openshift-ci-robot added verified-later verified Signifies that the PR passed pre-merge verification criteria labels Sep 22, 2025
@openshift-ci-robot
Copy link

@djoshy: This PR has been marked to be verified later by @ptalgulk01.

In response to this:

/verified later @ptalgulk01

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

openshift-ci bot commented Sep 22, 2025

@djoshy: 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.

@openshift-merge-bot openshift-merge-bot bot merged commit 04f99ea into openshift:master Sep 22, 2025
28 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. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. verified Signifies that the PR passed pre-merge verification criteria verified-later
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants