Skip to content

OCPBUGS-95238: Dump compact cache to CM for persistence - #6379

Open
pablintino wants to merge 1 commit into
openshift:mainfrom
pablintino:cm-persistance-for-cache
Open

OCPBUGS-95238: Dump compact cache to CM for persistence#6379
pablintino wants to merge 1 commit into
openshift:mainfrom
pablintino:cm-persistance-for-cache

Conversation

@pablintino

@pablintino pablintino commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

- What I did

This change dumps the cache (a reduced version of it with the bare minimal for OS Image Streams) to a new CM to allow new MCC pods that use a different name and thus, a new cache file, to read already existing cache info. It's specially useful in disconnected environments.

- How to verify it

TBD

- Description for the changelog

Dump a reduced version of the image cache to a CM to allow it to survive MCC Pod recreations.

Summary by CodeRabbit

  • New Features

    • Image inspection cache data now persists across Pod restarts through Kubernetes configuration storage.
    • Cache synchronization supports filtering and transformation to retain relevant image metadata.
    • OS image stream cache entries are selectively retained for improved efficiency.
  • Bug Fixes

    • Cache initialization and synchronization now occur reliably before controllers begin processing.
  • Tests

    • Added coverage for cache persistence, filtering, transformation, eviction, and shutdown behavior.

@openshift-ci-robot

openshift-ci-robot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

@pablintino: This pull request references MCO-2468 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 story to target the "5.0.0" version, but no target version was set.

Details

In response to this:

- What I did

This change dumps the cache (a reduced version of it with the bare minimal for OS Image Streams) to a new CM to allow new MCC pods that use a different name and thus, a new cache file, to read already existing cache info. It's specially useful in disconnected environments.

- How to verify it

TBD

- Description for the changelog

Dump a reduced version of the image cache to a CM to allow it to survive MCC Pod recreations.

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.

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Aug 6, 2026
@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: LGTM mode

@coderabbitai

coderabbitai Bot commented Aug 6, 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

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 4a0cd227-0885-4659-b168-4cc03a4269aa

📥 Commits

Reviewing files that changed from the base of the PR and between e9384f4 and 272375f.

📒 Files selected for processing (5)
  • cmd/machine-config-controller/start.go
  • pkg/osimagestream/imagestream.go
  • pkg/osimagestream/imagestream_entry_transformer.go
  • pkg/osimagestream/imagestream_entry_transformer_test.go
  • pkg/osimagestream/imagestream_provider.go
🚧 Files skipped from review as they are similar to previous changes (3)
  • pkg/osimagestream/imagestream.go
  • pkg/osimagestream/imagestream_entry_transformer.go
  • pkg/osimagestream/imagestream_entry_transformer_test.go

Walkthrough

The change adds ConfigMap-backed inspection-cache synchronization, cache-entry filtering and transformation, ImageStream-specific persistence rules, and controller startup wiring. It updates cache construction callers and tests.

Changes

Inspection cache persistence

