Skip to content

NO-ISSUE: Synchronize From Upstream Repositories#1338

Open
openshift-bot wants to merge 9 commits into
openshift:mainfrom
openshift-bot:synchronize-upstream
Open

NO-ISSUE: Synchronize From Upstream Repositories#1338
openshift-bot wants to merge 9 commits into
openshift:mainfrom
openshift-bot:synchronize-upstream

Conversation

@openshift-bot

@openshift-bot openshift-bot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

The staging/ and vendor/ directories have been synchronized from the upstream repositories, pulling in the following commits:

Date Commit Author Message
2026-07-14 06:41:26 operator-framework/operator-lifecycle-manager@396954f dependabot[bot] 🌱 Bump golang.org/x/sync from 0.21.0 to 0.22.0 (#3870)
2026-07-14 06:46:57 operator-framework/operator-lifecycle-manager@fdd5594 dependabot[bot] 🌱 Bump github.com/prometheus/common from 0.69.0 to 0.70.0 (#3869)
2026-07-14 10:46:25 operator-framework/operator-lifecycle-manager@a4f060a dependabot[bot] 🌱 Bump golang.org/x/net from 0.56.0 to 0.57.0 (#3868)
2026-07-15 10:15:40 operator-framework/operator-lifecycle-manager@174dccd Jordan Keister deploy/chart: add static NetworkPolicies for CatalogSource gRPC ingress and bundle unpack egress (#3863)
2026-07-15 21:14:14 operator-framework/operator-lifecycle-manager@b0123be Chiman Jain Migrate deprecated gopkg.in/yaml.v3 to go.yaml.in/yaml/v3 (#3865)
2026-07-21 07:59:27 operator-framework/operator-lifecycle-manager@f59f6ec dependabot[bot] 🌱 Bump github.com/prometheus/client_golang (#3872)
2026-07-21 08:02:33 operator-framework/operator-lifecycle-manager@0a601aa dependabot[bot] Bump actions/setup-go from 6 to 7 (#3873)
2026-07-21 08:05:38 operator-framework/operator-lifecycle-manager@53c9aaa dependabot[bot] 🌱 Bump github.com/go-logr/logr from 1.4.3 to 1.4.4 (#3874)
2026-07-21 08:08:27 operator-framework/operator-lifecycle-manager@7d437b8 dependabot[bot] 🌱 Bump google.golang.org/grpc from 1.82.0 to 1.82.1 (#3875)

This pull request is expected to merge without any human intervention. If tests are failing here, changes must land upstream to fix any issues so that future downstreaming efforts succeed.

/assign @openshift/openshift-team-operator-runtime

Summary by CodeRabbit

  • New Features

    • Added network policies that allow catalog gRPC ingress on TCP port 50051.
    • Enabled required egress traffic for managed bundle-unpack workloads.
    • Applied these policies consistently across standard, MicroShift, and Helm-based deployments.
  • Maintenance

    • Updated the YAML parsing library and refreshed supporting Go dependencies.
    • Updated automated workflows to use the latest Go setup action, improving build and validation reliability.

@openshift-bot openshift-bot added 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. labels Jul 15, 2026
@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Jul 15, 2026
@openshift-ci-robot

Copy link
Copy Markdown

@openshift-bot: This pull request explicitly references no jira issue.

Details

In response to this:

The staging/ and vendor/ directories have been synchronized from the upstream repositories, pulling in the following commits:

Date Commit Author Message
2026-07-14 06:41:26 operator-framework/operator-lifecycle-manager@396954f dependabot[bot] 🌱 Bump golang.org/x/sync from 0.21.0 to 0.22.0 (#3870)
2026-07-14 06:46:57 operator-framework/operator-lifecycle-manager@fdd5594 dependabot[bot] 🌱 Bump github.com/prometheus/common from 0.69.0 to 0.70.0 (#3869)
2026-07-14 10:46:25 operator-framework/operator-lifecycle-manager@a4f060a dependabot[bot] 🌱 Bump golang.org/x/net from 0.56.0 to 0.57.0 (#3868)

This pull request is expected to merge without any human intervention. If tests are failing here, changes must land upstream to fix any issues so that future downstreaming efforts succeed.

/assign @openshift/openshift-team-operator-runtime

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.

@coderabbitai

coderabbitai Bot commented Jul 15, 2026

Copy link
Copy Markdown

Walkthrough

Dependency versions and YAML module usage were updated, CI workflows now use actions/setup-go@v7, operator tests were reformatted, and static, MicroShift, and Helm manifests add catalog ingress and bundle-unpack egress network policies.

Changes

OLM dependency, policy, and workflow updates

Layer / File(s) Summary
Dependency and YAML alignment
go.mod, staging/operator-lifecycle-manager/go.mod, staging/operator-lifecycle-manager/util/cpb/main.go, staging/operator-lifecycle-manager/pkg/controller/operators/catalog/operator_test.go
Dependency versions and YAML module/import references were updated; related operator test setup and formatting were preserved.
Network policy coverage
manifests/..., microshift-manifests/..., staging/operator-lifecycle-manager/deploy/chart/templates/...
Added catalog gRPC ingress policies and bundle-unpack egress policies to static and templated manifests.
CI Go setup updates
staging/operator-lifecycle-manager/.github/workflows/*
Changed workflow Go setup actions from version 6 to version 7 across build, test, analysis, verification, and release jobs.

Estimated code review effort: 2 (Simple) | ~10 minutes

Suggested reviewers: joelanford, tmshort

🚥 Pre-merge checks | ✅ 14 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 12.50% 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
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title matches the PR's main purpose of syncing staging and vendor changes from upstream repositories.
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 Modified test file uses only static literal subtest names; no Ginkgo titles or dynamic/generated values appear in test titles.
Test Structure And Quality ✅ Passed PASS: The changed test file uses standard testing/t.Run, not Ginkgo, and the PR edits are formatting-only, so the Ginkgo-specific quality check is N/A.
Microshift Test Compatibility ✅ Passed No new or changed Ginkgo e2e tests were added; the touched test file is a unit test with only import/formatting changes.
Single Node Openshift (Sno) Test Compatibility ✅ Passed No new Ginkgo e2e tests were added; the touched test file uses only standard Test* functions and shows no SNO-sensitive assumptions.
Topology-Aware Scheduling Compatibility ✅ Passed Touched files are NetworkPolicies, dependency/workflow bumps, and a YAML import swap; no affinity, nodeSelector, PDB, or topology-aware scheduling changes found.
Ote Binary Stdout Contract ✅ Passed No new process-level stdout writes were introduced; the only touched main() keeps pre-existing prints unchanged, and there are no TestMain/BeforeSuite/RunSpecs additions.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed No new Ginkgo e2e tests were added; the touched files are manifests, workflows, and a unit test, with no IPv4/external-connectivity assumptions.
No-Weak-Crypto ✅ Passed Touched files only adjust deps, YAML imports, manifests, and workflows; searches found no MD5/SHA1/DES/RC4/3DES/Blowfish/ECB, custom crypto, or secret/token compares.
Container-Privileges ✅ Passed No changed manifest/template adds privileged, hostPID/Network/IPC, SYS_ADMIN, root, or allowPrivilegeEscalation; diffs are NetworkPolicies, deps, and workflows only.
No-Sensitive-Data-In-Logs ✅ Passed No new sensitive logs found; the only log change is a moved streamID message, with no passwords/tokens/PII/customer data added.
✨ 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.

🔧 Checkov (3.3.8)
go.mod

Traceback (most recent call last):
File "/usr/local/bin/checkov", line 2, in
from checkov.main import Checkov
ModuleNotFoundError: No module named 'checkov'

manifests/0000_50_olm_01-networkpolicies.yaml

Traceback (most recent call last):
File "/usr/local/bin/checkov", line 2, in
from checkov.main import Checkov
ModuleNotFoundError: No module named 'checkov'

microshift-manifests/0000_50_olm_01-networkpolicies.yaml

Traceback (most recent call last):
File "/usr/local/bin/checkov", line 2, in
from checkov.main import Checkov
ModuleNotFoundError: No module named 'checkov'

  • 6 others
🔧 Trivy (0.72.0)

Trivy execution failed: 2026-07-23T00:18:15Z FATAL Fatal error run error: fs scan error: scan error: scan failed: failed analysis: post analysis error: post analysis error: helm scan error: fs filter error: fs filter error: walk error range error: stat .golangci.yml: no such file or directory: range error: stat .golangci.yml: no such file or directory


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

@openshift-ci
openshift-ci Bot requested review from joelanford and tmshort July 15, 2026 00:08
@perdasilva

Copy link
Copy Markdown
Contributor

/retest

@openshift-bot
openshift-bot force-pushed the synchronize-upstream branch from 636c4d3 to 0711859 Compare July 16, 2026 00:08
@openshift-ci openshift-ci Bot removed the lgtm Indicates that a PR is ready to be merged. label Jul 16, 2026
@openshift-ci

openshift-ci Bot commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

New changes are detected. LGTM label has been removed.

@openshift-bot openshift-bot added the lgtm Indicates that a PR is ready to be merged. label Jul 17, 2026
@perdasilva

Copy link
Copy Markdown
Contributor

/retest

@openshift-bot
openshift-bot force-pushed the synchronize-upstream branch from 0711859 to ece9ee5 Compare July 22, 2026 00:11
@openshift-ci openshift-ci Bot removed the lgtm Indicates that a PR is ready to be merged. label Jul 22, 2026
@openshift-ci

openshift-ci Bot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

New changes are detected. LGTM label has been removed.

@tmshort

tmshort commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

/retest

dependabot Bot and others added 9 commits July 23, 2026 00:07
Bumps [golang.org/x/sync](https://github.com/golang/sync) from 0.21.0 to 0.22.0.
- [Commits](golang/sync@v0.21.0...v0.22.0)

---
updated-dependencies:
- dependency-name: golang.org/x/sync
  dependency-version: 0.22.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Upstream-repository: operator-lifecycle-manager
Upstream-commit: 396954f2ceb5cc5e68ee364fb161525c05390b9e
Bumps [github.com/prometheus/common](https://github.com/prometheus/common) from 0.69.0 to 0.70.0.
- [Release notes](https://github.com/prometheus/common/releases)
- [Changelog](https://github.com/prometheus/common/blob/main/CHANGELOG.md)
- [Commits](prometheus/common@v0.69.0...v0.70.0)

---
updated-dependencies:
- dependency-name: github.com/prometheus/common
  dependency-version: 0.70.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Upstream-repository: operator-lifecycle-manager
Upstream-commit: fdd559459e09fce51148f8662f452018b55ea513
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.56.0 to 0.57.0.
- [Commits](golang/net@v0.56.0...v0.57.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-version: 0.57.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Upstream-repository: operator-lifecycle-manager
Upstream-commit: a4f060a9b8a125234a14099bb0f834219b5598eb
…ss and bundle unpack egress (#3863)

* deploy/chart: add static NetworkPolicies for CatalogSource gRPC ingress and bundle unpack egress

The Helm chart's default-deny-all-traffic policy blocked two critical
traffic paths that are not covered by the existing static NetworkPolicies:

1. CatalogSource registry pods need to accept inbound gRPC connections on
   port 50051 from within the cluster. The catalog-operator reconciler
   already creates per-CatalogSource NetworkPolicies for this, but there
   is a bootstrapping gap between when default-deny-all-traffic is applied
   and when the controller first reconciles each CatalogSource.

2. Bundle-unpack Job pods need egress to reach the Kubernetes API server
   and container registries. The API server port is not statically
   specifiable because it varies across Kubernetes implementations, so a
   wildcard egress rule is used.

Adds two new NetworkPolicies to the chart:
- catalog-source-grpc-server: selects all pods carrying the
  olm.catalogSource label and allows ingress on the gRPC port.
- bundle-unpack-egress: selects all pods carrying both the
  olm.managed=true and operatorframework.io/bundle-unpack-ref labels and
  allows unrestricted egress.

Fixes: operator-framework/operator-lifecycle-manager#3676

Signed-off-by: grokspawn <jordan@nimblewidget.com>

* deploy/chart: use catalog_namespace for CatalogSource and bundle-unpack NPs

CatalogSource registry pods and bundle-unpack Jobs run in the namespace
determined by .Values.catalog_namespace, not .Values.namespace. When a
user overrides catalog_namespace to differ from namespace, the
NetworkPolicies must be created in catalog_namespace to actually apply
to those pods.

Fixes review feedback on #3863.

Signed-off-by: grokspawn <jordan@nimblewidget.com>

---------

Signed-off-by: grokspawn <jordan@nimblewidget.com>
Upstream-repository: operator-lifecycle-manager
Upstream-commit: 174dccd0bd85f25fa9671839bbb21dc3a23cffc6
* chore: migrate deprecated gopkg.in/yaml.v3 to go.yaml.in/yaml/v3

Signed-off-by: Chiman Jain <chimanjain15@gmail.com>

* chore: run go mod tidy

Signed-off-by: Chiman Jain <chimanjain15@gmail.com>

---------

Signed-off-by: Chiman Jain <chimanjain15@gmail.com>
Upstream-repository: operator-lifecycle-manager
Upstream-commit: b0123beceac05a5d08b6d5734b1b7772a4fda921
Bumps [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang) from 1.23.2 to 1.24.0.
- [Release notes](https://github.com/prometheus/client_golang/releases)
- [Changelog](https://github.com/prometheus/client_golang/blob/v1.24.0/CHANGELOG.md)
- [Commits](prometheus/client_golang@v1.23.2...v1.24.0)

---
updated-dependencies:
- dependency-name: github.com/prometheus/client_golang
  dependency-version: 1.24.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Upstream-repository: operator-lifecycle-manager
Upstream-commit: f59f6ece21efeef554981a5dedb44f3304e51e15
Bumps [actions/setup-go](https://github.com/actions/setup-go) from 6 to 7.
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](actions/setup-go@v6...v7)

---
updated-dependencies:
- dependency-name: actions/setup-go
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Upstream-repository: operator-lifecycle-manager
Upstream-commit: 0a601aa745fa4293402df4a761f74de17c474400
Bumps [github.com/go-logr/logr](https://github.com/go-logr/logr) from 1.4.3 to 1.4.4.
- [Release notes](https://github.com/go-logr/logr/releases)
- [Changelog](https://github.com/go-logr/logr/blob/master/CHANGELOG.md)
- [Commits](go-logr/logr@v1.4.3...v1.4.4)

---
updated-dependencies:
- dependency-name: github.com/go-logr/logr
  dependency-version: 1.4.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Upstream-repository: operator-lifecycle-manager
Upstream-commit: 53c9aaaf51622c5abc1b3d81277269874dfe6292
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.82.0 to 1.82.1.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](grpc/grpc-go@v1.82.0...v1.82.1)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-version: 1.82.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Upstream-repository: operator-lifecycle-manager
Upstream-commit: 7d437b85b1bc9b720f210dadb708a9d0285bc8b4
@openshift-bot
openshift-bot force-pushed the synchronize-upstream branch from ece9ee5 to eb08d90 Compare July 23, 2026 00:16
@openshift-bot openshift-bot added the lgtm Indicates that a PR is ready to be merged. label Jul 23, 2026
@openshift-ci openshift-ci Bot removed the lgtm Indicates that a PR is ready to be merged. label Jul 23, 2026
@openshift-ci

openshift-ci Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

New changes are detected. LGTM label has been removed.

@openshift-ci

openshift-ci Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

Approval requirements bypassed by manually added approval.

This pull-request has been approved by: openshift-bot

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:

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

@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

🤖 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
`@staging/operator-lifecycle-manager/deploy/chart/templates/0000_50_olm_01-networkpolicies.yaml`:
- Around line 113-132: Replace the wildcard egress rule in the
bundle-unpack-egress NetworkPolicy with explicit rules reusing
.Values.networkPolicy.kubeAPIServer and .Values.networkPolicy.dns, plus only the
required registry and object-store destinations. Preserve the existing pod
selectors and policy type, and ensure no unrestricted destination or port
remains.
- Around line 89-111: The olm-catalog-grpc-ingress NetworkPolicy is rendered for
unsupported split-namespace deployments. Gate the manifest, including its
metadata and spec, on .Values.catalog_namespace equaling .Values.namespace so it
is omitted when the namespaces differ; preserve the existing policy unchanged
for matching namespaces.
🪄 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: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 46a3c27d-2b80-473c-aa67-127bef63cebb

📥 Commits

Reviewing files that changed from the base of the PR and between ece9ee5 and eb08d90.

⛔ Files ignored due to path filters (129)
  • go.sum is excluded by !**/*.sum
  • staging/operator-lifecycle-manager/go.sum is excluded by !**/*.sum
  • vendor/github.com/go-logr/logr/context_noslog.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-logr/logr/context_slog.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-logr/logr/funcr/funcr.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-logr/logr/funcr/slogsink.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-logr/logr/sloghandler.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-logr/logr/slogr.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-logr/logr/slogr/slogr.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-logr/logr/slogsink.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/klauspost/compress/flate/dict_decoder.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/klauspost/compress/flate/inflate.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/klauspost/compress/huff0/build_table.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/klauspost/compress/internal/snapref/decode.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/klauspost/compress/zstd/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/klauspost/compress/zstd/dict.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/klauspost/compress/zstd/enc_base.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/klauspost/compress/zstd/enc_best.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/klauspost/compress/zstd/enc_better.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/klauspost/compress/zstd/enc_dfast.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/klauspost/compress/zstd/enc_fast.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/klauspost/compress/zstd/enc_jobs.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/klauspost/compress/zstd/encoder.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/klauspost/compress/zstd/encoder_options.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/klauspost/compress/zstd/fse_decoder_amd64.s is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/klauspost/compress/zstd/fse_decoder_arm64.s is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/klauspost/compress/zstd/fse_decoder_asm.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/klauspost/compress/zstd/fse_decoder_generic.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/klauspost/compress/zstd/seqdec_amd64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/klauspost/compress/zstd/seqdec_amd64.s is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/klauspost/compress/zstd/seqdec_arm64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/klauspost/compress/zstd/seqdec_arm64.s is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/klauspost/compress/zstd/seqdec_asm.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/klauspost/compress/zstd/seqdec_generic.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/operator-framework/operator-lifecycle-manager/util/cpb/main.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil/header/header.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/prometheus/client_golang/prometheus/collectors/go_collector_go116.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/prometheus/client_golang/prometheus/collectors/go_collector_latest.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/prometheus/client_golang/prometheus/counter.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/prometheus/client_golang/prometheus/desc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/prometheus/client_golang/prometheus/expvar_collector.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/prometheus/client_golang/prometheus/gauge.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/prometheus/client_golang/prometheus/go_collector_go116.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/prometheus/client_golang/prometheus/go_collector_latest.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/prometheus/client_golang/prometheus/histogram.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/prometheus/client_golang/prometheus/internal/difflib.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/prometheus/client_golang/prometheus/labels.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/prometheus/client_golang/prometheus/metric.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/prometheus/client_golang/prometheus/process_collector_darwin.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/prometheus/client_golang/prometheus/process_collector_windows.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/prometheus/client_golang/prometheus/promhttp/http.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/prometheus/client_golang/prometheus/promhttp/instrument_client.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/prometheus/client_golang/prometheus/promhttp/instrument_server.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/prometheus/client_golang/prometheus/promhttp/option.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/prometheus/client_golang/prometheus/registry.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/prometheus/client_golang/prometheus/summary.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/prometheus/client_golang/prometheus/timer.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/prometheus/client_golang/prometheus/vec.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/prometheus/client_golang/prometheus/wrap.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/prometheus/procfs/Makefile.common is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/prometheus/procfs/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/prometheus/procfs/SECURITY.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/prometheus/procfs/crypto.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/prometheus/procfs/mountinfo.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/prometheus/procfs/net_wireless.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/prometheus/procfs/proc_cgroup.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/crypto/openpgp/armor/armor.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/crypto/openpgp/errors/errors.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/crypto/openpgp/packet/packet.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/crypto/openpgp/read.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/crypto/openpgp/s2k/s2k.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/transport_wrap.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/idna/idna.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sync/semaphore/semaphore.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/cpu/parse.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/syscall_linux.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/syscall_linux_386.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/syscall_linux_amd64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/syscall_linux_arm.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/syscall_linux_arm64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/syscall_linux_loong64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/syscall_linux_ppc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/syscall_linux_s390x.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zsyscall_linux.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zsyscall_linux_386.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/windows/security_windows.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/windows/syscall_windows.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/windows/types_windows.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/cases/context.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/cases/map.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/norm/forminfo.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/norm/iter.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/norm/normalize.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/go/packages/packages.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/gcimporter/iexport.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/gcimporter/iimport.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/imports/fix.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/imports/imports.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/stdlib/deps.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/stdlib/manifest.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/typesinternal/element.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/typesinternal/types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/typesinternal/zerovalue.go is excluded by !**/vendor/**, !vendor/**
  • vendor/google.golang.org/grpc/internal/envconfig/envconfig.go is excluded by !**/vendor/**, !vendor/**
  • vendor/google.golang.org/grpc/internal/transport/controlbuf.go is excluded by !**/vendor/**, !vendor/**
  • vendor/google.golang.org/grpc/internal/transport/http2_client.go is excluded by !**/vendor/**, !vendor/**
  • vendor/google.golang.org/grpc/internal/transport/http2_server.go is excluded by !**/vendor/**, !vendor/**
  • vendor/google.golang.org/grpc/version.go is excluded by !**/vendor/**, !vendor/**
  • vendor/modules.txt is excluded by !**/vendor/**, !vendor/**
📒 Files selected for processing (11)
  • go.mod
  • manifests/0000_50_olm_01-networkpolicies.yaml
  • microshift-manifests/0000_50_olm_01-networkpolicies.yaml
  • staging/operator-lifecycle-manager/.github/workflows/e2e-tests.yml
  • staging/operator-lifecycle-manager/.github/workflows/goreleaser.yaml
  • staging/operator-lifecycle-manager/.github/workflows/sanity.yaml
  • staging/operator-lifecycle-manager/.github/workflows/unit.yml
  • staging/operator-lifecycle-manager/deploy/chart/templates/0000_50_olm_01-networkpolicies.yaml
  • staging/operator-lifecycle-manager/go.mod
  • staging/operator-lifecycle-manager/pkg/controller/operators/catalog/operator_test.go
  • staging/operator-lifecycle-manager/util/cpb/main.go
🚧 Files skipped from review as they are similar to previous changes (10)
  • staging/operator-lifecycle-manager/.github/workflows/sanity.yaml
  • staging/operator-lifecycle-manager/.github/workflows/unit.yml
  • staging/operator-lifecycle-manager/.github/workflows/goreleaser.yaml
  • staging/operator-lifecycle-manager/util/cpb/main.go
  • staging/operator-lifecycle-manager/.github/workflows/e2e-tests.yml
  • go.mod
  • microshift-manifests/0000_50_olm_01-networkpolicies.yaml
  • manifests/0000_50_olm_01-networkpolicies.yaml
  • staging/operator-lifecycle-manager/pkg/controller/operators/catalog/operator_test.go
  • staging/operator-lifecycle-manager/go.mod

Comment on lines +89 to +111
# Complements per-CatalogSource NPs from the controller; covers the bootstrapping window before reconciliation.
# Effective only when catalog_namespace == namespace (the default). When they differ, no OLM-managed
# deny-all exists in catalog_namespace, so this rule has no effect; adding one there is unsafe since
# OLM does not exclusively own that namespace.
# No 'from:' restriction is intentional, matching current dynamic NP behavior. If the controller ever
# restricts ingress sources, this Helm-owned NP (which the controller cannot delete) will silently
# override that — treat as a permanent design constraint.
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: olm-catalog-grpc-ingress
namespace: {{ .Values.catalog_namespace }}
spec:
podSelector:
matchExpressions:
- key: olm.catalogSource
operator: Exists
policyTypes:
- Ingress
ingress:
- ports:
- protocol: TCP
port: {{ .Values.catalogGrpcPodPort }}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

Render this ingress policy only for the topology it supports.

Lines 90-92 claim this has no effect when catalog_namespace != namespace, but the manifest is rendered unconditionally. An ingress NetworkPolicy still selects matching pods and, absent another allow rule, denies ingress other than the listed TCP port. Split-namespace installations can therefore lose health, metrics, or service traffic. Gate this manifest on eq .Values.catalog_namespace .Values.namespace, or implement the correct split-namespace policy instead of documenting it as inert.

Proposed fix
+{{- if eq .Values.catalog_namespace .Values.namespace }}
 ---
 apiVersion: networking.k8s.io/v1
 kind: NetworkPolicy
 ...
   ingress:
     - ports:
       - protocol: TCP
         port: {{ .Values.catalogGrpcPodPort }}
+{{- end }}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
# Complements per-CatalogSource NPs from the controller; covers the bootstrapping window before reconciliation.
# Effective only when catalog_namespace == namespace (the default). When they differ, no OLM-managed
# deny-all exists in catalog_namespace, so this rule has no effect; adding one there is unsafe since
# OLM does not exclusively own that namespace.
# No 'from:' restriction is intentional, matching current dynamic NP behavior. If the controller ever
# restricts ingress sources, this Helm-owned NP (which the controller cannot delete) will silently
# override that — treat as a permanent design constraint.
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: olm-catalog-grpc-ingress
namespace: {{ .Values.catalog_namespace }}
spec:
podSelector:
matchExpressions:
- key: olm.catalogSource
operator: Exists
policyTypes:
- Ingress
ingress:
- ports:
- protocol: TCP
port: {{ .Values.catalogGrpcPodPort }}
{{- if eq .Values.catalog_namespace .Values.namespace }}
# Complements per-CatalogSource NPs from the controller; covers the bootstrapping window before reconciliation.
# Effective only when catalog_namespace == namespace (the default). When they differ, no OLM-managed
# deny-all exists in catalog_namespace, so this rule has no effect; adding one there is unsafe since
# OLM does not exclusively own that namespace.
# No 'from:' restriction is intentional, matching current dynamic NP behavior. If the controller ever
# restricts ingress sources, this Helm-owned NP (which the controller cannot delete) will silently
# override that — treat as a permanent design constraint.
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: olm-catalog-grpc-ingress
namespace: {{ .Values.catalog_namespace }}
spec:
podSelector:
matchExpressions:
- key: olm.catalogSource
operator: Exists
policyTypes:
- Ingress
ingress:
- ports:
- protocol: TCP
port: {{ .Values.catalogGrpcPodPort }}
{{- end }}
🤖 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
`@staging/operator-lifecycle-manager/deploy/chart/templates/0000_50_olm_01-networkpolicies.yaml`
around lines 89 - 111, The olm-catalog-grpc-ingress NetworkPolicy is rendered
for unsupported split-namespace deployments. Gate the manifest, including its
metadata and spec, on .Values.catalog_namespace equaling .Values.namespace so it
is omitted when the namespaces differ; preserve the existing policy unchanged
for matching namespaces.

Comment on lines +113 to +132
# Wildcard egress; API server port omitted intentionally — it is implementation-defined and not statically knowable.
# Carries the same split-namespace limitation as olm-catalog-grpc-ingress above.
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: bundle-unpack-egress
namespace: {{ .Values.catalog_namespace }}
spec:
podSelector:
matchExpressions:
- key: operatorframework.io/bundle-unpack-ref
operator: Exists
- key: olm.managed
operator: In
values:
- "true"
policyTypes:
- Egress
egress:
- { }

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔒 Security & Privacy | 🟠 Major | 🏗️ Heavy lift

Replace wildcard egress with an allowlist.

egress: - { } permits every destination and port for matching bundle-unpack pods. If the namespace is otherwise egress-isolated, this defeats the intended boundary and permits arbitrary cluster or external connections. Reuse the existing .Values.networkPolicy.kubeAPIServer and .Values.networkPolicy.dns configuration, then add only the required registry/object-store destinations.

🤖 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
`@staging/operator-lifecycle-manager/deploy/chart/templates/0000_50_olm_01-networkpolicies.yaml`
around lines 113 - 132, Replace the wildcard egress rule in the
bundle-unpack-egress NetworkPolicy with explicit rules reusing
.Values.networkPolicy.kubeAPIServer and .Values.networkPolicy.dns, plus only the
required registry and object-store destinations. Preserve the existing pod
selectors and policy type, and ensure no unrestricted destination or port
remains.

@openshift-ci

openshift-ci Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

@openshift-bot: 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/okd-scos-images eb08d90 link true /test okd-scos-images
ci/prow/e2e-aws-upgrade-ovn-single-node eb08d90 link false /test e2e-aws-upgrade-ovn-single-node

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/valid-reference Indicates that this PR references a valid Jira ticket of any type.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants