Skip to content

Pin bgp-cloud-connector's e2e-gcp-operator to the gcp cluster profile - #85216

Open
frobware wants to merge 1 commit into
openshift:mainfrom
frobware:gcp-e2e-pin-profile
Open

frobware wants to merge 1 commit into
openshift:mainfrom
frobware:gcp-e2e-pin-profile

Conversation

@frobware

@frobware frobware commented Sep 15, 2026

Copy link
Copy Markdown
Contributor

e2e-gcp-operator on openshift/bgp-cloud-connector builds a Network Connectivity Center hub as a test prerequisite, because the operator under test attaches a router appliance spoke to it. The openshift-org-gcp cluster-profile account cannot create one in two of the three projects that profile leases from, so the job fails for a reason unrelated to the code under review and a green run means only that the lease was lucky.

All three projects are now sampled, with testIamPermissions on the project rather than inferred from whichever call failed first. In both denied projects the account holds thirteen of the fifteen permissions the estate needs and is denied exactly networkconnectivity.hubs.create and networkconnectivity.hubs.delete. It can list hubs and spokes, so the gap is narrow rather than a missing NCC role.

Set member Project Hub create/delete Evidence
gcp openshift-gce-devel-ci works 2098472557710675968
gcp-openshift-gce-devel-ci-2 openshift-gce-devel-ci-2 denied 2099872382037528576
gcp-3 openshift-gce-devel-ci-3 denied 2099463215984414720, 2099835132385955840

The one that works does so by accident, not by design: its provisioner is do-not-delete-ci-provisioner, which holds roles/admin. No project grants these permissions deliberately. Note also that the account names differ per project -- ci-provisioner, ci-provisioner-2, ci-provisioner -- so a grant needs the right principal rather than a pattern.

I would rather you did the grant than merged this. Adding networkconnectivity.hubs.create and networkconnectivity.hubs.delete to the cluster-profile account in all three projects fixes the job wherever it lands and lets this PR be reverted. roles/networkconnectivity.hubAdmin covers both but carries 54 permissions, so a custom role with just the two is narrower. Delete matters as much as create: without it a failed run leaks a hub into a shared project.

Failing that, this pins the job to gcp, the only project where it currently works. That profile has its own lease pool of 365 slices against openshift-org-gcp's 355, so it costs no capacity. The set rule needs an exception for the pin to validate, which is what the cluster-profiles-config.yaml entry is for; it is scoped to this one test, not the repository.

Background and full logs: openshift/bgp-cloud-connector#124 (comment)

Test plan

make ci-operator-checkconfig passes with the exception and fails without it, with invalid cluster profile "gcp", use the cluster profile set "openshift-org-gcp" instead. The presubmit was regenerated with make ci-operator-prowgen WHAT="--org openshift --repo bgp-cloud-connector"; the only change is the cloud-cluster-profile label. A rehearsal is not meaningful yet: hack/ci-e2e-gcp.sh does not exist on that repo's main until openshift/bgp-cloud-connector#136 merges, so a rehearsal today would fail on a missing script rather than test the pin. e2e-gcp-operator is optional: true and not gating.

The job builds a Network Connectivity Center hub as a test prerequisite,
and only one of the three projects behind openshift-org-gcp lets the
cluster-profile account create one. Measured with testIamPermissions on
2026-09-15: in openshift-gce-devel-ci-3 the account holds thirteen of the
fifteen permissions the estate needs and is denied
networkconnectivity.hubs.create and networkconnectivity.hubs.delete. It
can list hubs and spokes, so the denial is narrow rather than a missing
NCC role.

Which project a run gets is whichever quota slice is free, so the job
fails about four times in five for a reason that has nothing to do with
the code under review, and a green run proves only that the lease was
lucky.

Pinning to gcp makes it deterministic. That profile carries its own
lease pool of 365 slices, marginally larger than openshift-org-gcp's
355, so this costs no capacity.

The set rule needs an exception for the pin to validate, which is what
the cluster-profiles entry is for. It is scoped to this one test rather
than to the repository.

Granting those two permissions across all three projects would be the
better fix and would let this be reverted; the request is in
openshift/bgp-cloud-connector#124.
@coderabbitai

coderabbitai Bot commented Sep 15, 2026

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

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

Review profile: CHILL

Plan: Enterprise

Run ID: 5deec83b-95ee-4ad0-b77b-14a3fecfbe55

📥 Commits

Reviewing files that changed from the base of the PR and between 7265a40 and 771753e.

