CORS-4510: Add GCD cluster profile#5261
Conversation
|
Pipeline controller notification For optional jobs, comment This repository is configured in: automatic mode |
📝 WalkthroughWalkthroughAdds a new exported constant ChangesGCD Cluster Profile Registration
Estimated code review effort🎯 2 (Simple) | ⏱️ ~5 minutes 🚥 Pre-merge checks | ✅ 16 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (16 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
|
Scheduling tests matching the |
|
/retest |
|
/test e2e |
|
/lgtm |
|
/retest e2e |
|
/test e2e |
|
/override ci/prow/e2e |
|
@Prucek: Overrode contexts on behalf of Prucek: ci/prow/e2e DetailsIn response to this:
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. |
Register the "gcd" cluster profile for testing OpenShift installations on Google Cloud Dedicated. Maps to the "gcp" cluster type and uses "gcd-quota-slice" for lease management. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
a3f44ae to
3d7ecc2
Compare
|
/retest-required |
|
/retest-required |
1 similar comment
|
/retest-required |
|
/hold Revision 3d7ecc2 was retested 3 times: holding |
|
/hold cancel We may need an override here :D |
|
/test e2e |
|
@coderabbitai why are the tests failing on this pr? |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
repo="openshift/ci-tools"
pr="5261"
echo "== PR status =="
gh pr view "$pr" --repo "$repo" --json number,state,isDraft,headRefName,baseRefName,statusCheckRollup \
--jq '{
number,
state,
isDraft,
headRefName,
baseRefName,
checks: (.statusCheckRollup // [] | map(
if has("workflowName") then
{
kind: "check",
name: ((.workflowName // "unknown") + " / " + (.name // "unknown")),
status,
conclusion,
detailsUrl
}
else
{
kind: "status",
name: (.context // "unknown"),
state,
targetUrl,
description
}
end
))
}'
echo
echo "== Failed / pending checks only =="
gh pr view "$pr" --repo "$repo" --json statusCheckRollup \
--jq '.statusCheckRollup // []
| map(
if has("workflowName") then
{
kind: "check",
name: ((.workflowName // "unknown") + " / " + (.name // "unknown")),
status,
conclusion,
detailsUrl
}
else
{
kind: "status",
name: (.context // "unknown"),
state,
targetUrl,
description
}
end
)
| map(select(
(.kind == "check" and ((.conclusion != "SUCCESS") or (.status != "COMPLETED")))
or
(.kind == "status" and (.state != "SUCCESS"))
))'
echo
echo "== Recent PR comments (last 20) =="
gh pr view "$pr" --repo "$repo" --comments --json comments \
--jq '.comments[-20:] | map({author: .author.login, createdAt, body})'Length of output: 13562 🏁 Script executed: #!/bin/bash
set -euo pipefail
urls=(
"https://prow.ci.openshift.org/view/gs/test-platform-results/pr-logs/pull/openshift_ci-tools/5261/pull-ci-openshift-ci-tools-main-breaking-changes/2069852764065763328"
"https://prow.ci.openshift.org/view/gs/test-platform-results/pr-logs/pull/openshift_ci-tools/5261/pull-ci-openshift-ci-tools-main-e2e/2070363820177494016"
"https://prow.ci.openshift.org/view/gs/test-platform-results/pr-logs/pull/openshift_ci-tools/5261/pull-ci-openshift-ci-tools-main-integration/2070337968417017856"
)
for url in "${urls[@]}"; do
echo "===== JOB: $url ====="
base="${url#https://prow.ci.openshift.org/view/gs/}"
gcs="https://gcsweb-ci.apps.ci.l2s4.p1.openshiftapps.com/gcs/${base}"
echo "GCS base: $gcs"
echo "-- finished.json --"
curl -fsSL "${gcs}/finished.json" | jq . || echo "finished.json unavailable"
echo "-- prowjob.json (subset) --"
curl -fsSL "${gcs}/prowjob.json" | jq '{state: .status.state, description: .status.description, url: .status.url, job: .spec.job, cluster: .spec.cluster}' || echo "prowjob.json unavailable"
echo "-- build-log error summary --"
tmp=$(mktemp)
if curl -fsSL "${gcs}/build-log.txt" -o "$tmp"; then
rg -n -i -C2 '(^E[0-9]{4} )|(error:)|(fail(ed|ure))|(panic:)|(timed? out)|(context deadline exceeded)|(no such host)|(connection refused)|(quota)|(boskos)|(unable to)|(cannot )' "$tmp" | tail -n 80 || true
echo "-- tail build-log --"
tail -n 80 "$tmp" || true
else
echo "build-log.txt unavailable"
fi
rm -f "$tmp"
echo
doneLength of output: 63518
So short version: not one root cause, and the visible failures do not point directly at the |
@patrickdillon the /release PR is depending on this one, what is the proper order to merge? os is there something I can split from that PR to make breaking-changes happy? |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: deepsm007, patrickdillon, Prucek, rochacbruno, tthvo 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 |
|
/override ci/prow/e2e |
|
@deepsm007: Overrode contexts on behalf of deepsm007: ci/prow/e2e, ci/prow/integration DetailsIn response to this:
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. |
|
/tide refresh |
|
/override ci/prow/breaking-changes |
|
@deepsm007: Overrode contexts on behalf of deepsm007: ci/prow/breaking-changes DetailsIn response to this:
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. |
|
/override ci/prow/images |
|
@deepsm007: Overrode contexts on behalf of deepsm007: ci/prow/images DetailsIn response to this:
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. |
|
/retitle CORS-4510: Add GCD cluster profile |
|
@rochacbruno: This pull request references CORS-4510 which is a valid jira issue. DetailsIn response to this:
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. |
Summary
ClusterProfileGCD("gcd") for Google Cloud DedicatedLeaseTypeFromClusterTypefor template-based test compatibilityContext
This is part of CORS-4508: setting up Workload Identity Federation authentication for the OpenShift installer on Google Cloud Dedicated (Berlin environment).
The corresponding openshift/release PR will add the cluster profile config, Boskos quota slices, secret bootstrap entry, and installer CI job configuration.
Generated with Claude Code
Summary
This PR extends OpenShift CI’s cluster profile support to include Google Cloud Dedicated (GCD) by introducing a new
gcdcluster profile in the CI API layer. CI jobs can now referencegcdas a first-class target, while the tooling reuses the existing Google Cloud (GCP) provider implementation under the hood.Changes
pkg/api/clusterprofile.go
ClusterProfileGCD("gcd").gcdin the list of supported cluster profiles (ClusterProfiles()).gcdis treated like the existing GCP-based cloud type.gcdtoLeaseTypeFromClusterTypeand wired the profile to a dedicated lease type:gcd-quota-slice.gcdcluster type.Impact
CI operators and job authors can configure and run tests against Google Cloud Dedicated clusters by selecting the new
gcdprofile, without duplicating provider logic. The implementation also ensures quota-slice lease handling works correctly for GCD (gcd-quota-slice), which is a prerequisite for the Berlin environment setup related to Workload Identity Federation authentication for the OpenShift installer (CORS-4508).Test/validation notes
The PR triggered end-to-end testing and retesting requests (
/test e2eand/retest e2e) and included coordination on CI overrides for e2e execution. An approval was provided after review and naming verification.