-
Notifications
You must be signed in to change notification settings - Fork 65
blocked-edges/4.7.4*: Targeted edge blocking and version 1.1.0 #1056
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
blocked-edges/4.7.4*: Targeted edge blocking and version 1.1.0 #1056
Conversation
86082bb to
e75dffb
Compare
|
/hold Don't want to rush this one in ;) |
e75dffb to
676e5b1
Compare
4722ce7 to
a66bd51
Compare
|
Checking a66bd51 on a 4.6.0 OSUS installed on 4.8.11 OpenShift (via #1057 pointed at this branch): $ curl -ksH accept:application/json 'https://example-policy-engine-route-openshift-update-service.apps.ci-ln-l4qnyb2-f76d1.origin-ci-int-gce.dev.openshift.com/api/upgrades_info/v1/graph?channel=candidate-4.7' | jq -r '.nodes[] | select(.version == "4.7.4").metadata["io.openshift.upgrades.graph.previous.remove_regex"]'
.*
$ curl -ksH accept:application/json 'https://example-policy-engine-route-openshift-update-service.apps.ci-ln-l4qnyb2-f76d1.origin-ci-int-gce.dev.openshift.com/api/upgrades_info/v1/graph?channel=candidate-4.7' | jq -r '(.nodes | with_entries(.key |= tostring)) as $nodes_by_index | .edges[] | $nodes_by_index[.[0] | tostring].version + " -> " + $nodes_by_index[.[1] | tostring].version' | grep ' -> 4.7.4'
...no hits...So looks good to me vs. an old Cincinnati. |
| * `from` (required, [string][json-string]) is a regex for the previous release versions. | ||
| If you want to require `from` to match the full version string (and not just a substring), you must include explicit `^` and `$` anchors. | ||
| Release version strings will receive [the architecture-suffix](#release-names) before being compared to this regular expression. | ||
| * `url` (optional, [string][json-string]), with a URI documenting the blocking reason. |
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.
IMO justification link should not be optional
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.
I think it should, and there's a section in the in-flight enhancement explaining my motivation, but let's hash this out in the relevant enhancements thread.
| Release version strings will receive [the architecture-suffix](#release-names) before being compared to this regular expression. | ||
| * `url` (optional, [string][json-string]), with a URI documenting the blocking reason. | ||
| For example, this could link to a bug's impact statement or knowledge-base article. | ||
| * `name` (optional, [string][json-string]), with a CamelCase reason suitable for [a `ClusterOperatorStatusCondition` `reason` property][api-reason]. |
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.
Do we need to come up with a name when its tied to a bug is (almost) all cases?
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.
This slug eventually feeds the Recommended condition's reason property. I think we want that, although see the Metadata to include when blocking a conditional request section in the enhancement for discussion.
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.
I wonder if we maintain the list of name i.e. ClusterOperatorStatusCondition reason it might be useful to create some kind of glossary
So we can explain why we're blocking the different edges [1]. The zz in the filename for the vSphere hostname block ensures that one sorts last alphabetically, because it's the broadest block, and legacy Cincinnati services will prefer the final regular expression they load for a given 'to' target. [1]: openshift/enhancements#821
a66bd51 to
39bc2fb
Compare
vrutkovs
left a comment
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.
/lgtm
LalatenduMohanty
left a comment
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.
/lgtm
| Release version strings will receive [the architecture-suffix](#release-names) before being compared to this regular expression. | ||
| * `url` (optional, [string][json-string]), with a URI documenting the blocking reason. | ||
| For example, this could link to a bug's impact statement or knowledge-base article. | ||
| * `name` (optional, [string][json-string]), with a CamelCase reason suitable for [a `ClusterOperatorStatusCondition` `reason` property][api-reason]. |
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.
I wonder if we maintain the list of name i.e. ClusterOperatorStatusCondition reason it might be useful to create some kind of glossary
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: LalatenduMohanty, vrutkovs, wking The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
|
/hold cancel |
|
Checking now that this is live. From shortly before the PR merged: $ curl -s 'https://api.openshift.com/api/upgrades_info/v1/graph?channel=fast-4.7' >fast-4.7-pre.json
$ curl -s 'https://api.openshift.com/api/upgrades_info/v1/graph?channel=fast-4.8' >fast-4.8-pre.jsonAnd from after the PR merged: $ curl -s 'https://api.openshift.com/api/upgrades_info/v1/graph?channel=fast-4.7' >fast-4.7-post.json
$ curl -s 'https://api.openshift.com/api/upgrades_info/v1/graph?channel=fast-4.8' >fast-4.8-post.jsonWriting a comparer: $ edges() {
> jq -r '(.nodes | with_entries(.key |= tostring)) as $nodes_by_index | .edges[] | $nodes_by_index[(.[0] | tostring)].version + " -> " + $nodes_by_index[(.[1] | tostring)].version' "${1}" | sort -V
> }And using it: $ diff -u <(edges fast-4.7-pre.json) <(edges fast-4.7-post.json) && echo 'no changes'
no changes
$ diff -u <(edges fast-4.8-pre.json) <(edges fast-4.8-post.json) && echo 'no changes'
no changesSo hooray, we're good vs. modern Cincinnati too. |
So we can explain why we're blocking the different edges [1] (the promql -> PromQL type change is in flight with [2]). The zz in the filename for the vSphere hostname block ensures that one sorts last alphabetically, because it's the broadest block, and legacy Cincinnati services will prefer the final regular expression they load for a given 'to' target. This is basically a second attempt at my earlier 39bc2fb (blocked-edges/4.7.4*: Targeted edge blocking and version 1.1.0, 2021-09-01, openshift#1056), which ended up getting reverted in da1254a (Revert "blocked-edges/4.7.4*: Targeted edge blocking and version 1.1.0", 2021-09-21, openshift#1078) because the production Cincinnati was mad about the 1.1.0 version string. [3] taught Cincinnati to relax, and now that's live (and we never shipped any versions that would be mad about 1.1.0 to customers, the 4.6.0 Update Service operator went out before [4]). [1]: openshift/enhancements#821 [2]: openshift/enhancements#910 [3]: openshift/cincinnati#538 [4]: openshift/cincinnati#314
So we can explain why we're blocking the different edges [1] (the promql -> PromQL type change is in flight with [2]). The zz in the filename for the vSphere hostname block ensures that one sorts last alphabetically, because it's the broadest block, and legacy Cincinnati services will prefer the final regular expression they load for a given 'to' target. This is basically a second attempt at my earlier 39bc2fb (blocked-edges/4.7.4*: Targeted edge blocking and version 1.1.0, 2021-09-01, openshift#1056), which ended up getting reverted in da1254a (Revert "blocked-edges/4.7.4*: Targeted edge blocking and version 1.1.0", 2021-09-21, openshift#1078) because the production Cincinnati was mad about the 1.1.0 version string. [3] taught Cincinnati to relax, and now that's live (and we never shipped any versions that would be mad about 1.1.0 to customers, the 4.6.0 Update Service operator went out before [4]). [1]: openshift/enhancements#821 [2]: openshift/enhancements#910 [3]: openshift/cincinnati#538 [4]: openshift/cincinnati#314
So we can explain why we're blocking the different edges [1] (the promql -> PromQL type change is in flight with [2]). The zz in the filename for the vSphere hostname block ensures that one sorts last alphabetically, because it's the broadest block, and legacy Cincinnati services will prefer the final regular expression they load for a given 'to' target. This is basically a second attempt at my earlier 39bc2fb (blocked-edges/4.7.4*: Targeted edge blocking and version 1.1.0, 2021-09-01, openshift#1056), which ended up getting reverted in da1254a (Revert "blocked-edges/4.7.4*: Targeted edge blocking and version 1.1.0", 2021-09-21, openshift#1078) because the production Cincinnati was mad about the 1.1.0 version string. [3] taught Cincinnati to relax, and now that's live (and we never shipped any versions that would be mad about 1.1.0 to customers, the 4.6.0 Update Service operator went out before [4]). [1]: openshift/enhancements#821 [2]: openshift/enhancements#910 [3]: openshift/cincinnati#538 [4]: openshift/cincinnati#314
… conditional update Since 39bc2fb (blocked-edges/4.7.4*: Targeted edge blocking and version 1.1.0, 2021-09-01, openshift#1056), we've had some example conditional updates back on * -> 4.7.4. But now that 4.10 has feature candidates, this commit adds a conditional edge based on a minor 4.10.0-fc.2 issue that was fixed in fc.3. Folks interested in seeing conditional edges in action can install fc.0 or fc.1 on AWS, and see that this conditional edge is not recommended. Or they can install fc.0 or fc.1 on a non-AWS platform to see that the conditional edge is recommended.
… conditional update Since 39bc2fb (blocked-edges/4.7.4*: Targeted edge blocking and version 1.1.0, 2021-09-01, openshift#1056), we've had some example conditional updates back on * -> 4.7.4. But now that 4.10 has feature candidates, this commit adds a conditional edge based on a minor 4.10.0-fc.2 issue that was fixed in fc.3. Folks interested in seeing conditional edges in action can install fc.0 or fc.1 on AWS, and see that this conditional edge is not recommended. Or they can install fc.0 or fc.1 on a non-AWS platform to see that the conditional edge is recommended.
… conditional update Since 39bc2fb (blocked-edges/4.7.4*: Targeted edge blocking and version 1.1.0, 2021-09-01, openshift#1056), we've had some example conditional updates back on * -> 4.7.4. But now that 4.10 has feature candidates, this commit adds a conditional edge based on a minor 4.10.0-fc.2 issue that was fixed in fc.3. Folks interested in seeing conditional edges in action can install fc.0 or fc.1 on AWS, and see that this conditional edge is not recommended. Or they can install fc.0 or fc.1 on a non-AWS platform to see that the conditional edge is recommended.
… conditional update Since 39bc2fb (blocked-edges/4.7.4*: Targeted edge blocking and version 1.1.0, 2021-09-01, openshift#1056), we've had some example conditional updates back on * -> 4.7.4. But now that 4.10 has feature candidates, this commit adds a conditional edge based on a minor 4.10.0-fc.2 issue that was fixed in fc.3. Folks interested in seeing conditional edges in action can install fc.0 or fc.1 on AWS, and see that this conditional edge is not recommended. Or they can install fc.0 or fc.1 on a non-AWS platform to see that the conditional edge is recommended.
So we can explain why we're blocking the different edges: openshift/enhancements#821.
The
zzin the filename for the vSphere hostname block ensures that one sorts last alphabetically, because it's the broadest block, and legacy Cincinnati services will prefer the final regular expression they load for a giventotarget.