Skip to content

ci-operator: Generic DeferredParameters#5241

Merged
openshift-merge-bot[bot] merged 1 commit into
openshift:mainfrom
danilo-gemoli:chore/ci-operator/generic-params
Jun 10, 2026
Merged

ci-operator: Generic DeferredParameters#5241
openshift-merge-bot[bot] merged 1 commit into
openshift:mainfrom
danilo-gemoli:chore/ci-operator/generic-params

Conversation

@danilo-gemoli

@danilo-gemoli danilo-gemoli commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Allow DeferredParameters to store generic objects any rather than string solely.
The semantic of the main get method:

type Parameters interface {
  Get(name string) (string, error)
}

doesn't change: if it exists and is a string type, return a parameter stored with name name.

This is part of some preparatory work to move cluster profiles definition out of the code base.

Overview

This PR generalizes ci-operator's parameter system so deferred parameters can hold arbitrary values (any) instead of only strings. It's preparatory work to move cluster profile definitions (and other richer parameter data) out of the codebase and into configurable inputs.

What changed in practice

  • Core parameter producers and storage now return and hold any-typed values:
    • ParameterMap entries are now func() (any, error) rather than func() (string, error).
    • DeferredParameters stores cached results as map[string]any and accepts deferred evaluators that return (any, error).
    • DeferredParameters.Map() now returns map[string]any.
  • The exported Parameters.Get(name string) (string, error) method is unchanged to preserve backwards compatibility: it still returns a string only when the stored value is a non-empty string; non-string values (or absent keys) fall back to wrapped parameter lookups or an empty string.
  • The legacy overrideParameters / NewOverrideParameters helper was removed.