⛔ Files ignored due to path filters (1)
  • ci-operator/jobs/openshift/bgp-cloud-connector/openshift-bgp-cloud-connector-main-presubmits.yaml is excluded by !ci-operator/jobs/**
📒 Files selected for processing (2)
  • ci-operator/config/openshift/bgp-cloud-connector/openshift-bgp-cloud-connector-main.yaml
  • ci-operator/step-registry/cluster-profiles/cluster-profiles-config.yaml

Included review availability: Your plan provides up to 12 included reviews per hour; 11 remain after this review.


Walkthrough

The GCP operator test now uses the gcp cluster profile. A cluster profile exception covers nested BGP cloud connector configurations while excluding that test.

Changes

GCP profile update

Layer / File(s) Summary
Profile and exception configuration
ci-operator/config/openshift/bgp-cloud-connector/openshift-bgp-cloud-connector-main.yaml, ci-operator/step-registry/cluster-profiles/cluster-profiles-config.yaml
The e2e-gcp-operator test switches to the gcp cluster profile. A tests_exceptions rule matches nested configurations and excludes e2e-gcp-operator.

Priority: ⬇️ Low

Estimated code review effort: 1 (Trivial) | ~5 minutes

Change: Bug fix

Suggested reviewers: psalajova

Merge Risk: ⚪ Minimal · up to 77175

The presubmit configuration now consistently selects the dedicated GCP quota-slice profile for the affected test, with no identified merge-blocking risk.

🚥 Pre-merge checks | ✅ 15
✅ Passed checks (15 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
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 PASS: The pull request changes only CI cluster-profile configuration, the generated presubmit label, and a profile exception. The exact diff contains no Ginkgo test-title expressions such as It(), Des…
Test Structure And Quality ✅ Passed PASS: The pull request changes only CI configuration and generated presubmit metadata. It changes the cluster profile for e2e-gcp-operator and adds a scoped profile exception; it does not add or mod…
Microshift Test Compatibility ✅ Passed PASS: The pull request changes only CI YAML and generated presubmit metadata. The authoritative diff adds no Go source and no new Ginkgo It, Describe, Context, or When test. Therefore, this Mi…
Single Node Openshift (Sno) Test Compatibility ✅ Passed PASS — The pull request changes only CI cluster-profile configuration and the generated presubmit label. It does not add or modify Ginkgo tests, test bodies, or node-topology behavior. The existing `e…
Topology-Aware Scheduling Compatibility ✅ Passed PASS: The pull request changes only CI configuration YAML files. It switches the test cluster profile, adds a cluster-profile exception, and updates the generated presubmit label. No deployment manife…
Ote Binary Stdout Contract ✅ Passed PASS. The pull request changes only CI YAML: the cluster profile, the generated presubmit label, and one profile exception. The authoritative diff contains no OTE binary source, suite setup, initializ…
Ipv6 And Disconnected Network Test Compatibility ✅ Passed PASS. The pull request changes only CI configuration, a generated presubmit label, and a cluster-profile exception. It does not add or modify Ginkgo e2e test code, network address handling, URLs, or e…
No-Weak-Crypto ✅ Passed The PR changes only cluster-profile configuration and a generated presubmit label. Added lines select the gcp profile and exempt e2e-gcp-operator; they add no cryptographic algorithms, crypto impl…
Container-Privileges ✅ Passed PASS. The pull request changes only the GCP cluster-profile selector, the generated profile label, and one profile-validation exception. The authoritative diff adds no privileged: true, host namespa…
No-Sensitive-Data-In-Logs ✅ Passed PASS. The pull request changes only cluster-profile configuration, a generated job label, and a validation exception. The added lines contain no logging statements, log payloads, passwords, tokens, AP…
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely identifies the primary change: pinning the bgp-cloud-connector e2e-gcp-operator test to the gcp cluster profile.
✨ 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 commented Sep 15, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: frobware
Once this PR has been reviewed and has the lgtm label, please assign bear-redhat 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

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

[REHEARSALNOTIFIER]
@frobware: the pj-rehearse plugin accommodates running rehearsal tests for the changes in this PR. Expand 'Interacting with pj-rehearse' for usage details. The following rehearsable tests have been affected by this change:

Test name Repo Type Reason
pull-ci-openshift-bgp-cloud-connector-main-e2e-gcp-operator openshift/bgp-cloud-connector presubmit Ci-operator config changed

Prior to this PR being merged, you will need to either run and acknowledge or opt to skip these rehearsals.

Interacting with pj-rehearse

Comment: /pj-rehearse to run up to 5 rehearsals
Comment: /pj-rehearse skip to opt-out of rehearsals
Comment: /pj-rehearse {test-name}, with each test separated by a space, to run one or more specific rehearsals
Comment: /pj-rehearse more to run up to 10 rehearsals
Comment: /pj-rehearse max to run up to 25 rehearsals
Comment: /pj-rehearse auto-ack to run up to 5 rehearsals, and add the rehearsals-ack label on success
Comment: /pj-rehearse list to get an up-to-date list of affected jobs
Comment: /pj-rehearse abort to abort all active rehearsals
Comment: /pj-rehearse network-access-allowed to allow rehearsals of tests that have the restrict_network_access field set to false. This must be executed by an openshift org member who is not the PR author

Once you are satisfied with the results of the rehearsals, comment: /pj-rehearse ack to unblock merge. When the rehearsals-ack label is present on your PR, merge will no longer be blocked by rehearsals.
If you would like the rehearsals-ack label removed, comment: /pj-rehearse reject to re-block merging.

@openshift-ci

openshift-ci Bot commented Sep 15, 2026

Copy link
Copy Markdown
Contributor

@frobware: all tests passed!

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.

@frobware

Copy link
Copy Markdown
Contributor Author

/assign bear-redhat

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants