Skip to content

Conversation

@wking
Copy link
Member

@wking wking commented Aug 13, 2025

Most OpenShift feature gates are tracked in openshift/api. This one is just the local environment variable, but we still want to meet the usual tech-preview-to-GA promotion criteria:

  • Tests must contain either [OCPFeatureGate:<FeatureGateName>] or the standard upstream [FeatureGate:<FeatureGateName>].

This one isn't relevant to this feature, because the test-cases are ungated to run the tech-preview functionality against production clusters (openshift/origin#29831). As docs say:

Your cluster does not need to be a Technology Preview-enabled cluster in order for you to use the oc adm upgrade recommend command.

  • There must be at least five tests for each FeatureGate.

Sippy returns exactly five:

    [Serial][sig-cli] oc adm upgrade recommend runs successfully, even without upstream OpenShift Update Service customization [Suite:openshift/conformance/serial]
    [Serial][sig-cli] oc adm upgrade recommend runs successfully with an empty channel [Suite:openshift/conformance/serial]
    [Serial][sig-cli] oc adm upgrade recommend When the update service has conditional recommendations runs successfully when listing all updates [Suite:openshift/conformance/serial]
    [Serial][sig-cli] oc adm upgrade recommend When the update service has conditional recommendations runs successfully with conditional recommendations to the --version target [Suite:openshift/conformance/serial]
    [Serial][sig-cli] oc adm upgrade recommend When the update service has no recommendations runs successfully [Suite:openshift/conformance/serial]
  • Every test must be run on every TechPreview platform we have jobs for. (Ask for an exception if your feature doesn't support a variant.)
  • Every test must run at least 14 times on every platform/variant.
  • Every test must pass at least 95% of the time on every platform/variant.

Checking on one of the least-run test-cases (... with conditional recommendations to the --version target), with 124 runs:

$ curl -s 'https://sippy.dptools.openshift.org/api/tests?release=4.20&filter=%7B%22items%22%3A%5B%7B%22columnField%22%3A%22name%22%2C%22operatorValue%22%3A%22equals%22%2C%22value%22%3A%22%5BSerial%5D%5Bsig-cli%5D%20oc%20adm%20upgrade%20recommend%20When%20the%20update%20service%20has%20conditional%20recommendations%20runs%20successfully%20with%20conditional%20recommendations%20to%20the%20--version%20target%20%5BSuite%3Aopenshift%2Fconformance%2Fserial%5D%22%7D%2C%7B%22columnField%22%3A%22variants%22%2C%22not%22%3Atrue%2C%22operatorValue%22%3A%22contains%22%2C%22value%22%3A%22never-stable%22%7D%2C%7B%22columnField%22%3A%22variants%22%2C%22not%22%3Atrue%2C%22operatorValue%22%3A%22contains%22%2C%22value%22%3A%22aggregated%22%7D%5D%2C%22linkOperator%22%3A%22and%22%7D&period=default&sortField=delta_from_passing_average&sort=asc&collapse=false' | jq -r '[.[] | select(.variants) | ([.variants[] | select(startswith("Platform:") or startswith("Architecture:") or startswith("Topology:") or startswith("NetworkStack:"))] | tostring) as $platform | {current_runs, current_successes, platform: $platform}] | group_by(.platform)[] | (map(.current_runs) | add | tostring) + " " + (map(.current_successes) | add | tostring) + " " + .[0].platform' | sort -n
1 1 ["Platform:none","Architecture:ppc64le","NetworkStack:ipv4","Topology:ha"]
1 1 ["Platform:none","Architecture:s390x","NetworkStack:ipv4","Topology:ha"]
5 5 ["Platform:openstack","Architecture:amd64","NetworkStack:ipv4","Topology:ha"]
6 6 ["Platform:aws","Architecture:multi","NetworkStack:ipv4","Topology:ha"]
6 6 ["Platform:metal","Architecture:amd64","NetworkStack:ipv6","Topology:ha"]
7 7 ["Platform:metal","Architecture:amd64","NetworkStack:dual","Topology:ha"]
10 10 ["Platform:aws","Architecture:arm64","NetworkStack:ipv4","Topology:ha"]
11 11 ["Platform:gcp","Architecture:amd64","NetworkStack:ipv4","Topology:ha"]
12 12 ["Platform:azure","Architecture:amd64","NetworkStack:ipv4","Topology:ha"]
13 13 ["Platform:metal","Architecture:amd64","NetworkStack:ipv4","Topology:ha"]
14 14 ["Platform:aws","Architecture:amd64","NetworkStack:ipv4","Topology:single"]
17 17 ["Platform:aws","Architecture:amd64","NetworkStack:ipv4","Topology:ha"]
21 21 ["Platform:vsphere","Architecture:amd64","NetworkStack:ipv4","Topology:ha"]

As a platform-agnostic feature, it seems like we need these variants:

      {"Cloud":"aws","Architecture":"amd64","Topology":"ha"}  (and we have 17)
      {"Cloud":"azure","Architecture":"amd64","Topology":"ha"}  (and we have 12, a bit short of 14)
      {"Cloud":"gcp","Architecture":"amd64","Topology":"ha"}  (and we have 11, a bit short of 14)
      {"Cloud":"vsphere","Architecture":"amd64","Topology":"ha"}  (and we have 21)
      {"Cloud":"metal","Architecture":"amd64","Topology":"ha","NetworkStack":"ipv4"}  (and we have 13, one short of 14)
      {"Cloud":"metal","Architecture":"amd64","Topology":"ha","NetworkStack":"ipv6"}  (and we have 6, well short of 14)
      {"Cloud":"metal","Architecture":"amd64","Topology":"ha","NetworkStack":"dual"}  (and we have 7, well short of 14)
      {"Cloud":"aws","Architecture":"amd64","Topology":"single"}  (and we have 14)
  • Test results are taken from the last 7 days if the test was run at least 14 times during that period. Otherwise, data from the last 14 days is used.

The tests are still less than a week old, so this isn't relevant.

  • Test flakes (even if the test eventually passes on a retry) are considered failures and negatively impact the pass rate.

Every test-case has a 100% pass rate, so this isn't relevant.

So Azure, GCP, and metal are all short. But given this is platform-agnostic code, and the success rate so far is 100% across all variants, I'm confident enough to drop the guard now. Waiting another week would not be wrong either.

wking added 2 commits August 13, 2025 13:44
When I added this option in db01005
(pkg/cli/admin/upgrade/recommend: Add end-to-end output test coverage,
2024-09-24, openshift#1885), I'd been planning on dropping it at GA.  But given
the current focus on testing, I'm going to keep it through GA.  This
commit hides the test-focused option, to avoid distracting end users
with internal knobs they are unlikely to need access to.
Most OpenShift feature gates are tracked in openshift/api.  This one
is just the local environment variable, but we still want to meet the
usual tech-preview-to-GA promotion criteria [1]:

* Tests must contain either [OCPFeatureGate:<FeatureGateName>] or the
  standard upstream [FeatureGate:<FeatureGateName>].

  This one isn't relevant to this feature, because the test-cases are
  ungated to run the tech-preview functionality against production
  clusters [2].  As docs say [3]:

    Your cluster does not need to be a Technology Preview-enabled
    cluster in order for you to use the 'oc adm upgrade recommend'
    command.

* There must be at least five tests for each FeatureGate.

  Sippy returns exactly five [4]:

    [Serial][sig-cli] oc adm upgrade recommend runs successfully, even without upstream OpenShift Update Service customization [Suite:openshift/conformance/serial]
    [Serial][sig-cli] oc adm upgrade recommend runs successfully with an empty channel [Suite:openshift/conformance/serial]
    [Serial][sig-cli] oc adm upgrade recommend When the update service has conditional recommendations runs successfully when listing all updates [Suite:openshift/conformance/serial]
    [Serial][sig-cli] oc adm upgrade recommend When the update service has conditional recommendations runs successfully with conditional recommendations to the --version target [Suite:openshift/conformance/serial]
    [Serial][sig-cli] oc adm upgrade recommend When the update service has no recommendations runs successfully [Suite:openshift/conformance/serial]

* Every test must be run on every TechPreview platform we have jobs
  for. (Ask for an exception if your feature doesn't support a
  variant.)
* Every test must run at least 14 times on every platform/variant.
* Every test must pass at least 95% of the time on every
  platform/variant.

    Checking on one of the least-run test-cases ("... with conditional
    recommendations to the --version target"), with 124 runs [5]:

      $ curl -s 'https://sippy.dptools.openshift.org/api/tests?release=4.20&filter=%7B%22items%22%3A%5B%7B%22columnField%22%3A%22name%22%2C%22operatorValue%22%3A%22equals%22%2C%22value%22%3A%22%5BSerial%5D%5Bsig-cli%5D%20oc%20adm%20upgrade%20recommend%20When%20the%20update%20service%20has%20conditional%20recommendations%20runs%20successfully%20with%20conditional%20recommendations%20to%20the%20--version%20target%20%5BSuite%3Aopenshift%2Fconformance%2Fserial%5D%22%7D%2C%7B%22columnField%22%3A%22variants%22%2C%22not%22%3Atrue%2C%22operatorValue%22%3A%22contains%22%2C%22value%22%3A%22never-stable%22%7D%2C%7B%22columnField%22%3A%22variants%22%2C%22not%22%3Atrue%2C%22operatorValue%22%3A%22contains%22%2C%22value%22%3A%22aggregated%22%7D%5D%2C%22linkOperator%22%3A%22and%22%7D&period=default&sortField=delta_from_passing_average&sort=asc&collapse=false' | jq -r '[.[] | select(.variants) | ([.variants[] | select(startswith("Platform:") or startswith("Architecture:") or startswith("Topology:") or startswith("NetworkStack:"))] | tostring) as $platform | {current_runs, current_successes, platform: $platform}] | group_by(.platform)[] | (map(.current_runs) | add | tostring) + " " + (map(.current_successes) | add | tostring) + " " + .[0].platform' | sort -n
      1 1 ["Platform:none","Architecture:ppc64le","NetworkStack:ipv4","Topology:ha"]
      1 1 ["Platform:none","Architecture:s390x","NetworkStack:ipv4","Topology:ha"]
      5 5 ["Platform:openstack","Architecture:amd64","NetworkStack:ipv4","Topology:ha"]
      6 6 ["Platform:aws","Architecture:multi","NetworkStack:ipv4","Topology:ha"]
      6 6 ["Platform:metal","Architecture:amd64","NetworkStack:ipv6","Topology:ha"]
      7 7 ["Platform:metal","Architecture:amd64","NetworkStack:dual","Topology:ha"]
      10 10 ["Platform:aws","Architecture:arm64","NetworkStack:ipv4","Topology:ha"]
      11 11 ["Platform:gcp","Architecture:amd64","NetworkStack:ipv4","Topology:ha"]
      12 12 ["Platform:azure","Architecture:amd64","NetworkStack:ipv4","Topology:ha"]
      13 13 ["Platform:metal","Architecture:amd64","NetworkStack:ipv4","Topology:ha"]
      14 14 ["Platform:aws","Architecture:amd64","NetworkStack:ipv4","Topology:single"]
      17 17 ["Platform:aws","Architecture:amd64","NetworkStack:ipv4","Topology:ha"]
      21 21 ["Platform:vsphere","Architecture:amd64","NetworkStack:ipv4","Topology:ha"]

    As a platform-agnostic feature, it seems like we need these variants [6]:

      {"Cloud":"aws","Architecture":"amd64","Topology":"ha"}  (and we have 17)
      {"Cloud":"azure","Architecture":"amd64","Topology":"ha"}  (and we have 12, a bit short of 14)
      {"Cloud":"gcp","Architecture":"amd64","Topology":"ha"}  (and we have 11, a bit short of 14)
      {"Cloud":"vsphere","Architecture":"amd64","Topology":"ha"}  (and we have 21)
      {"Cloud":"metal","Architecture":"amd64","Topology":"ha","NetworkStack":"ipv4"}  (and we have 13, one short of 14)
      {"Cloud":"metal","Architecture":"amd64","Topology":"ha","NetworkStack":"ipv6"}  (and we have 6, well short of 14)
      {"Cloud":"metal","Architecture":"amd64","Topology":"ha","NetworkStack":"dual"}  (and we have 7, well short of 14)
      {"Cloud":"aws","Architecture":"amd64","Topology":"single"}  (and we have 14)

* Test results are taken from the last 7 days if the test was run at
  least 14 times during that period. Otherwise, data from the last 14
  days is used.

    The tests are still less than a week old, so this isn't relevant.

* Test flakes (even if the test eventually passes on a retry) are
  considered failures and negatively impact the pass rate.

    Every test-case has a 100% pass rate [4], so this isn't relevant.

So Azure, GCP, and metal are all short.  But given this is
platform-agnostic code, and the success rate so far is 100% across all
variants, I'm confident enough to drop the guard now.  Waiting another
week would not be wrong either.

[1]: https://github.com/openshift/api/blob/88b2b21555f3c12755740b197cbd5b9b4ca11e19/README.md#defining-featuregate-e2e-tests
[2]: openshift/origin#29831
[3]: https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/updating_clusters/performing-a-cluster-update#update-upgrading-oc-adm-upgrade-recommend_updating-cluster-cli
[4]: https://sippy.dptools.openshift.org/sippy-ng/tests/4.20?filters=%257B%2522items%2522%253A%255B%257B%2522columnField%2522%253A%2522current_runs%2522%252C%2522operatorValue%2522%253A%2522%253E%253D%2522%252C%2522value%2522%253A%25227%2522%257D%252C%257B%2522columnField%2522%253A%2522variants%2522%252C%2522not%2522%253Atrue%252C%2522operatorValue%2522%253A%2522contains%2522%252C%2522value%2522%253A%2522never-stable%2522%257D%252C%257B%2522columnField%2522%253A%2522variants%2522%252C%2522not%2522%253Atrue%252C%2522operatorValue%2522%253A%2522contains%2522%252C%2522value%2522%253A%2522aggregated%2522%257D%252C%257B%2522columnField%2522%253A%2522current_flake_percentage%2522%252C%2522not%2522%253Atrue%252C%2522operatorValue%2522%253A%2522%253D%2522%252C%2522value%2522%253A%2522100%2522%257D%252C%257B%2522id%2522%253A99%252C%2522columnField%2522%253A%2522name%2522%252C%2522operatorValue%2522%253A%2522contains%2522%252C%2522value%2522%253A%2522oc%2520adm%2520upgrade%2520recommend%2522%257D%255D%252C%2522linkOperator%2522%253A%2522and%2522%257D&sort=asc&sortField=net_improvement
[5]: https://sippy.dptools.openshift.org/sippy-ng/tests/4.20/analysis?filters=%7B%22items%22%3A%5B%7B%22columnField%22%3A%22name%22%2C%22operatorValue%22%3A%22equals%22%2C%22value%22%3A%22%5BSerial%5D%5Bsig-cli%5D%20oc%20adm%20upgrade%20recommend%20When%20the%20update%20service%20has%20conditional%20recommendations%20runs%20successfully%20with%20conditional%20recommendations%20to%20the%20--version%20target%20%5BSuite%3Aopenshift%2Fconformance%2Fserial%5D%22%7D%2C%7B%22columnField%22%3A%22variants%22%2C%22not%22%3Atrue%2C%22operatorValue%22%3A%22contains%22%2C%22value%22%3A%22never-stable%22%7D%2C%7B%22columnField%22%3A%22variants%22%2C%22not%22%3Atrue%2C%22operatorValue%22%3A%22contains%22%2C%22value%22%3A%22aggregated%22%7D%5D%2C%22linkOperator%22%3A%22and%22%7D&pageSize=50&test=%5BSerial%5D%5Bsig-cli%5D%20oc%20adm%20upgrade%20recommend%20When%20the%20update%20service%20has%20conditional%20recommendations%20runs%20successfully%20with%20conditional%20recommendations%20to%20the%20--version%20target%20%5BSuite%3Aopenshift%2Fconformance%2Fserial%5D
[6]: https://github.com/openshift/api/blob/88b2b21555f3c12755740b197cbd5b9b4ca11e19/tools/codegen/cmd/featuregate-test-analyzer.go#L332-L375
@openshift-ci-robot
Copy link

openshift-ci-robot commented Aug 13, 2025

@wking: This pull request references OTA-1560 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.

Details

In response to this:

Most OpenShift feature gates are tracked in openshift/api. This one is just the local environment variable, but we still want to meet the usual tech-preview-to-GA promotion criteria:

  • Tests must contain either [OCPFeatureGate:<FeatureGateName>] or the standard upstream [FeatureGate:<FeatureGateName>].

This one isn't relevant to this feature, because the test-cases are ungated to run the tech-preview functionality against production clusters (openshift/origin#29831). As docs say:

Your cluster does not need to be a Technology Preview-enabled cluster in order for you to use the oc adm upgrade recommend command.

  • There must be at least five tests for each FeatureGate.

Sippy returns exactly five:

   [Serial][sig-cli] oc adm upgrade recommend runs successfully, even without upstream OpenShift Update Service customization [Suite:openshift/conformance/serial]
   [Serial][sig-cli] oc adm upgrade recommend runs successfully with an empty channel [Suite:openshift/conformance/serial]
   [Serial][sig-cli] oc adm upgrade recommend When the update service has conditional recommendations runs successfully when listing all updates [Suite:openshift/conformance/serial]
   [Serial][sig-cli] oc adm upgrade recommend When the update service has conditional recommendations runs successfully with conditional recommendations to the --version target [Suite:openshift/conformance/serial]
   [Serial][sig-cli] oc adm upgrade recommend When the update service has no recommendations runs successfully [Suite:openshift/conformance/serial]
  • Every test must be run on every TechPreview platform we have jobs for. (Ask for an exception if your feature doesn't support a variant.)
  • Every test must run at least 14 times on every platform/variant.
  • Every test must pass at least 95% of the time on every platform/variant.

Checking on one of the least-run test-cases (... with conditional recommendations to the --version target), with 124 runs:

$ curl -s 'https://sippy.dptools.openshift.org/api/tests?release=4.20&filter=%7B%22items%22%3A%5B%7B%22columnField%22%3A%22name%22%2C%22operatorValue%22%3A%22equals%22%2C%22value%22%3A%22%5BSerial%5D%5Bsig-cli%5D%20oc%20adm%20upgrade%20recommend%20When%20the%20update%20service%20has%20conditional%20recommendations%20runs%20successfully%20with%20conditional%20recommendations%20to%20the%20--version%20target%20%5BSuite%3Aopenshift%2Fconformance%2Fserial%5D%22%7D%2C%7B%22columnField%22%3A%22variants%22%2C%22not%22%3Atrue%2C%22operatorValue%22%3A%22contains%22%2C%22value%22%3A%22never-stable%22%7D%2C%7B%22columnField%22%3A%22variants%22%2C%22not%22%3Atrue%2C%22operatorValue%22%3A%22contains%22%2C%22value%22%3A%22aggregated%22%7D%5D%2C%22linkOperator%22%3A%22and%22%7D&period=default&sortField=delta_from_passing_average&sort=asc&collapse=false' | jq -r '[.[] | select(.variants) | ([.variants[] | select(startswith("Platform:") or startswith("Architecture:") or startswith("Topology:") or startswith("NetworkStack:"))] | tostring) as $platform | {current_runs, current_successes, platform: $platform}] | group_by(.platform)[] | (map(.current_runs) | add | tostring) + " " + (map(.current_successes) | add | tostring) + " " + .[0].platform' | sort -n
1 1 ["Platform:none","Architecture:ppc64le","NetworkStack:ipv4","Topology:ha"]
1 1 ["Platform:none","Architecture:s390x","NetworkStack:ipv4","Topology:ha"]
5 5 ["Platform:openstack","Architecture:amd64","NetworkStack:ipv4","Topology:ha"]
6 6 ["Platform:aws","Architecture:multi","NetworkStack:ipv4","Topology:ha"]
6 6 ["Platform:metal","Architecture:amd64","NetworkStack:ipv6","Topology:ha"]
7 7 ["Platform:metal","Architecture:amd64","NetworkStack:dual","Topology:ha"]
10 10 ["Platform:aws","Architecture:arm64","NetworkStack:ipv4","Topology:ha"]
11 11 ["Platform:gcp","Architecture:amd64","NetworkStack:ipv4","Topology:ha"]
12 12 ["Platform:azure","Architecture:amd64","NetworkStack:ipv4","Topology:ha"]
13 13 ["Platform:metal","Architecture:amd64","NetworkStack:ipv4","Topology:ha"]
14 14 ["Platform:aws","Architecture:amd64","NetworkStack:ipv4","Topology:single"]
17 17 ["Platform:aws","Architecture:amd64","NetworkStack:ipv4","Topology:ha"]
21 21 ["Platform:vsphere","Architecture:amd64","NetworkStack:ipv4","Topology:ha"]

As a platform-agnostic feature, it seems like we need these variants:

     {"Cloud":"aws","Architecture":"amd64","Topology":"ha"}  (and we have 17)
     {"Cloud":"azure","Architecture":"amd64","Topology":"ha"}  (and we have 12, a bit short of 14)
     {"Cloud":"gcp","Architecture":"amd64","Topology":"ha"}  (and we have 11, a bit short of 14)
     {"Cloud":"vsphere","Architecture":"amd64","Topology":"ha"}  (and we have 21)
     {"Cloud":"metal","Architecture":"amd64","Topology":"ha","NetworkStack":"ipv4"}  (and we have 13, one short of 14)
     {"Cloud":"metal","Architecture":"amd64","Topology":"ha","NetworkStack":"ipv6"}  (and we have 6, well short of 14)
     {"Cloud":"metal","Architecture":"amd64","Topology":"ha","NetworkStack":"dual"}  (and we have 7, well short of 14)
     {"Cloud":"aws","Architecture":"amd64","Topology":"single"}  (and we have 14)
  • Test results are taken from the last 7 days if the test was run at least 14 times during that period. Otherwise, data from the last 14 days is used.

The tests are still less than a week old, so this isn't relevant.

  • Test flakes (even if the test eventually passes on a retry) are considered failures and negatively impact the pass rate.

Every test-case has a 100% pass rate, so this isn't relevant.

So Azure, GCP, and metal are all short. But given this is platform-agnostic code, and the success rate so far is 100% across all variants, I'm confident enough to drop the guard now. Waiting another week would not be wrong either.

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 Aug 13, 2025
@openshift-ci openshift-ci bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Aug 13, 2025
@JianLi-RH
Copy link

Test passed.
Here are my test steps:

  1. Created a new OC client and make sure there are no feature gates exported:
[jianl@jianl-thinkpadt14gen4 420]$ env | grep "OC_ENABLE_CMD_UPGRADE_RECOMMEND"
[jianl@jianl-thinkpadt14gen4 420]$ ./oc version
Client Version: oc_ga
Kustomize Version: v5.6.0
Server Version: 4.20.0-0.nightly-2025-08-12-153542
Kubernetes Version: v1.33.3
[jianl@jianl-thinkpadt14gen4 420]$ 
  1. oc adm upgrade --help has option
[jianl@jianl-thinkpadt14gen4 420]$ ./oc adm upgrade --help | grep -A3 -B3 "Available Commands"
  # Update to the latest version
  oc adm upgrade --to-latest=true

Available Commands:
  channel       Set or clear the update channel
  recommend     Displays cluster update recommendations.

[jianl@jianl-thinkpadt14gen4 420]$
  1. oc adm upgrade recommend --help has options
[jianl@jianl-thinkpadt14gen4 420]$ ./oc adm upgrade recommend --help
Displays cluster update recommendations.

 This subcommand is read-only and does not affect the state of the cluster. To request an update, use the 'oc adm
upgrade' subcommand.

 By default, this command displays recent potential target releases.  Use '--version VERSION' to display context for a
particular target release.  Use '--show-outdated-releases' to display all known targets, including older releases.

Options:
    --show-outdated-releases=false:
	Display additional older releases.  These releases may be exposed to known issues which have been fixed in
	more recent releases.  But all updates will contain fixes not present in your current release.

    --version='':
	Select a particular target release to display by version.

Usage:
  oc adm upgrade recommend [flags] [options]

Use "oc options" for a list of global command-line options (applies to all commands).
[jianl@jianl-thinkpadt14gen4 420]$ 
  1. oc adm upgrade recommend should show versions:
[jianl@jianl-thinkpadt14gen4 420]$ ./oc adm upgrade recommend
Upstream update service: https://raw.githubusercontent.com/JianLi-RH/ota/refs/heads/main/OCP-82705.json
Channel: channel-a

Updates to 4.999:

  Version: 4.999.999
  Image: quay.io/openshift-release-dev/ocp-release@sha256:9d24a8cdd67b8f18c99547d5910e4863e7aab5bd888e26670a00dbda0a9d4687
  Reason: MultipleReasons
  Message: Too many CI failures on this release, so do not update to it https://amd64.ocp.releases.ci.openshift.org/releasestream/4.19.0-0.nightly/release/4.19.0-0.nightly-2025-06-16-060026
  
  On clusters on default invoker user, this imaginary bug can happen. https://bug.example.com/a

  VERSION     ISSUES
  4.999.998   no known issues relevant to this cluster
[jianl@jianl-thinkpadt14gen4 420]$ 
[jianl@jianl-thinkpadt14gen4 420]$ 
[jianl@jianl-thinkpadt14gen4 420]$ ./oc adm upgrade recommend --show-outdated-releases
Upstream update service: https://raw.githubusercontent.com/JianLi-RH/ota/refs/heads/main/OCP-82705.json
Channel: channel-a

Updates to 4.999:
  VERSION     ISSUES
  4.999.999   MultipleReasons
  4.999.998   no known issues relevant to this cluster
[jianl@jianl-thinkpadt14gen4 420]$ 
  1. oc adm upgrade recommend --version works fine

To a version which has risks

[jianl@jianl-thinkpadt14gen4 420]$ ./oc adm upgrade recommend --version 4.999.999
Upstream update service: https://raw.githubusercontent.com/JianLi-RH/ota/refs/heads/main/OCP-82705.json
Channel: channel-a

Update to 4.999.999 Recommended=False:
Image: quay.io/openshift-release-dev/ocp-release@sha256:9d24a8cdd67b8f18c99547d5910e4863e7aab5bd888e26670a00dbda0a9d4687
Release URL: https://amd64.ocp.releases.ci.openshift.org/releasestream/4-stable/release/4.999.999
Reason: MultipleReasons
Message: Too many CI failures on this release, so do not update to it https://amd64.ocp.releases.ci.openshift.org/releasestream/4.19.0-0.nightly/release/4.19.0-0.nightly-2025-06-16-060026
  
  On clusters on default invoker user, this imaginary bug can happen. https://bug.example.com/a
[jianl@jianl-thinkpadt14gen4 420]$ 

To a version which do not have risk

[jianl@jianl-thinkpadt14gen4 420]$ ./oc adm upgrade recommend --version 4.999.998
Upstream update service: https://raw.githubusercontent.com/JianLi-RH/ota/refs/heads/main/OCP-82705.json
Channel: channel-a

Update to 4.999.998 has no known issues relevant to this cluster.
Image: quay.io/openshift-release-dev/ocp-release@sha256:0dac222584991f89a123d85e8c3055f0056e5876fc209b8d4bea7a59e7504d59
Release URL: 
[jianl@jianl-thinkpadt14gen4 420]$ 

To an unknown version

[jianl@jianl-thinkpadt14gen4 420]$ ./oc adm upgrade recommend --version 4.999.997
Upstream update service: https://raw.githubusercontent.com/JianLi-RH/ota/refs/heads/main/OCP-82705.json
Channel: channel-a
error: no update to 4.999.997 available, so cannot display context for the requested release
[jianl@jianl-thinkpadt14gen4 420]$ 

@JianLi-RH
Copy link

/lgtm

@openshift-ci openshift-ci bot added the lgtm Indicates that a PR is ready to be merged. label Aug 14, 2025
@openshift-ci
Copy link
Contributor

openshift-ci bot commented Aug 14, 2025

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: JianLi-RH, wking

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details 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-robot
Copy link

/retest-required

Remaining retests: 0 against base HEAD daa66f5 and 2 for PR HEAD f907713 in total

@openshift-ci
Copy link
Contributor

openshift-ci bot commented Aug 14, 2025

@wking: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/security f907713 link false /test security
ci/prow/okd-scos-e2e-aws-ovn f907713 link false /test okd-scos-e2e-aws-ovn

Full PR test history. Your PR dashboard.

Details

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 c5c6334 into openshift:main Aug 14, 2025
15 of 17 checks passed
@openshift-bot
Copy link
Contributor

[ART PR BUILD NOTIFIER]

Distgit: openshift-enterprise-cli
This PR has been included in build openshift-enterprise-cli-container-v4.20.0-202508140915.p0.gc5c6334.assembly.stream.el9.
All builds following this will include this PR.

@openshift-bot
Copy link
Contributor

[ART PR BUILD NOTIFIER]

Distgit: ose-tools
This PR has been included in build ose-tools-container-v4.20.0-202508140915.p0.gc5c6334.assembly.stream.el9.
All builds following this will include this PR.

@openshift-bot
Copy link
Contributor

[ART PR BUILD NOTIFIER]

Distgit: openshift-enterprise-deployer
This PR has been included in build openshift-enterprise-deployer-container-v4.20.0-202508140915.p0.gc5c6334.assembly.stream.el9.
All builds following this will include this PR.

@openshift-bot
Copy link
Contributor

[ART PR BUILD NOTIFIER]

Distgit: ose-cli-artifacts
This PR has been included in build ose-cli-artifacts-container-v4.20.0-202508140915.p0.gc5c6334.assembly.stream.el9.
All builds following this will include this PR.

// TODO: We can remove this flag once the idea about `oc adm upgrade recommend` stabilizes and the command
// is promoted out of the OC_ENABLE_CMD_UPGRADE_RECOMMEND feature gate
flags.StringVar(&o.mockData.cvPath, "mock-clusterversion", "", "Path to a YAML ClusterVersion object to use for testing (will be removed later).")
flags.MarkHidden("mock-clusterversion")
Copy link
Member

Choose a reason for hiding this comment

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

Neat! TIL

@wking wking deleted the expose-oc-adm-upgrade-recommend branch August 14, 2025 18:01
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.

5 participants