Layer / File(s) Summary
Cache lifecycle and synchronization contract
pkg/imageutils/inspect_cache.go, pkg/imageutils/inspect_cache_test.go
FileInspectionCache now supports external loading, snapshots, mutation notifications, synchronized startup, eviction, and shutdown flushing.
Cache filtering and ImageStream transformation
pkg/imageutils/cache_entry_transformer.go, pkg/imageutils/cache_entry_transformer_test.go, pkg/osimagestream/*
Generic filters and transformers support selective persistence. The ImageStream transformer retains qualifying tags and preserves unrelated cache files.
ConfigMap cache persistence
pkg/imageutils/configmap_cache_syncer.go, pkg/imageutils/configmap_cache_syncer_test.go, pkg/controller/common/constants.go
ConfigMapCacheSyncer loads and persists versioned snapshots with filtering, transformation, debouncing, size limits, and create-or-update behavior.
Controller startup integration
cmd/machine-config-controller/start.go, pkg/controller/pinnedimageset/cache_warmer_test.go, test/e2e-2of2/osimagestream_test.go
The controller starts the ConfigMap-backed cache before dependent controllers and registers cache evicters. Existing cache construction calls pass the new syncer argument.

Estimated code review effort: 4 (Complex) | ~45 minutes

Mergeability Score: ⚪ Minimal · up to 27237

This change is merge-ready after normal checks and review; no actionable merge-blocking risk remains.

Sequence Diagram(s)

sequenceDiagram
  participant FileInspectionCache
  participant ConfigMapCacheSyncer
  participant ConfigMapInformer
  participant KubernetesClient
  FileInspectionCache->>ConfigMapCacheSyncer: mutation notification
  ConfigMapCacheSyncer->>FileInspectionCache: Snapshot()
  ConfigMapCacheSyncer->>ConfigMapInformer: read cached ConfigMap state
  ConfigMapCacheSyncer->>KubernetesClient: create or update ConfigMap
  ConfigMapCacheSyncer->>FileInspectionCache: load persisted entries
Loading

Suggested reviewers: harshwardhanpatil07, andfasano, cheesesashimi

🚥 Pre-merge checks | ✅ 14 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 18.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (14 passed)
Check name Status Explanation
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 The PR changes only standard Go tests with static Test... function names; the changed files contain no Ginkgo It, Describe, Context, or When titles.
Test Structure And Quality ✅ Passed Changed tests use standard Go testing/Testify, not Ginkgo It blocks; no Ginkgo-specific failure applies. New fake informer tests use t.Cleanup, and all Eventually/Never calls have finite bounds.
Microshift Test Compatibility ✅ Passed The commit adds no Ginkgo declarations or imports. Its only e2e change updates an existing Go TestCachedInspectorFactory constructor call, so the Ginkgo-specific check is not triggered.
Single Node Openshift (Sno) Test Compatibility ✅ Passed The diff adds no Ginkgo e2e tests. The only e2e change supplies a nil cache argument; new tests use standard testing and introduce no multi-node assumptions.
Topology-Aware Scheduling Compatibility ✅ Passed The diff changes cache persistence and controller startup only. It adds no affinity, topology spread, replica, node selector, toleration, or PDB scheduling constraints.
Ote Binary Stdout Contract ✅ Passed The OTE entrypoint is unchanged. The PR adds no stdout calls; new klog calls are inside cache methods, not main, init, or suite setup.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed No new Ginkgo e2e tests were added. The only e2e change updates a cache constructor argument, and added unit tests use local fixtures without network access.
No-Weak-Crypto ✅ Passed The PR adds no MD5, SHA1, DES, RC4, Blowfish, ECB, custom crypto, or secret/token comparison; changed non-vendor files show no weak crypto APIs in either commit.
Container-Privileges ✅ Passed The PR changes only Go source and tests; its diff adds no privileged, hostPID, hostNetwork, hostIPC, SYS_ADMIN, or allowPrivilegeEscalation settings.
No-Sensitive-Data-In-Logs ✅ Passed The diff adds no logs of cache entries, ConfigMap data, credentials, tokens, or PII; new logs contain fixed messages, byte counts, and operational errors only.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly describes the main change: persisting a compact image cache in a ConfigMap.
✨ 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 added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Aug 6, 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: 4

🧹 Nitpick comments (3)
pkg/imageutils/configmap_cache_syncer_test.go (1)

147-156: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

TestConfigMapCacheSyncer_SaveSkipsDuplicate does not verify deduplication.

The test calls save twice and asserts only that both calls return nil. It passes even if the second call issues a full update. Assert that the second save performs no write. Check the ResourceVersion of the ConfigMap, or inspect the actions recorded by the fake client.

🧪 Proposed fix
 func TestConfigMapCacheSyncer_SaveSkipsDuplicate(t *testing.T) {
-	syncer, _ := newFakeSyncer(t)
+	syncer, client := newFakeSyncer(t)
 
 	entries := map[string]*InspectionCacheEntry{
 		"sha256:aaa": {Labels: map[string]string{"k": "v"}},
 	}
 
 	require.NoError(t, syncer.save(context.Background(), entries))
+
+	first, err := client.CoreV1().ConfigMaps(testNamespace).Get(context.Background(), testCMName, metav1.GetOptions{})
+	require.NoError(t, err)
+
 	require.NoError(t, syncer.save(context.Background(), entries))
+
+	second, err := client.CoreV1().ConfigMaps(testNamespace).Get(context.Background(), testCMName, metav1.GetOptions{})
+	require.NoError(t, err)
+	assert.Equal(t, first.ResourceVersion, second.ResourceVersion, "second save must not write the ConfigMap")
 }
🤖 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/imageutils/configmap_cache_syncer_test.go` around lines 147 - 156, Update
TestConfigMapCacheSyncer_SaveSkipsDuplicate to verify the second save performs
no write, not merely that it succeeds. After the first save, inspect the fake
client’s recorded actions or the ConfigMap ResourceVersion, then assert it is
unchanged after the second save.
pkg/imageutils/inspect_cache.go (1)

208-216: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick win

Start cannot detect a failed syncer start.

CacheSyncer.Start returns no value. In ConfigMapCacheSyncer.Start, a WaitForCacheSync timeout logs a warning and returns without launching the sync loop. FileInspectionCache.Start then calls loadFromSyncer, which reads an unsynced lister and receives no entries. The cache silently runs without external persistence for the whole process lifetime.

Consider returning an error from CacheSyncer.Start and propagating it, so the caller can log or retry.

🤖 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/imageutils/inspect_cache.go` around lines 208 - 216, Update the
CacheSyncer.Start contract to return an error, including the
ConfigMapCacheSyncer.Start timeout path, and propagate that result through
FileInspectionCache.Start so a failed syncer initialization is surfaced instead
of continuing silently. Update all implementations and call sites to handle the
returned error while preserving normal startup and eviction behavior.
pkg/imageutils/inspect_cache_test.go (1)

223-235: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

TestFileInspectionCache_StartSyncNoFlushWithoutChanges uses a fixed sleep.

time.Sleep(200 * time.Millisecond) adds fixed runtime to every test run and stays sensitive to scheduling on loaded CI machines. Prefer assert.Never with the same condition, which fails fast and states the intent.

🤖 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/imageutils/inspect_cache_test.go` around lines 223 - 235, Replace the
fixed time.Sleep in TestFileInspectionCache_StartSyncNoFlushWithoutChanges with
assert.Never, polling syncer.saveCount over the equivalent observation window to
verify it remains zero without changes. Keep the existing cache startup and
cancellation setup unchanged.
🤖 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 `@cmd/machine-config-controller/start.go`:
- Around line 106-108: Defer persisted-entry loading in NewFileInspectionCache
until the namespaced informer has synchronized, or update
ConfigMapCacheSyncer.Load to use a direct client read during initial
construction; ensure Start does not leave the cache empty when the ConfigMap
already exists. Add a startup test covering a pre-existing cache ConfigMap with
an initially unstarted informer.

In `@pkg/imageutils/cache_entry_transformer.go`:
- Around line 12-34: Update NewCacheFileTransformer to deep-copy the cache entry
before passing its file data to transform, ensuring the callback receives an
isolated byte slice and cannot mutate the live entry. Preserve the existing
behavior for missing files and transformation errors, and return the copied
entry with the transformed data on success.

In `@pkg/imageutils/inspect_cache_test.go`:
- Around line 159-183: Protect mockSyncer.saved and saveCount with a mutex,
locking writes in Start’s goroutine and reads through a state() accessor that
returns a consistent snapshot. Update the affected tests’ direct field
assertions and Eventually callbacks to use state() instead.

In `@pkg/imageutils/inspect_cache.go`:
- Around line 225-245: Update FileInspectionCache.loadFromSyncer to call
saveLocked after merging the loaded entries while c.mu remains held, ensuring
restored entries are persisted to the local file before returning.

---

Nitpick comments:
In `@pkg/imageutils/configmap_cache_syncer_test.go`:
- Around line 147-156: Update TestConfigMapCacheSyncer_SaveSkipsDuplicate to
verify the second save performs no write, not merely that it succeeds. After the
first save, inspect the fake client’s recorded actions or the ConfigMap
ResourceVersion, then assert it is unchanged after the second save.

In `@pkg/imageutils/inspect_cache_test.go`:
- Around line 223-235: Replace the fixed time.Sleep in
TestFileInspectionCache_StartSyncNoFlushWithoutChanges with assert.Never,
polling syncer.saveCount over the equivalent observation window to verify it
remains zero without changes. Keep the existing cache startup and cancellation
setup unchanged.

In `@pkg/imageutils/inspect_cache.go`:
- Around line 208-216: Update the CacheSyncer.Start contract to return an error,
including the ConfigMapCacheSyncer.Start timeout path, and propagate that result
through FileInspectionCache.Start so a failed syncer initialization is surfaced
instead of continuing silently. Update all implementations and call sites to
handle the returned error while preserving normal startup and eviction behavior.
🪄 Autofix

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: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 6ee4b366-5900-4bed-bf1d-853b9df1406d

📥 Commits

Reviewing files that changed from the base of the PR and between 13ea39a and 491469e.

📒 Files selected for processing (14)
  • cmd/machine-config-controller/start.go
  • pkg/controller/common/constants.go
  • pkg/controller/pinnedimageset/cache_warmer_test.go
  • pkg/imageutils/cache_entry_transformer.go
  • pkg/imageutils/cache_entry_transformer_test.go
  • pkg/imageutils/configmap_cache_syncer.go
  • pkg/imageutils/configmap_cache_syncer_test.go
  • pkg/imageutils/inspect_cache.go
  • pkg/imageutils/inspect_cache_test.go
  • pkg/osimagestream/entry_transformer.go
  • pkg/osimagestream/entry_transformer_test.go
  • pkg/osimagestream/image_data.go
  • pkg/osimagestream/imagestream_source.go
  • test/e2e-2of2/osimagestream_test.go

Comment thread cmd/machine-config-controller/start.go
Comment thread pkg/imageutils/cache_entry_transformer.go
Comment thread pkg/imageutils/inspect_cache_test.go
Comment thread pkg/imageutils/inspect_cache.go
@pablintino

Copy link
Copy Markdown
Contributor Author

/hold Still needs some work to get it working

@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 Aug 6, 2026
@pablintino
pablintino force-pushed the cm-persistance-for-cache branch 2 times, most recently from 004033b to 60109d6 Compare August 12, 2026 08:50
@pablintino

Copy link
Copy Markdown
Contributor Author

/unhold
/pipeline required

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Scheduling tests matching the pipeline_run_if_changed or not excluded by pipeline_skip_if_only_changed parameters:
/test e2e-aws-ovn
/test e2e-aws-ovn-upgrade
/test e2e-gcp-op-ocl-part1
/test e2e-gcp-op-ocl-part2
/test e2e-gcp-op-part1
/test e2e-gcp-op-part2
/test e2e-gcp-op-single-node
/test e2e-hypershift
/test tls-pqc-readiness

@openshift-ci openshift-ci Bot removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Aug 12, 2026
@pablintino
pablintino force-pushed the cm-persistance-for-cache branch from 60109d6 to e9384f4 Compare August 12, 2026 15:00
@pablintino

Copy link
Copy Markdown
Contributor Author

/retest-required

@yuqi-zhang yuqi-zhang left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Generally seems fine to me - added a couple of questions inline. Also asked for claude to review this - but no nits seems that relevant.


close(ctrlctx.InformersStarted)

// Start the cache before any controller that consumes it has a chance to run.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The PinnedImageSet controller seems to be the one controller that starts before this. Just to check, this PR seems targetted for that use case, should this start before the PIS controller does?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Good catch, fixed.


existing, err := s.kubeclient.CoreV1().ConfigMaps(s.namespace).Get(ctx, s.cmName, metav1.GetOptions{})
if apierrors.IsNotFound(err) {
cm := &corev1.ConfigMap{

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I know we're not super consistent on object labelling, etc. but I wonder if it would be worth adding something like k8s-app label and/or the openshift.io/owning-component annotation, so there's a bit more metadata around it. It's in our namespace already so not a blocker by any means.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Fixed by added the annotation. It seems we are already using the same annotation for other CMs. Thanks for the point.

Comment thread pkg/osimagestream/imagestream.go Outdated

// releaseImageStreamLocation is the path inside a release payload image
// where the image-references ImageStream manifest is stored.
releaseImageStreamLocation = "/release-manifests/image-references"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

the minor-est of nits: I noticed that we technically have a duplicate definition of this path with a slightly different name: https://github.com/openshift/machine-config-operator/blob/main/pkg/controller/pinnedimageset/cache_warmer.go#L16

Might be worth at least using the same name in case we change this for some reason (although looks like you just moved this definition, so we had this in the past, so it's not that relevant to this PR)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

To avoid future circular dependencies I've fixed this by using the same variable name. Not the perfect fix but it's a bit better than using different names for the same thing.

@pablintino
pablintino force-pushed the cm-persistance-for-cache branch from e9384f4 to 272375f Compare August 13, 2026 15:28
This change dumps the cache (a reduced version of it with the bare
minimal for OS Image Streams) to a new CM to allow new MCC pods that use
a different name and thus, a new cache file, to read already existing
cache info. It's specially useful in disconnected environments.

Signed-off-by: Pablo Rodriguez Nava <git@amail.pablintino.eu>
@pablintino
pablintino force-pushed the cm-persistance-for-cache branch from 272375f to a560514 Compare August 13, 2026 15:35
@pablintino pablintino changed the title MCO-2468: Dump compact cache to CM for persistence OCPBUGS-95238: Dump compact cache to CM for persistence Aug 13, 2026
@openshift-ci-robot openshift-ci-robot added jira/severity-moderate Referenced Jira bug's severity is moderate for the branch this PR is targeting. jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. labels Aug 13, 2026
@openshift-ci-robot

Copy link
Copy Markdown
Contributor

@pablintino: This pull request references Jira Issue OCPBUGS-95238, which is invalid:

  • expected the bug to target the "5.0.0" version, but no target version was set

Comment /jira refresh to re-evaluate validity if changes to the Jira bug are made, or edit the title of this pull request to link to a different bug.

The bug has been updated to refer to the pull request using the external bug tracker.

Details

In response to this:

- What I did

This change dumps the cache (a reduced version of it with the bare minimal for OS Image Streams) to a new CM to allow new MCC pods that use a different name and thus, a new cache file, to read already existing cache info. It's specially useful in disconnected environments.

- How to verify it

TBD

- Description for the changelog

Dump a reduced version of the image cache to a CM to allow it to survive MCC Pod recreations.

Summary by CodeRabbit

  • New Features

  • Image inspection cache data now persists across Pod restarts through Kubernetes configuration storage.

  • Cache synchronization supports filtering and transformation to retain relevant image metadata.

  • OS image stream cache entries are selectively retained for improved efficiency.

  • Bug Fixes

  • Cache initialization and synchronization now occur reliably before controllers begin processing.

  • Tests

  • Added coverage for cache persistence, filtering, transformation, eviction, and shutdown behavior.

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.

@pablintino

Copy link
Copy Markdown
Contributor Author

/jira refresh

@openshift-ci-robot

Copy link
Copy Markdown
Contributor

@pablintino: This pull request references Jira Issue OCPBUGS-95238, which is invalid:

  • expected the bug to target the "5.0.0" version, but no target version was set

Comment /jira refresh to re-evaluate validity if changes to the Jira bug are made, or edit the title of this pull request to link to a different bug.

Details

In response to this:

/jira refresh

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.

@yuqi-zhang yuqi-zhang left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

/lgtm

Assuming we didn't break any ordering that the original setup was dependent on

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Aug 13, 2026
@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Scheduling tests matching the pipeline_run_if_changed or not excluded by pipeline_skip_if_only_changed parameters:
/test e2e-aws-ovn
/test e2e-aws-ovn-upgrade
/test e2e-gcp-op-ocl-part1
/test e2e-gcp-op-ocl-part2
/test e2e-gcp-op-part1
/test e2e-gcp-op-part2
/test e2e-gcp-op-single-node
/test e2e-hypershift
/test tls-pqc-readiness

@openshift-ci

openshift-ci Bot commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: pablintino, yuqi-zhang

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 [pablintino,yuqi-zhang]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-ci

openshift-ci Bot commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

@pablintino: 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/e2e-gcp-op-ocl-part2 a560514 link true /test e2e-gcp-op-ocl-part2
ci/prow/perfscale-control-plane-6nodes a560514 link false /test perfscale-control-plane-6nodes

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.

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. jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. jira/severity-moderate Referenced Jira bug's severity is moderate for the branch this PR is targeting. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. lgtm Indicates that a PR is ready to be merged.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants