Skip to content

[Draft] - bumping with o/api changes for new capabilities#10618

Open
miyadav wants to merge 2 commits into
openshift:mainfrom
miyadav:ocpcloud3368inst
Open

[Draft] - bumping with o/api changes for new capabilities#10618
miyadav wants to merge 2 commits into
openshift:mainfrom
miyadav:ocpcloud3368inst

Conversation

@miyadav

@miyadav miyadav commented Jun 11, 2026

Copy link
Copy Markdown
Member

bumping changes from my fork to add new capabilities
WIP - OCPCLOUD-3368
/hold

Generated by - claude-opus-4-6(2.1.169)

Summary by CodeRabbit

  • Chores
    • Updated Go module dependency resolution by adding a replace directive to redirect a referenced API package to an alternate source.
  • Tests
    • Updated GCP machine test expectations to omit a specific OS stream label from the expected machine metadata.

@openshift-ci openshift-ci Bot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Jun 11, 2026
@coderabbitai

coderabbitai Bot commented Jun 11, 2026

Copy link
Copy Markdown

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

The PR redirects Go module resolution for github.com/openshift/api to github.com/miyadav/api via a replace directive in go.mod, and updates GCP machine test helpers to remove the OSStreamLabelKey label from expected machine objects in alignment with the redirected module behavior.

Changes

Module Redirect and Test Alignment

Layer / File(s) Summary
Openshift API module redirect
go.mod
A replace directive maps github.com/openshift/api to github.com/miyadav/api at pseudo-version v0.0.0-20260618103613-8816b16ded02, changing module resolution source.
GCP machine test helpers – OS stream label removal
pkg/asset/machines/gcp/gcpmachines_test.go
Test helper functions getBaseGCPMachine() and getBaseCapiMachine() no longer set the types.OSStreamLabelKey entry in ObjectMeta.Labels, reducing expected machine label sets to align with the redirected module.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