Components affected and behavioral impact

  • ci-operator parameter evaluation (pkg/api/*): can now represent richer, typed parameter values (e.g., structs, numbers, nested objects) produced lazily by steps or defaults.
  • Step implementations (pkg/steps/* and pkg/defaults/*): many steps now register parameter factories that return (any, error) or wrap existing producers in closures that evaluate to any. The runtime semantics of when values are produced are unchanged — only the value type widened.
  • Parameter emission (pkg/steps/write_params.go): when writing environment parameters, non-string values are now skipped (with a debug log) instead of being coerced; string values are written exactly as before with the same quoting/escaping rules.
  • Tests: unit tests across parameters, defaults, and steps were updated to use map[string]any and factory funcs returning (any, error).

Why this matters to CI users and operators

  • Enables storing and passing structured configuration (not just strings) through ci-operator's parameter system — a prerequisite for moving complex definitions like cluster profiles out of the code and into CI configuration.
  • Existing callers that use Parameters.Get(...) to fetch string parameters continue to work without changes; however, operators should be aware that some parameters may now be non-strings and thus will not be emitted as environment variables by the write-parameters step.
  • No runtime change in when parameters are evaluated; changes are type-level and backward-compatible for string consumers, but non-string values need explicit handling by any code that consumes the new map[string]any outputs.

Backward compatibility and migration notes

  • Public API: Parameters.Get signature unchanged; most existing code remains compatible.
  • Any code that inspects DeferredParameters.Map() or expects map[string]string must be updated to handle map[string]any.
  • When exposing parameters as shell envs, only string values will be written; if new features rely on non-string parameter values being serialized, call sites must be updated to serialize them explicitly.

Tests & risk

  • Tests were updated across the codebase to reflect the broader type support; coverage remains focused on lazy evaluation, caching, and inheritance behavior.
  • The change is primarily a type generalization with localized adjustments; primary risks are places that assumed string values (now guarded by skipping non-strings) and any downstream code that consumed map[string]string directly.

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Pipeline controller notification
This repo is configured to use the pipeline controller. Second-stage tests will be triggered either automatically or after lgtm label is added, depending on the repository configuration. The pipeline controller will automatically detect which contexts are required and will utilize /test Prow commands to trigger the second stage.

For optional jobs, comment /test ? to see a list of all defined jobs. To trigger manually all jobs from second stage use /pipeline required command.

This repository is configured in: automatic mode

@danilo-gemoli danilo-gemoli changed the title chore(ci-operator): add generic DeferredParameters ci-operator: Generic DeferredParameters Jun 10, 2026
@coderabbitai

coderabbitai Bot commented Jun 10, 2026

Copy link
Copy Markdown

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: 094edcad-8330-4f02-ba84-762e3ebc6588

📥 Commits

Reviewing files that changed from the base of the PR and between b7f867b and 0e5caee.

📒 Files selected for processing (25)
  • pkg/api/graph.go
  • pkg/api/parameters.go
  • pkg/api/parameters_test.go
  • pkg/defaults/defaults.go
  • pkg/defaults/defaults_test.go
  • pkg/steps/input_image_tag.go
  • pkg/steps/ip_pool.go
  • pkg/steps/ip_pool_test.go
  • pkg/steps/lease.go
  • pkg/steps/lease_proxy.go
  • pkg/steps/lease_proxy_test.go
  • pkg/steps/lease_test.go
  • pkg/steps/multi_stage/gen_test.go
  • pkg/steps/multi_stage/multi_stage_test.go
  • pkg/steps/output_image_tag.go
  • pkg/steps/pipeline_image_cache.go
  • pkg/steps/project_image.go
  • pkg/steps/release/create_release.go
  • pkg/steps/release/import_release.go
  • pkg/steps/release/release_images.go
  • pkg/steps/rpm_server.go
  • pkg/steps/rpm_server_test.go
  • pkg/steps/source.go
  • pkg/steps/write_params.go
  • pkg/steps/write_params_test.go
🔗 Linked repositories identified

CodeRabbit considers these linked repositories for cross-repo context during reviews:

  • openshift/release (manual)
  • openshift/ci-docs (manual)
  • openshift/release-controller (manual)
  • openshift/ci-chat-bot (manual)
✅ Files skipped from review due to trivial changes (1)
  • pkg/steps/project_image.go
🚧 Files skipped from review as they are similar to previous changes (20)
  • pkg/steps/lease_proxy.go
  • pkg/steps/multi_stage/multi_stage_test.go
  • pkg/steps/release/create_release.go
  • pkg/steps/output_image_tag.go
  • pkg/steps/source.go
  • pkg/steps/input_image_tag.go
  • pkg/steps/write_params_test.go
  • pkg/steps/multi_stage/gen_test.go
  • pkg/defaults/defaults.go
  • pkg/steps/release/release_images.go
  • pkg/steps/ip_pool.go
  • pkg/steps/rpm_server_test.go
  • pkg/api/graph.go
  • pkg/steps/release/import_release.go
  • pkg/api/parameters_test.go
  • pkg/steps/pipeline_image_cache.go
  • pkg/defaults/defaults_test.go
  • pkg/steps/lease_test.go
  • pkg/api/parameters.go
  • pkg/steps/lease.go

📝 Walkthrough

Walkthrough

This PR widens parameter providers from returning string to any, refactors DeferredParameters to cache any-typed values and evaluators, adapts all step providers and tests to the new shape, and updates the parameter writer to only serialize string values.

Changes

Parameter System Type Widening

Layer / File(s) Summary
Parameter Map contract update
pkg/api/graph.go
ParameterMap value functions now return (any, error) instead of (string, error), widening the parameter provider contract.
DeferredParameters implementation
pkg/api/parameters.go
DeferredParameters stores deferred evaluators and cached results as map[string]func() (any, error) and map[string]any. Methods Set, Add, Get, and Map() are updated to work with untyped values; Get() type-asserts to string for backward compatibility.
DeferredParameters test coverage
pkg/api/parameters_test.go
Tests updated to verify caching, deferred evaluation, and parent parameter inheritance with untyped values and functions returning (any, error).
Defaults module parameter registration
pkg/defaults/defaults.go, pkg/defaults/defaults_test.go
Job name, hash, and namespace parameters are registered using any-returning deferred functions; paramsHasAllParametersAsInput helper signature is adapted.
Step providers: image digest wrappers
pkg/steps/input_image_tag.go, pkg/steps/output_image_tag.go, pkg/steps/pipeline_image_cache.go, pkg/steps/project_image.go, pkg/steps/source.go, pkg/steps/release/create_release.go, pkg/steps/release/import_release.go
Image digest lookup functions wrapped in closures returning (any, error) to conform to the new parameter provider contract.
Step providers: lease, IP pool, RPM server
pkg/steps/lease.go, pkg/steps/lease_proxy.go, pkg/steps/ip_pool.go, pkg/steps/rpm_server.go, pkg/steps/release/release_images.go
Provider function signatures updated to return (any, error) for lease environments, IP pool lease count, lease proxy URL, and RPM server URL.
Step test expectations aligned with any-typed providers
pkg/steps/lease_test.go, pkg/steps/lease_proxy_test.go, pkg/steps/ip_pool_test.go, pkg/steps/rpm_server_test.go
Expected and collected parameter maps changed from map[string]string to map[string]any across test cases and scenarios.
Release step test updates
pkg/steps/multi_stage/gen_test.go, pkg/steps/multi_stage/multi_stage_test.go
Deferred parameter callbacks updated to use func() (any, error) return type.
Parameter writer: type assertion and filtering
pkg/steps/write_params.go, pkg/steps/write_params_test.go
Parameter serialization now type-asserts values to string and skips non-string entries; quoting and escaping logic preserved.

🎯 3 (Moderate) | ⏱️ ~20 minutes

🚥 Pre-merge checks | ✅ 15 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Test Coverage For New Features ⚠️ Warning New any-typed parameter support lacks test coverage for non-string values: no tests for Set/Add with non-string, Get() fallback, or write_params non-string filtering. Add tests for non-string parameter storage and retrieval, Get() fallback behavior, and write_params filtering of non-string values.
✅ Passed checks (15 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'ci-operator: Generic DeferredParameters' directly and specifically describes the main change: making DeferredParameters support generic/untyped values instead of just strings.
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.
Go Error Handling ✅ Passed Errors properly wrapped with fmt.Errorf %w; type assertions use comma-ok safely; nil pointers checked before dereferencing; no ignored errors.
Stable And Deterministic Test Names ✅ Passed This codebase uses standard Go testing framework (testing.T), not Ginkgo. No Ginkgo tests found in go.mod, imports, or codebase. Check is not applicable.
Test Structure And Quality ✅ Passed Repository uses standard Go testing, not Ginkgo. Tests use proper table-driven patterns with descriptive error messages and maintain single responsibility.
Microshift Test Compatibility ✅ Passed This PR does not add any new Ginkgo e2e tests. It only refactors type signatures in DeferredParameters from string-only to generic any types and updates existing unit tests accordingly.
Single Node Openshift (Sno) Test Compatibility ✅ Passed No Ginkgo e2e tests were added in this PR. All 9 modified test files are standard Go unit tests using testing.T. The check is not applicable.
Topology-Aware Scheduling Compatibility ✅ Passed PR refactors internal parameter handling in ci-operator from string to any types. Does not modify deployment manifests, operator code with pod scheduling constraints, or Kubernetes scheduling specs.
Ote Binary Stdout Contract ✅ Passed No OTE stdout violations: PR modifies only pkg/* code, has no fmt.Print calls, no process-level setup code, and all logging is in step execution methods.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed PR contains no new Ginkgo e2e tests. All test changes are to standard Go unit tests that verify refactored parameter type signatures; no IPv6 or network connectivity assumptions to check.
No-Weak-Crypto ✅ Passed PR makes type-signature changes to generic parameter handling (any instead of string); no cryptographic operations, weak ciphers, or secret comparisons are introduced.
Container-Privileges ✅ Passed PR contains only Go source code files; no Dockerfiles, K8s manifests, or container configs where privilege settings would appear.
No-Sensitive-Data-In-Logs ✅ Passed No logging statements expose parameter values. Only parameter names, types, and error details are logged, which cannot expose passwords, tokens, API keys, PII, or sensitive data.

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

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

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 golangci-lint (2.12.2)

Command failed


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

@openshift-ci openshift-ci Bot requested review from Prucek and hector-vido June 10, 2026 09:57
@openshift-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Jun 10, 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: 2

🧹 Nitpick comments (3)
pkg/api/parameters.go (1)

113-125: ⚡ Quick win

Get() silently ignores non-string parameter values.

The condition if ret, err := p.get(name); ret != "" (line 114) compares an any-typed value to "". For non-string values (e.g., int, bool), this comparison returns false, causing the code to skip the type assertion block and fall through to the parent parameters check or return empty string. Non-string parameters registered via Add() are effectively unretrievable through Get().

This appears intentional—Get() maintains its (string, error) contract for backward compatibility while Map() provides access to all value types. However, the silent failure mode could confuse callers who register non-string parameters but attempt retrieval via Get(). Consider documenting this behavior in the method's godoc comment.

🤖 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 `@pkg/api/parameters.go` around lines 113 - 125, Update the godoc for
DeferredParameters.Get to explicitly state that Get returns only string-typed
parameter values and will ignore non-string values registered via Add (i.e.,
values stored via DeferredParameters.get are type-asserted to string), and
recommend using DeferredParameters.Map or calling Get on the underlying params
(DeferredParameters.params) for non-string retrieval; reference
DeferredParameters.Get, DeferredParameters.Add, DeferredParameters.get,
DeferredParameters.Map and the params field in the comment so callers understand
why non-string values are not returned and what to use instead.

Source: Coding guidelines

pkg/api/parameters_test.go (1)

70-132: ⚡ Quick win

Consider adding test coverage for Get() with non-string parameter values.

The test suite covers Get() and Set() with string values and lazy evaluation, but doesn't verify the behavior when Get() is called on a parameter registered with a non-string value (e.g., an integer or boolean). Adding a test case that registers Add("int_param", func() (any, error) { return 42, nil }) and verifies Get("int_param") returns "" would document the silent-ignore behavior and prevent future regressions.

🤖 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 `@pkg/api/parameters_test.go` around lines 70 - 132, Add a test case to
TestDeferredParametersGetSet that registers a non-string lazy value and asserts
Get returns the empty string and nil error: create a DeferredParameters via
NewDeferredParameters(nil), call dp.Add("int_param", func() (any, error) {
return 42, nil }) (or populate fns with "int_param": func() (any,error){return
42,nil}), set name to "int_param", leave callSet false, expect getValue "" and
getError nil, and include a descriptive purpose like "Non-string lazy value
returns empty string" so the test exercises DeferredParameters.Get and guards
against regressions for non-string results.
pkg/steps/write_params_test.go (1)

14-15: ⚡ Quick win

Add test coverage for non-string parameter skipping.

The test verifies string parameters are written correctly, but doesn't verify that non-string parameters are skipped as intended by the type assertion logic in write_params.go:45-48.

🧪 Proposed test addition

Add a non-string parameter and verify it's not written:

 	params.Add("K1", func() (any, error) { return "V1", nil })
 	params.Add("K2", func() (any, error) { return "V:2", nil })
+	params.Add("K3", func() (any, error) { return 42, nil })

Then verify the output only contains K1 and K2 (K3 skipped).

🤖 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 `@pkg/steps/write_params_test.go` around lines 14 - 15, Add a test case in
pkg/steps/write_params_test.go that registers a non-string parameter using
params.Add (e.g., params.Add("K3", func() (any, error) { return 123, nil }))
then call the same code path that writes params (the test already exercising
params.Add for "K1"/"K2") and assert the resulting output contains only K1 and
K2 and does not contain K3; this verifies the type-assertion logic in
write_params.go (lines ~45-48) correctly skips non-string values.
🤖 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 `@pkg/api/graph.go`:
- Line 108: The change widened ParameterMap's value signature from func()
(string, error) to func() (any, error), which breaks the public API; restore
backward compatibility by reverting ParameterMap to map[string]func() (string,
error) and, if generic behavior is needed, introduce a new distinct type (e.g.,
ParameterMapAny map[string]func() (any, error)) and update internal callers to
use the new type where safe; ensure all functions, methods, and tests that
referenced ParameterMap (search for ParameterMap, NewParameterMap,
ParseParameters, etc.) are updated to use the new name when they expect
any-typed values so existing vendored consumers keep the original string-typed
contract.

In `@pkg/steps/write_params.go`:
- Around line 45-48: The loop currently does vStr, ok := v.(string) and silently
continues on !ok; update that branch to log a warning or debug message (e.g.,
using logrus.Warnf or Debugf) that includes the parameter key and the actual
type/value so operators can see why a parameter was skipped; ensure the package
imports logrus if missing and place the log inside the same loop where vStr and
ok are checked (referencing vStr, ok and the loop's parameter key variable,
e.g., k) before continuing.

---

Nitpick comments:
In `@pkg/api/parameters_test.go`:
- Around line 70-132: Add a test case to TestDeferredParametersGetSet that
registers a non-string lazy value and asserts Get returns the empty string and
nil error: create a DeferredParameters via NewDeferredParameters(nil), call
dp.Add("int_param", func() (any, error) { return 42, nil }) (or populate fns
with "int_param": func() (any,error){return 42,nil}), set name to "int_param",
leave callSet false, expect getValue "" and getError nil, and include a
descriptive purpose like "Non-string lazy value returns empty string" so the
test exercises DeferredParameters.Get and guards against regressions for
non-string results.

In `@pkg/api/parameters.go`:
- Around line 113-125: Update the godoc for DeferredParameters.Get to explicitly
state that Get returns only string-typed parameter values and will ignore
non-string values registered via Add (i.e., values stored via
DeferredParameters.get are type-asserted to string), and recommend using
DeferredParameters.Map or calling Get on the underlying params
(DeferredParameters.params) for non-string retrieval; reference
DeferredParameters.Get, DeferredParameters.Add, DeferredParameters.get,
DeferredParameters.Map and the params field in the comment so callers understand
why non-string values are not returned and what to use instead.

In `@pkg/steps/write_params_test.go`:
- Around line 14-15: Add a test case in pkg/steps/write_params_test.go that
registers a non-string parameter using params.Add (e.g., params.Add("K3", func()
(any, error) { return 123, nil })) then call the same code path that writes
params (the test already exercising params.Add for "K1"/"K2") and assert the
resulting output contains only K1 and K2 and does not contain K3; this verifies
the type-assertion logic in write_params.go (lines ~45-48) correctly skips
non-string values.
🪄 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: 47a6e0d5-7a99-4784-a989-3e03fbeab4b3

📥 Commits

Reviewing files that changed from the base of the PR and between e6b1341 and 83ff744.

📒 Files selected for processing (25)
  • pkg/api/graph.go
  • pkg/api/parameters.go
  • pkg/api/parameters_test.go
  • pkg/defaults/defaults.go
  • pkg/defaults/defaults_test.go
  • pkg/steps/input_image_tag.go
  • pkg/steps/ip_pool.go
  • pkg/steps/ip_pool_test.go
  • pkg/steps/lease.go
  • pkg/steps/lease_proxy.go
  • pkg/steps/lease_proxy_test.go
  • pkg/steps/lease_test.go
  • pkg/steps/multi_stage/gen_test.go
  • pkg/steps/multi_stage/multi_stage_test.go
  • pkg/steps/output_image_tag.go
  • pkg/steps/pipeline_image_cache.go
  • pkg/steps/project_image.go
  • pkg/steps/release/create_release.go
  • pkg/steps/release/import_release.go
  • pkg/steps/release/release_images.go
  • pkg/steps/rpm_server.go
  • pkg/steps/rpm_server_test.go
  • pkg/steps/source.go
  • pkg/steps/write_params.go
  • pkg/steps/write_params_test.go
🔗 Linked repositories identified

CodeRabbit considers these linked repositories for cross-repo context during reviews:

  • openshift/release (manual)
  • openshift/ci-docs (manual)
  • openshift/release-controller (manual)
  • openshift/ci-chat-bot (manual)

Comment thread pkg/api/graph.go

// +k8s:deepcopy-gen=false
type ParameterMap map[string]func() (string, error)
type ParameterMap map[string]func() (any, error)

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 | 🏗️ Heavy lift

Breaking API change impacts vendored consumers in linked repositories.

Widening ParameterMap value functions from (string, error) to (any, error) breaks the API contract. Linked repositories research shows openshift/release-controller and openshift/ci-chat-bot vendor the old ParameterMap type with string-typed signatures in their vendor/github.com/openshift/ci-tools/pkg/api/graph.go and parameters.go. Those repos will need to re-vendor and adapt their code to the new any-typed contract.

Per coding guidelines for pkg/api/**: "Backward compatibility matters — new fields should have zero-value defaults that preserve existing behavior." While this technically changes an existing type rather than adding a field, it still violates the backward compatibility requirement for the ci-operator configuration API.

🤖 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 `@pkg/api/graph.go` at line 108, The change widened ParameterMap's value
signature from func() (string, error) to func() (any, error), which breaks the
public API; restore backward compatibility by reverting ParameterMap to
map[string]func() (string, error) and, if generic behavior is needed, introduce
a new distinct type (e.g., ParameterMapAny map[string]func() (any, error)) and
update internal callers to use the new type where safe; ensure all functions,
methods, and tests that referenced ParameterMap (search for ParameterMap,
NewParameterMap, ParseParameters, etc.) are updated to use the new name when
they expect any-typed values so existing vendored consumers keep the original
string-typed contract.

Sources: Coding guidelines, MCP tools

Comment thread pkg/steps/write_params.go
@danilo-gemoli danilo-gemoli force-pushed the chore/ci-operator/generic-params branch from 83ff744 to b7f867b Compare June 10, 2026 10:33
@danilo-gemoli

Copy link
Copy Markdown
Contributor Author

/test e2e

@danilo-gemoli danilo-gemoli force-pushed the chore/ci-operator/generic-params branch from b7f867b to 0e5caee Compare June 10, 2026 12:15
@danilo-gemoli

Copy link
Copy Markdown
Contributor Author

/test e2e

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Jun 10, 2026
@openshift-ci

openshift-ci Bot commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: danilo-gemoli, jmguzik

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:
  • OWNERS [danilo-gemoli,jmguzik]

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

/retest-required

Remaining retests: 0 against base HEAD 3a61181 and 2 for PR HEAD 0e5caee in total

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Tests from second stage were triggered manually. Pipeline can be controlled only manually, until HEAD changes. Use command to trigger second stage.

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

/retest-required

Remaining retests: 0 against base HEAD 7dcb390 and 1 for PR HEAD 0e5caee in total

@openshift-ci

openshift-ci Bot commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

@danilo-gemoli: 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.

@openshift-merge-bot openshift-merge-bot Bot merged commit 2c32eac into openshift:main Jun 10, 2026
17 checks passed
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. lgtm Indicates that a PR is ready to be merged.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants