CORS-4510: Add GCD cluster profile#80743
Conversation
WalkthroughA new Changesgcd Cluster Profile Registration
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~3 minutes 🚥 Pre-merge checks | ✅ 15✅ Passed checks (15 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
|
@rochacbruno, Interacting with pj-rehearseComment: Once you are satisfied with the results of the rehearsals, comment: |
1 similar comment
|
@rochacbruno, Interacting with pj-rehearseComment: Once you are satisfied with the results of the rehearsals, comment: |
|
I wonder if we should scope this PR to just adding the cluster-profile. We can add the installer CI job in a follow-up 🤔 WDYT? |
|
@tthvo Good point. The CI tests are failing because the ci-tools PR (openshift/ci-tools#5261) needs to merge first to register the I'll split this into two PRs:
Will push an update shortly. |
|
@coderabbitai can you look at the details of the failing tests? |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
repo="openshift/release"
pr="80743"
echo "== PR overview =="
gh pr view "$pr" --repo "$repo" --json number,title,url,state,headRefName,baseRefName,statusCheckRollup \
--jq '{
number,
title,
url,
state,
headRefName,
baseRefName,
checks: (.statusCheckRollup // [] | map({
name: .name,
conclusion: (.conclusion // .state // "UNKNOWN"),
detailsUrl: (.detailsUrl // ""),
workflow: (.workflowName // ""),
startedAt: (.startedAt // ""),
completedAt: (.completedAt // "")
}))
}'
echo
echo "== Failed / non-success checks =="
gh pr view "$pr" --repo "$repo" --json statusCheckRollup \
--jq '.statusCheckRollup // [] | map(select((.conclusion // .state // "UNKNOWN") != "SUCCESS")) | map({
name: .name,
conclusion: (.conclusion // .state // "UNKNOWN"),
detailsUrl: (.detailsUrl // ""),
workflow: (.workflowName // ""),
startedAt: (.startedAt // ""),
completedAt: (.completedAt // "")
})'
echo
echo "== Recent issue comments mentioning failure/invalid/gcd =="
gh api "repos/$repo/issues/$pr/comments?per_page=100" --jq '
map(select((.body | ascii_downcase) | test("fail|invalid|gcd|ci-tools|validation"))) |
map({
user: .user.login,
created_at,
body
})'Length of output: 27475 🏁 Script executed: #!/bin/bash
set -euo pipefail
urls=(
"https://prow.ci.openshift.org/view/gs/test-platform-results/pr-logs/pull/openshift_release/80743/pull-ci-openshift-release-check-gh-automation/2067620749031510016"
"https://prow.ci.openshift.org/view/gs/test-platform-results/pr-logs/pull/openshift_release/80743/pull-ci-openshift-release-main-generated-config/2067621656372711424"
"https://prow.ci.openshift.org/view/gs/test-platform-results/pr-logs/pull/openshift_release/80743/pull-ci-openshift-release-main-ci-operator-config-metadata/2067616903194480640"
"https://prow.ci.openshift.org/view/gs/test-platform-results/pr-logs/pull/openshift_release/80743/pull-ci-openshift-release-check-cluster-profiles-config/2069350340913795072"
"https://prow.ci.openshift.org/view/gs/test-platform-results/pr-logs/pull/openshift_release/80743/pull-ci-openshift-release-main-boskos-config-generation/2069350356013289472"
)
workdir="$(mktemp -d)"
trap 'rm -rf "$workdir"' EXIT
fetch_one() {
local url="$1"
local id
id="$(basename "$url")"
local page="$workdir/$id.html"
echo "== JOB PAGE: $url =="
curl -fsSL "$url" -o "$page" || { echo "failed to fetch page"; echo; return; }
# Print a compact summary from the HTML if present.
grep -Eo 'pull-ci-[^"< ]+' "$page" | head -n1 || true
grep -Eo 'FAILED|FAILURE|SUCCESS|PENDING' "$page" | head -n3 || true
# Extract candidate log/artifact links from the page.
echo "-- candidate artifact links --"
grep -Eo 'https://gcsweb[^\"]+|/view/gcs/test-platform-results[^\"]+|/view/gs/test-platform-results[^\"]+' "$page" | sed 's/&/\&/g' | head -n 20 || true
# Try common artifact paths directly from the known Prow layout.
local base="https://gcsweb-ci.apps.ci.l2s4.p1.openshiftapps.com/gcs/test-platform-results/pr-logs/pull/openshift_release/80743"
local job_path
job_path="$(echo "$url" | sed -E 's#https://prow\.ci\.openshift\.org/view/gs/test-platform-results/pr-logs/pull/openshift_release/80743/##')"
echo "-- trying common artifact URLs --"
for suffix in \
"artifacts/build-log.txt" \
"build-log.txt" \
"artifacts/e2e/build-log.txt" \
"artifacts/artifacts/build-log.txt" \
"prowjob.json" \
"finished.json" \
"artifacts/junit_operator.xml" \
"junit_operator.xml"; do
candidate="$base/$job_path/$suffix"
code="$(curl -s -o "$workdir/out.tmp" -w '%{http_code}' "$candidate" || true)"
if [ "$code" = "200" ]; then
echo "FOUND $candidate"
echo "--- excerpt from $suffix ---"
grep -nEi 'error|failed|failure|invalid|panic|traceback|cannot|unable|not found' "$workdir/out.tmp" | head -n 40 || sed -n '1,120p' "$workdir/out.tmp"
fi
done
echo
}
for url in "${urls[@]}"; do
fetch_one "$url"
doneLength of output: 77426
There are really two buckets of failures here:
Older failures on
|
|
/approve |
|
/retitle CORS-4510: Add GCD cluster profile |
|
@rochacbruno: This pull request references CORS-4510 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 sub-task to target the "5.0.0" version, but no target version was set. 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. |
6a7ee1b to
dec55e6
Compare
|
check-cluster-profiles-config fails because the cluster-secrets-gcd K8s secret doesn't exist in the cluster yet (vault hasn't been populated). This should be a non-blocking/optional check, it will pass once the vault secret is created. |
|
/lgtm |
Add the "gcd" (Google Cloud Dedicated) cluster profile for testing OpenShift installations on Google Cloud Dedicated (Berlin environment) using Workload Identity Federation. - Register "gcd" cluster profile with cluster_type "gcp" - Add cluster-secrets-gcd to secret bootstrap config - Add 3 Boskos quota slices for gcd-quota-slice - Add e2e-gcd test to installer config, pinned to build13 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The region prefix in Boskos slice names becomes LEASED_RESOURCE, which install steps pass as the target region. Use europe-west3 to match the valid GCD regions from the installer. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Scope this PR to cluster profile registration only. The e2e-gcd installer job will be added in a follow-up PR once the profile is available. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Storage team needs access for CSI operator testing on GCD, same as the AWS EUSC pattern. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
With 140 vCPU capacity shared for development and each cluster needing around 40 vCPU, 3 simultaneous clusters would risk exhausting quota. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The actual GCD region is u-germany-northeast1, not europe-west3. The Boskos slice prefix becomes LEASED_RESOURCE which is passed as the target region to install steps. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The _boskos.yaml is generated by generate-boskos.py, not hand-edited. Add gcd-quota-slice config to the generator with 2 slices in the u-germany-northeast1 region, and regenerate. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
6fcadac to
1571b53
Compare
|
[REHEARSALNOTIFIER] Note: If this PR includes changes to step registry files ( Interacting with pj-rehearseComment: Once you are satisfied with the results of the rehearsals, comment: |
|
/lgtm |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: deepsm007, patrickdillon, rochacbruno 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 |
|
@rochacbruno: The following tests failed, say
Full PR test history. Your PR dashboard. DetailsInstructions 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. |
410b89e
into
openshift:main
|
@rochacbruno: Updated the following 3 configmaps:
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. |
Summary
gcd(Google Cloud Dedicated) cluster profile withcluster_type: gcp, owned byopenshift/installercluster-secrets-gcdto secret bootstrap config (distributed tonon_app_ciclusters)gcd-quota-slice(regioneurope-west3)The installer CI job (
e2e-gcd) will be added in a follow-up PR once the profile is registered.Context
Part of CORS-4508: setting up Workload Identity Federation authentication for the OpenShift installer on Google Cloud Dedicated (Berlin environment).
Companion PRs
ClusterProfileGCDinclusterprofile.go(must merge first)Test plan
cluster-secrets-gcdis populated with WIF credential confige2e-gcdinstaller jobGenerated with Claude Code
Summary by CodeRabbit
This PR establishes infrastructure support for the GCD (Google Cloud Dedicated) cluster profile, enabling OpenShift installer testing on Google Cloud Dedicated's Berlin environment using Workload Identity Federation authentication.
Infrastructure Changes:
Cluster Profile Registration (
cluster-profiles-config.yaml): Added a newgcdcluster profile configured for GCP with ownership assigned to both theopenshift/installerandcsi-operatorteams, making it available for CI jobs targeting this testing environment.Secret Distribution (
ci-secret-bootstrap/_config.yaml): Integratedcluster-secrets-gcdinto the secret bootstrap configuration to distribute credentials tonon_app_ciclusters, ensuring proper credential management for the new profile.Resource Quotas (
_boskos.yaml): Added three Boskos quota slices forgcd-quota-slicein theeurope-west3region to manage resource allocation for GCD cluster provisioning.Scope: This PR focuses exclusively on cluster profile registration and infrastructure setup. The corresponding
e2e-gcdinstaller CI job will be added in a follow-up PR once the profile becomes available in the system (dependent on openshift/ci-tools#5261).