🚥 Pre-merge checks | ✅ 14 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Title check ❓ Inconclusive Title mentions 'bumping with o/api changes' which relates to the go.mod replace directive change, but is vague about what 'new capabilities' means and doesn't clearly convey the core change of redirecting github.com/openshift/api imports. Clarify the title with specifics, e.g., 'Redirect openshift/api imports to fork for OCPCLOUD-3368' or describe the concrete purpose beyond generic 'new capabilities'.
✅ Passed checks (14 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Stable And Deterministic Test Names ✅ Passed Test file uses standard Go testing with stable, static test names (no Ginkgo syntax). All test case names like "base configuration" and "serviceaccount" are static strings; dynamic values appear on...
Test Structure And Quality ✅ Passed Test file uses standard Go testing with testify, not Ginkgo. The custom check's requirements (It blocks, BeforeEach/AfterEach, Eventually/Consistently) don't apply.
Microshift Test Compatibility ✅ Passed PR contains no new Ginkgo e2e tests. Modified test file uses standard Go testing (t *testing.T), not Ginkgo, so MicroShift compatibility check is not applicable.
Single Node Openshift (Sno) Test Compatibility ✅ Passed This is the openshift/installer repository containing unit/integration tests, not an e2e test suite. No Ginkgo e2e tests (It/Describe/Context/When patterns) are present in this codebase. The PR onl...
Topology-Aware Scheduling Compatibility ✅ Passed PR modifies only go.mod (dependency redirection) and test file gcpmachines_test.go. No deployment manifests, operator code, or scheduling constraints are introduced.
Ote Binary Stdout Contract ✅ Passed PR changes do not introduce stdout writes in process-level code; go.mod change is import redirection only, and test file change removes code rather than adding stdout-writing code.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed PR adds no new Ginkgo e2e tests. Only changes are: (1) go.mod replace directive for github.com/openshift/api, (2) gcpmachines_test.go label removal in existing unit tests. Check is not applicable.
No-Weak-Crypto ✅ Passed PR contains only a go.mod replace directive and a test label removal. No weak crypto algorithms (MD5, SHA1, DES, RC4, 3DES, Blowfish, ECB) or custom crypto implementations detected in changed files.
Container-Privileges ✅ Passed No privileged container configurations (privileged:true, hostPID, hostNetwork, hostIPC, SYS_ADMIN, allowPrivilegeEscalation, or runAsRoot) found in any files modified by this PR.
No-Sensitive-Data-In-Logs ✅ Passed No logging statements found in modified files. go.mod contains only module configuration. gcpmachines_test.go contains only test data construction with no logging code.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands.

@openshift-ci openshift-ci Bot requested review from bfournie and rwsu June 11, 2026 09:36
@openshift-ci openshift-ci Bot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Jun 13, 2026
@miyadav miyadav force-pushed the ocpcloud3368inst branch from 765040c to 6a3bb87 Compare June 15, 2026 06:42
@openshift-ci openshift-ci Bot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Jun 15, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@go.mod`:
- Line 385: Replace the personal fork reference (miyadav/api) in the replace
directive on line 385 of go.mod with the official upstream
github.com/openshift/api, or if the fork is truly necessary, add a detailed
inline comment immediately above the replace directive that documents: (1) the
specific reason the fork is required with reference to OCPCLOUD-3368 and
openshift/api PR `#2884`, (2) the planned timeline for upstreaming this change or
confirmation of permanent fork maintenance, and (3) verification that the fork's
API remains compatible with all downstream consumers such as the operator/v1
types used in pkg/types/conversion/installconfig.go. Additionally, replace the
pseudo-version (v0.0.0-20260610140604-...) with a stable, production-ready
version tag from the fork once a decision is made to proceed, or reconsider
using a feature gate or temporary branch instead of a permanent replace
directive if this is experimental work.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: a598b649-d9e9-4199-9421-eb25679ce0f3

📥 Commits

Reviewing files that changed from the base of the PR and between 7746340 and 6a3bb87.

⛔ Files ignored due to path filters (4)
  • go.sum is excluded by !**/*.sum
  • vendor/github.com/openshift/api/config/v1/types_cluster_version.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/openshift/api/features/features.go is excluded by !vendor/**, !**/vendor/**
  • vendor/modules.txt is excluded by !vendor/**, !**/vendor/**
📒 Files selected for processing (1)
  • go.mod

Comment thread go.mod Outdated
sigs.k8s.io/cluster-api-provider-azure => github.com/mboersma/cluster-api-provider-azure v0.3.1-0.20251030205607-3161b9cc8d3e
)

replace github.com/openshift/api => github.com/miyadav/api v0.0.0-20260610140604-79a53623c27b

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical | ⚡ Quick win

Replace directive redirects to personal fork at pseudo-version; blocks production merge.

Line 385 introduces three critical supply chain concerns:

  1. Personal fork (miyadav/api) instead of upstream: This breaks the installer's dependency contract and introduces supply chain attack risk. Why not use the official github.com/openshift/api?

  2. Pseudo-version (v0.0.0-20260610140604-...) in production code: Per coding guidelines, no pre-release versions should be used in production. Pseudo-versions are development-only and cannot be reliably reproduced by consumers. The version predates the original (140604 vs 192510), suggesting the fork is behind upstream.

  3. Missing justification: Coding guidelines require "justify need" for new deps. Only the PR description mentions OCPCLOUD-3368 and openshift/api PR #2884. This must be documented in a code comment explaining (a) why the fork is necessary, (b) when/whether it will be upstreamed, and (c) how API compatibility is maintained.

Before this PR merges from draft:

  • Add an inline comment explaining the fork's purpose and timeline.
  • Verify the fork API is compatible with downstream consumers (e.g., github.com/openshift/api/operator/v1 usage in pkg/types/conversion/installconfig.go).
  • Confirm whether this fork will be permanently maintained or upstreamed.
  • If this is experimental, consider using a feature branch or feature gate rather than a permanent replace directive.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@go.mod` at line 385, Replace the personal fork reference (miyadav/api) in the
replace directive on line 385 of go.mod with the official upstream
github.com/openshift/api, or if the fork is truly necessary, add a detailed
inline comment immediately above the replace directive that documents: (1) the
specific reason the fork is required with reference to OCPCLOUD-3368 and
openshift/api PR `#2884`, (2) the planned timeline for upstreaming this change or
confirmation of permanent fork maintenance, and (3) verification that the fork's
API remains compatible with all downstream consumers such as the operator/v1
types used in pkg/types/conversion/installconfig.go. Additionally, replace the
pseudo-version (v0.0.0-20260610140604-...) with a stable, production-ready
version tag from the fork once a decision is made to proceed, or reconsider
using a feature gate or temporary branch instead of a permanent replace
directive if this is experimental work.

Source: Coding guidelines

@miyadav miyadav force-pushed the ocpcloud3368inst branch from 6a3bb87 to 948421b Compare June 15, 2026 07:22
@openshift-ci

openshift-ci Bot commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign rwsu for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found 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

@miyadav miyadav force-pushed the ocpcloud3368inst branch 2 times, most recently from 54ff6e2 to aa44a67 Compare June 24, 2026 10:08
@miyadav

miyadav commented Jun 24, 2026

Copy link
Copy Markdown
Member Author

/retest-required

@miyadav

miyadav commented Jun 24, 2026

Copy link
Copy Markdown
Member Author

/test unit

@openshift-ci

openshift-ci Bot commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

@miyadav: 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/gcp-custom-endpoints-proxy-wif 54ff6e2 link false /test gcp-custom-endpoints-proxy-wif
ci/prow/e2e-gcp-ovn-byo-vpc 54ff6e2 link false /test e2e-gcp-ovn-byo-vpc
ci/prow/e2e-gcp-custom-dns 54ff6e2 link false /test e2e-gcp-custom-dns
ci/prow/e2e-gcp-custom-endpoints 54ff6e2 link false /test e2e-gcp-custom-endpoints
ci/prow/e2e-gcp-xpn-dedicated-dns-project 54ff6e2 link false /test e2e-gcp-xpn-dedicated-dns-project
ci/prow/e2e-gcp-xpn-custom-dns 54ff6e2 link false /test e2e-gcp-xpn-custom-dns
ci/prow/e2e-gcp-ovn 54ff6e2 link true /test e2e-gcp-ovn
ci/prow/e2e-gcp-ovn-xpn 54ff6e2 link false /test e2e-gcp-ovn-xpn
ci/prow/unit aa44a67 link true /test unit

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.

… which

  gates CompatibilityRequirements and ClusterAPI capabilities behind
  CRDCompatibilityRequirementOperator using FeatureGateAwareEnum.
  Regenerate the install-config CRD accordingly.

vendor changes

osstream defaultfeature test revert
generated by Claude
@patrickdillon

Copy link
Copy Markdown
Contributor

@coderabbitai why are unit tests (ci/prow/unit) failing?

@coderabbitai

coderabbitai Bot commented Jun 25, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo="openshift/installer"
pr="10618"

echo "== PR head SHA =="
head_sha=$(gh pr view "$pr" --repo "$repo" --json headRefOid --jq '.headRefOid')
echo "$head_sha"

echo
echo "== Combined status contexts =="
gh api "repos/$repo/commits/$head_sha/status" --jq '
  .statuses[]
  | {context, state, description, target_url, updated_at}
'

echo
echo "== ci/prow/unit status =="
gh api "repos/$repo/commits/$head_sha/status" --jq '
  .statuses[]
  | select(.context == "ci/prow/unit")
  | {context, state, description, target_url, updated_at, creator: .creator.login}
'

echo
echo "== Check suites / check runs on head commit =="
gh api "repos/$repo/commits/$head_sha/check-runs" --jq '
  .check_runs[]
  | {name, status, conclusion, details_url, started_at, completed_at}
'

Length of output: 6627


🏁 Script executed:

#!/bin/bash
set -euo pipefail

url="https://prow.ci.openshift.org/view/gs/test-platform-results/pr-logs/pull/openshift_installer/10618/pull-ci-openshift-installer-main-unit/2069808096678514688"

echo "== Prow page title / artifact hints =="
curl -fsSL "$url" | rg -n "Artifacts|build-log|junit|spyglass|gcsweb|test-platform-results" -C2 || true

echo
echo "== Extract candidate artifact URLs from page =="
curl -fsSL "$url" \
  | rg -o 'https://gcsweb\.ci\.openshift\.org/gcs/test-platform-results[^"]+|/view/gs/test-platform-results[^"]+|/gs/test-platform-results[^"]+' \
  | head -n 50 || true

base="https://gcsweb.ci.openshift.org/gcs/test-platform-results/pr-logs/pull/openshift_installer/10618/pull-ci-openshift-installer-main-unit/2069808096678514688/artifacts"
echo
echo "== Try common artifact names =="
for path in \
  "build-log.txt" \
  "junit_operator.xml" \
  "junit.xml" \
  "junit_unit.xml" \
  "junit_runner.xml" \
  "junit/junit.xml"
do
  echo "--- $base/$path"
  code=$(curl -s -o /tmp/prow_artifact.$$ -w "%{http_code}" "$base/$path" || true)
  echo "HTTP $code"
  if [ "$code" = "200" ]; then
    echo "First 80 lines:"
    sed -n '1,80p' /tmp/prow_artifact.$$
  fi
done

echo
echo "== If build-log exists, grep failures =="
code=$(curl -s -o /tmp/build-log.$$ -w "%{http_code}" "$base/build-log.txt" || true)
if [ "$code" = "200" ]; then
  rg -n "FAIL|--- FAIL:|panic:|Error:|fatal|undefined:|cannot use|mismatch|expected|got:" /tmp/build-log.$$ -C3 | head -n 200 || true
fi

Length of output: 5348


🏁 Script executed:

#!/bin/bash
set -euo pipefail

paths=(
  "pr-logs/pull/openshift_installer/10618/pull-ci-openshift-installer-main-unit/2069808096678514688/build-log.txt"
  "pr-logs/pull/openshift_installer/10618/pull-ci-openshift-installer-main-unit/2069808096678514688/artifacts/build-log.txt"
  "pr-logs/pull/openshift_installer/10618/pull-ci-openshift-installer-main-unit/2069808096678514688/artifacts/junit_operator.xml"
  "pr-logs/pull/openshift_installer/10618/pull-ci-openshift-installer-main-unit/2069808096678514688/prowjob_junit.xml"
)

bases=(
  "https://prow.ci.openshift.org/view/gs/test-platform-results"
  "https://prow.ci.openshift.org/gs/test-platform-results"
  "https://storage.googleapis.com/test-platform-results"
  "https://gcsweb-ci.apps.ci.l2s4.p1.openshiftapps.com/gcs/test-platform-results"
)

for base in "${bases[@]}"; do
  echo "== BASE: $base =="
  for rel in "${paths[@]}"; do
    url="$base/$rel"
    echo "--- $url"
    code=$(curl -L -sS -o /tmp/fetch.$$ -w "%{http_code}" "$url" || true)
    ctype=$(file -b --mime-type /tmp/fetch.$$ 2>/dev/null || true)
    echo "HTTP $code MIME ${ctype:-unknown}"
    if [[ "$code" == "200" ]]; then
      echo "First 40 lines:"
      sed -n '1,40p' /tmp/fetch.$$ | sed 's/\r$//'
      echo
    fi
  done
  echo
done

echo "== Probe artifact directory listing via listing hosts =="
for url in \
  "https://gcsweb-ci.apps.ci.l2s4.p1.openshiftapps.com/gcs/test-platform-results/pr-logs/pull/openshift_installer/10618/pull-ci-openshift-installer-main-unit/2069808096678514688/" \
  "https://storage.googleapis.com/test-platform-results/pr-logs/pull/openshift_installer/10618/pull-ci-openshift-installer-main-unit/2069808096678514688/" \
  "https://storage.googleapis.com/test-platform-results/pr-logs/pull/openshift_installer/10618/pull-ci-openshift-installer-main-unit/2069808096678514688/index.html"
do
  echo "--- $url"
  code=$(curl -L -sS -o /tmp/list.$$ -w "%{http_code}" "$url" || true)
  echo "HTTP $code"
  if [[ "$code" == "200" ]]; then
    rg -n "build-log|junit|artifacts|xml|txt|FAIL|failure" /tmp/list.$$ -C1 || sed -n '1,80p' /tmp/list.$$
  fi
done

Length of output: 36389


🏁 Script executed:

#!/bin/bash
set -euo pipefail

url="https://storage.googleapis.com/test-platform-results/pr-logs/pull/openshift_installer/10618/pull-ci-openshift-installer-main-unit/2069808096678514688/build-log.txt"

tmp=$(mktemp)
curl -L -fsSL "$url" -o "$tmp"

echo "== Failure excerpts =="
rg -n -C4 --color=never '--- FAIL:|FAIL\tgithub\.com/openshift/installer/pkg/types/validation|pkg/types/validation|expected|got:|Error:|panic:' "$tmp" | head -n 200 || true

echo
echo "== Last 200 lines of build log =="
tail -n 200 "$tmp"

Length of output: 27261



@patrickdillon ci/prow/unit is failing because the Go unit test run exits non-zero in github.com/openshift/installer/pkg/types/validation.

What the artifacts show:

  • Failing job: ci/prow/unit
  • Failed step: Run test unit - container test
  • Reported package failure:
    FAIL    github.com/openshift/installer/pkg/types/validation    0.546s
    
  • The pod/container then exits with code 1, so this is a real test failure, not a Prow infrastructure issue.

The warnings in the log about:

  • unable to parse version, defaulting to: 5.0.0
  • Release Image Architecture not detected

are present, but the actual fatal condition recorded by the job is still the failed test package above.

So the short answer is: the PR currently breaks tests under pkg/types/validation.

If you want, I can dig one step further and identify the exact failing test case/assertion inside that package.

@patrickdillon

Copy link
Copy Markdown
Contributor

@coderabbitai yes please explain the exact failing test

@coderabbitai

coderabbitai Bot commented Jun 25, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo="openshift/installer"
pr="10618"

echo "== PR head SHA =="
head_sha=$(gh pr view "$pr" --repo "$repo" --json headRefOid --jq '.headRefOid')
echo "$head_sha"

echo
echo "== ci/prow/unit status entry =="
gh api "repos/$repo/commits/$head_sha/status" --jq '
  .statuses[]
  | select(.context == "ci/prow/unit")
  | {context, state, description, target_url, updated_at}
'

job_url=$(gh api "repos/$repo/commits/$head_sha/status" --jq '
  .statuses[]
  | select(.context == "ci/prow/unit")
  | .target_url
' | head -n1)

echo
echo "== ci/prow/unit target URL =="
echo "$job_url"

job_id=$(printf '%s\n' "$job_url" | rg -o '[0-9]{10,}' | tail -n1 || true)
echo
echo "== Parsed job ID =="
echo "${job_id:-<none>}"

if [[ -z "${job_id:-}" ]]; then
  echo "Could not determine job ID from target URL" >&2
  exit 1
fi

base="https://storage.googleapis.com/test-platform-results/pr-logs/pull/openshift_installer/${pr}/pull-ci-openshift-installer-main-unit/${job_id}"
log="$(mktemp)"
curl -L -fsSL "$base/build-log.txt" -o "$log"

echo
echo "== Failure excerpts mentioning pkg/types/validation =="
rg -n -C6 --color=never \
  '--- FAIL:|FAIL\tgithub\.com/openshift/installer/pkg/types/validation|pkg/types/validation|panic:|expected|actual|got:' \
  "$log" | head -n 250 || true

echo
echo "== Last 120 lines of build-log.txt =="
tail -n 120 "$log"

echo
echo "== Test files under pkg/types/validation =="
fd -t f . pkg/types/validation || true

echo
echo "== AST outline for candidate test files =="
fd -t f '.*_test\.go' pkg/types/validation -x sh -c 'echo "--- $1"; ast-grep outline "$1" --view expanded || true' sh {}

echo
echo "== Search for failing test names in source =="
# Extract likely test names from the log and search for them in the repo.
rg -o '^--- FAIL: ([^(]+)' "$log" | sed 's/^--- FAIL: //' | sort -u | while read -r testname; do
  [[ -z "$testname" ]] && continue
  echo "--- searching for $testname"
  rg -n -C2 --fixed-strings "func ${testname}" pkg/types/validation || true
done

Length of output: 23003


🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo="openshift/installer"
pr="10618"

head_sha=$(gh pr view "$pr" --repo "$repo" --json headRefOid --jq '.headRefOid')
job_url=$(gh api "repos/$repo/commits/$head_sha/status" --jq '
  .statuses[] | select(.context == "ci/prow/unit") | .target_url
' | head -n1)
job_id=$(printf '%s\n' "$job_url" | rg -o '[0-9]{10,}' | tail -n1)

base="https://storage.googleapis.com/test-platform-results/pr-logs/pull/openshift_installer/${pr}/pull-ci-openshift-installer-main-unit/${job_id}"
log="$(mktemp)"
curl -L -fsSL "$base/build-log.txt" -o "$log"

echo "== Failure lines around TestFeatureGates in build log =="
grep -n -C8 -- 'TestFeatureGates\|--- FAIL:\|FAIL[[:space:]]\+github.com/openshift/installer/pkg/types/validation\|panic:\|expected\|actual\|got:' "$log" | head -n 200 || true

echo
echo "== Candidate junit artifacts =="
for path in \
  "artifacts/junit_operator.xml" \
  "artifacts/junit.xml" \
  "artifacts/junit_unit.xml" \
  "artifacts/junit_runner.xml" \
  "prowjob_junit.xml"
do
  url="$base/$path"
  code=$(curl -L -s -o /tmp/junit.$$ -w "%{http_code}" "$url" || true)
  echo "--- $path HTTP $code"
  if [[ "$code" == "200" ]]; then
    echo "Top failing testcases from $path:"
    python - <<'PY'
import xml.etree.ElementTree as ET
from pathlib import Path
p = Path('/tmp/junit.$$')
try:
    root = ET.parse(p).getroot()
except Exception as e:
    print(f"Could not parse XML: {e}")
    raise SystemExit(0)
for tc in root.iter('testcase'):
    failure = tc.find('failure')
    err = tc.find('error')
    if failure is not None or err is not None:
        node = failure if failure is not None else err
        print({
            "classname": tc.attrib.get("classname"),
            "name": tc.attrib.get("name"),
            "message": node.attrib.get("message"),
            "text": (node.text or "").strip()[:1000],
        })
PY
  fi
done

echo
echo "== Source: pkg/types/validation/featuregate_test.go =="
sed -n '1,260p' pkg/types/validation/featuregate_test.go

Length of output: 18476



@patrickdillon the exact failing test is:

  • TestFeatureGates
  • subtest: AWS_UserProvisionedDNS_is_not_allowed_without_Feature_Gates

Failure details from the unit job:

--- FAIL: TestFeatureGates (0.05s)
    --- FAIL: TestFeatureGates/AWS_UserProvisionedDNS_is_not_allowed_without_Feature_Gates (0.00s)
        featuregate_test.go:289:
            Error:       Expect "<nil>" to match "^platform.aws.userProvisionedDNS: Forbidden: this field is protected by the AWSClusterHostedDNSInstall feature gate which must be enabled through either the TechPreviewNoUpgrade or CustomNoUpgrade feature set$"

What that means:

  • The test sets platform.aws.userProvisionedDNS to enabled
  • it does not enable the required feature gate
  • the test expects validation to reject that config
  • but validation returned no error (nil)

So the regression is: pkg/types/validation is now allowing AWS.UserProvisionedDNS without the AWSClusterHostedDNSInstall gate, or the test expectation is stale after the API bump.

Relevant source:

  • pkg/types/validation/featuregate_test.go, Line 289
  • failing case name in that file: AWS UserProvisionedDNS is not allowed without Feature Gates

In short: this is a real validation behavior mismatch, not a Prow problem.

@miyadav miyadav force-pushed the ocpcloud3368inst branch from aa44a67 to 75c65d4 Compare June 25, 2026 16:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants