Skip to content

Commit 50cdb2a

Browse files
Merge pull request #710 from openshift-bot/synchronize-upstream
OCPBUGS-62517: Synchronize from Upstream Repositories
2 parents 9b89c25 + e048679 commit 50cdb2a

66 files changed

Lines changed: 1856 additions & 405 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ $(eval $(call install-sh,standard,operator-controller-standard.yaml))
254254
.PHONY: test
255255
test: manifests generate fmt lint test-unit test-e2e test-regression #HELP Run all tests.
256256

257-
E2E_TIMEOUT ?= 15m
257+
E2E_TIMEOUT ?= 20m
258258
GODOG_ARGS ?=
259259
.PHONY: e2e
260260
e2e: #EXHELP Run the e2e tests.
@@ -316,7 +316,7 @@ test-experimental-e2e: COVERAGE_NAME := experimental-e2e
316316
test-experimental-e2e: export MANIFEST := $(EXPERIMENTAL_RELEASE_MANIFEST)
317317
test-experimental-e2e: export INSTALL_DEFAULT_CATALOGS := false
318318
test-experimental-e2e: PROMETHEUS_VALUES := helm/prom_experimental.yaml
319-
test-experimental-e2e: E2E_TIMEOUT := 20m
319+
test-experimental-e2e: E2E_TIMEOUT := 25m
320320
test-experimental-e2e: run-internal prometheus e2e e2e-coverage kind-clean #HELP Run experimental e2e test suite on local kind cluster
321321

322322
.PHONY: prometheus

api/v1/clusterextension_types.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -466,6 +466,29 @@ type BundleMetadata struct {
466466
// +required
467467
// +kubebuilder:validation:XValidation:rule="self.matches(\"^([0-9]+)(\\\\.[0-9]+)?(\\\\.[0-9]+)?(-([-0-9A-Za-z]+(\\\\.[-0-9A-Za-z]+)*))?(\\\\+([-0-9A-Za-z]+(-\\\\.[-0-9A-Za-z]+)*))?\")",message="version must be well-formed semver"
468468
Version string `json:"version"`
469+
470+
// release is an optional field that identifies a specific release of this bundle's version.
471+
// A release represents a re-publication of the same version, typically used to deliver
472+
// packaging or metadata changes without changing the version number. When multiple
473+
// releases exist for the same version, higher releases are preferred. An unset release
474+
// is less preferred than all other release values.
475+
//
476+
// The value consists of dot-separated identifiers, where each identifier is either a
477+
// numeric value (without leading zeros) or an alphanumeric string (e.g., "2", "1.el9",
478+
// "3.alpha.1"). Releases are compared identifier by identifier: numeric identifiers are
479+
// compared as integers, alphanumeric identifiers are compared lexically, and numeric
480+
// identifiers always sort before alphanumeric identifiers.
481+
//
482+
// For bundles with explicit pkg.Release metadata, this field contains that release value.
483+
// For registry+v1 bundles lacking an explicit release value, this field contains the release
484+
// extracted from version's build metadata (e.g., '2' from '1.0.0+2').
485+
// This field is omitted when the bundle's release value is unset.
486+
//
487+
// +optional
488+
// <opcon:experimental>
489+
// +kubebuilder:validation:MaxLength=20
490+
// +kubebuilder:validation:XValidation:rule="self.matches(\"^$|^(0|[1-9][0-9]*|[0-9]*[A-Za-z-][0-9A-Za-z-]*)(\\\\.(0|[1-9][0-9]*|[0-9]*[A-Za-z-][0-9A-Za-z-]*))*$\")",message="release must be empty or consist of dot-separated identifiers (numeric without leading zeros, or alphanumeric)"
491+
Release *string `json:"release,omitempty"`
469492
}
470493

471494
// RevisionStatus defines the observed state of a ClusterObjectSet.

api/v1/zz_generated.deepcopy.go

Lines changed: 7 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

applyconfigurations/api/v1/bundlemetadata.go

Lines changed: 27 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/api-reference/olmv1-api-reference.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ _Appears in:_
6767
| --- | --- | --- | --- |
6868
| `name` _string_ | name is required and follows the DNS subdomain standard as defined in [RFC 1123].<br />It must contain only lowercase alphanumeric characters, hyphens (-) or periods (.),<br />start and end with an alphanumeric character, and be no longer than 253 characters. | | Required: \{\} <br /> |
6969
| `version` _string_ | version is required and references the version that this bundle represents.<br />It follows the semantic versioning standard as defined in https://semver.org/. | | Required: \{\} <br /> |
70+
| `release` _string_ | release is an optional field that identifies a specific release of this bundle's version.<br />A release represents a re-publication of the same version, typically used to deliver<br />packaging or metadata changes without changing the version number. When multiple<br />releases exist for the same version, higher releases are preferred. An unset release<br />is less preferred than all other release values.<br />The value consists of dot-separated identifiers, where each identifier is either a<br />numeric value (without leading zeros) or an alphanumeric string (e.g., "2", "1.el9",<br />"3.alpha.1"). Releases are compared identifier by identifier: numeric identifiers are<br />compared as integers, alphanumeric identifiers are compared lexically, and numeric<br />identifiers always sort before alphanumeric identifiers.<br />For bundles with explicit pkg.Release metadata, this field contains that release value.<br />For registry+v1 bundles lacking an explicit release value, this field contains the release<br />extracted from version's build metadata (e.g., '2' from '1.0.0+2').<br />This field is omitted when the bundle's release value is unset.<br /><opcon:experimental> | | MaxLength: 20 <br />Optional: \{\} <br /> |
7071

7172

7273
#### CRDUpgradeSafetyEnforcement

docs/designs/testing/2026-04-13-e2e-isolation/design.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Each scenario dynamically builds and pushes its own bundle and catalog OCI image
1212
parameterized by scenario ID. All cluster-scoped resource names include the scenario ID, making
1313
conflicts structurally impossible.
1414

15-
```
15+
```text
1616
Scenario starts
1717
-> Generate parameterized bundle manifests (CRD names, deployments, etc. include scenario ID)
1818
-> Build + push bundle OCI images to e2e registry via go-containerregistry

go.mod

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,15 @@ require (
66
github.com/BurntSushi/toml v1.6.0
77
github.com/Masterminds/semver/v3 v3.4.0
88
github.com/blang/semver/v4 v4.0.0
9-
github.com/cert-manager/cert-manager v1.20.1
10-
github.com/containerd/containerd v1.7.30
9+
github.com/cert-manager/cert-manager v1.20.2
10+
github.com/containerd/containerd v1.7.31
1111
github.com/cucumber/godog v0.15.1
1212
github.com/evanphx/json-patch v5.9.11+incompatible
1313
github.com/fsnotify/fsnotify v1.9.0
1414
github.com/go-logr/logr v1.4.3
1515
github.com/golang-jwt/jwt/v5 v5.3.1
1616
github.com/google/go-cmp v0.7.0
17-
github.com/google/go-containerregistry v0.21.4
17+
github.com/google/go-containerregistry v0.21.5
1818
github.com/google/renameio/v2 v2.0.2
1919
github.com/gorilla/handlers v1.5.2
2020
github.com/klauspost/compress v1.18.5
@@ -49,7 +49,7 @@ require (
4949
sigs.k8s.io/controller-runtime v0.23.3
5050
sigs.k8s.io/controller-tools v0.20.1
5151
sigs.k8s.io/crdify v0.5.1-0.20260309184313-54162f2e3097
52-
sigs.k8s.io/structured-merge-diff/v6 v6.3.2
52+
sigs.k8s.io/structured-merge-diff/v6 v6.4.0
5353
sigs.k8s.io/yaml v1.6.0
5454
)
5555

@@ -97,7 +97,7 @@ require (
9797
github.com/cyphar/filepath-securejoin v0.6.1 // indirect
9898
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
9999
github.com/distribution/reference v0.6.0 // indirect
100-
github.com/docker/cli v29.3.1+incompatible // indirect
100+
github.com/docker/cli v29.4.0+incompatible // indirect
101101
github.com/docker/distribution v2.8.3+incompatible // indirect
102102
github.com/docker/docker v28.5.2+incompatible // indirect
103103
github.com/docker/docker-credential-helpers v0.9.5 // indirect

go.sum

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ github.com/bshuster-repo/logrus-logstash-hook v1.0.0/go.mod h1:zsTqEiSzDgAa/8GZR
4747
github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM=
4848
github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw=
4949
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
50-
github.com/cert-manager/cert-manager v1.20.1 h1:99ExHJu5TPp1V92AvvE4oY6BkOSyJiWLxxMkbqbdGaY=
51-
github.com/cert-manager/cert-manager v1.20.1/go.mod h1:ut67FnggYJJqAdDWLhSPnj10P06QwbNU88RYNh9MvMc=
50+
github.com/cert-manager/cert-manager v1.20.2 h1:CimnY00nLqB2lmxhoSuEC4GDMFDK7JCXqyjwMM9ndIQ=
51+
github.com/cert-manager/cert-manager v1.20.2/go.mod h1:1g/+a/WK5zWH/dXPZa3dMD3aJQJNRXQu+PN17C6WrOw=
5252
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
5353
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
5454
github.com/chai2010/gettext-go v1.0.3 h1:9liNh8t+u26xl5ddmWLmsOsdNLwkdRTg5AG+JnTiM80=
@@ -59,8 +59,8 @@ github.com/clipperhouse/uax29/v2 v2.6.0/go.mod h1:Wn1g7MK6OoeDT0vL+Q0SQLDz/KpfsV
5959
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
6060
github.com/containerd/cgroups/v3 v3.1.2 h1:OSosXMtkhI6Qove637tg1XgK4q+DhR0mX8Wi8EhrHa4=
6161
github.com/containerd/cgroups/v3 v3.1.2/go.mod h1:PKZ2AcWmSBsY/tJUVhtS/rluX0b1uq1GmPO1ElCmbOw=
62-
github.com/containerd/containerd v1.7.30 h1:/2vezDpLDVGGmkUXmlNPLCCNKHJ5BbC5tJB5JNzQhqE=
63-
github.com/containerd/containerd v1.7.30/go.mod h1:fek494vwJClULlTpExsmOyKCMUAbuVjlFsJQc4/j44M=
62+
github.com/containerd/containerd v1.7.31 h1:jn3IMuTV4Bb1Uwb0MFPW2ASJAD3W1lh6QqqZHIZwDh4=
63+
github.com/containerd/containerd v1.7.31/go.mod h1:jdwD6s/BhV4XVJGrvtziNPVA+83n66TwptVaPKprq4E=
6464
github.com/containerd/containerd/api v1.10.0 h1:5n0oHYVBwN4VhoX9fFykCV9dF1/BvAXeg2F8W6UYq1o=
6565
github.com/containerd/containerd/api v1.10.0/go.mod h1:NBm1OAk8ZL+LG8R0ceObGxT5hbUYj7CzTmR3xh0DlMM=
6666
github.com/containerd/continuity v0.4.5 h1:ZRoN1sXq9u7V6QoHMcVWGhOwDFqZ4B9i5H6un1Wh0x4=
@@ -114,8 +114,8 @@ github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5Qvfr
114114
github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
115115
github.com/dlclark/regexp2 v1.11.0 h1:G/nrcoOa7ZXlpoa/91N3X7mM3r8eIlMBBJZvsz/mxKI=
116116
github.com/dlclark/regexp2 v1.11.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
117-
github.com/docker/cli v29.3.1+incompatible h1:M04FDj2TRehDacrosh7Vlkgc7AuQoWloQkf1PA5hmoI=
118-
github.com/docker/cli v29.3.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
117+
github.com/docker/cli v29.4.0+incompatible h1:+IjXULMetlvWJiuSI0Nbor36lcJ5BTcVpUmB21KBoVM=
118+
github.com/docker/cli v29.4.0+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
119119
github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk=
120120
github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
121121
github.com/docker/docker v28.5.2+incompatible h1:DBX0Y0zAjZbSrm1uzOkdr1onVghKaftjlSWt4AFexzM=
@@ -260,8 +260,8 @@ github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
260260
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
261261
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
262262
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
263-
github.com/google/go-containerregistry v0.21.4 h1:VrhlIQtdhE6riZW//MjPrcJ1snAjPoCCpPHqGOygrv8=
264-
github.com/google/go-containerregistry v0.21.4/go.mod h1:kxgc23zQ2qMY/hAKt0wCbB/7tkeovAP2mE2ienynJUw=
263+
github.com/google/go-containerregistry v0.21.5 h1:KTJG9Pn/jC0VdZR6ctV3/jcN+q6/Iqlx0sTVz3ywZlM=
264+
github.com/google/go-containerregistry v0.21.5/go.mod h1:ySvMuiWg+dOsRW0Hw8GYwfMwBlNRTmpYBFJPlkco5zU=
265265
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
266266
github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
267267
github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
@@ -824,7 +824,7 @@ sigs.k8s.io/kustomize/kyaml v0.21.1 h1:IVlbmhC076nf6foyL6Taw4BkrLuEsXUXNpsE+ScX7
824824
sigs.k8s.io/kustomize/kyaml v0.21.1/go.mod h1:hmxADesM3yUN2vbA5z1/YTBnzLJ1dajdqpQonwBL1FQ=
825825
sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU=
826826
sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
827-
sigs.k8s.io/structured-merge-diff/v6 v6.3.2 h1:kwVWMx5yS1CrnFWA/2QHyRVJ8jM6dBA80uLmm0wJkk8=
828-
sigs.k8s.io/structured-merge-diff/v6 v6.3.2/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE=
827+
sigs.k8s.io/structured-merge-diff/v6 v6.4.0 h1:qmp2e3ZfFi1/jJbDGpD4mt3wyp6PE1NfKHCYLqgNQJo=
828+
sigs.k8s.io/structured-merge-diff/v6 v6.4.0/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE=
829829
sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs=
830830
sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4=

helm/experimental.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,24 @@
77
# to pull in resources or additions
88
options:
99
operatorController:
10+
deployment:
11+
replicas: 2
1012
features:
1113
enabled:
1214
- SingleOwnNamespaceInstallSupport
1315
- PreflightPermissions
1416
- HelmChartSupport
1517
- BoxcutterRuntime
1618
- DeploymentConfig
19+
- BundleReleaseSupport
1720
disabled:
1821
- WebhookProviderOpenshiftServiceCA
1922
# List of enabled experimental features for catalogd
2023
# Use with {{- if has "FeatureGate" .Values.options.catalogd.features.enabled }}
2124
# to pull in resources or additions
2225
catalogd:
26+
deployment:
27+
replicas: 2
2328
features:
2429
enabled:
2530
- APIV1MetasHandler

helm/olmv1/base/operator-controller/crd/experimental/olm.operatorframework.io_clusterextensions.yaml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -688,6 +688,30 @@ spec:
688688
hyphens (-) or periods (.), start and end with an alphanumeric
689689
character, and be no longer than 253 characters
690690
rule: self.matches("^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$")
691+
release:
692+
description: |-
693+
release is an optional field that identifies a specific release of this bundle's version.
694+
A release represents a re-publication of the same version, typically used to deliver
695+
packaging or metadata changes without changing the version number. When multiple
696+
releases exist for the same version, higher releases are preferred. An unset release
697+
is less preferred than all other release values.
698+
699+
The value consists of dot-separated identifiers, where each identifier is either a
700+
numeric value (without leading zeros) or an alphanumeric string (e.g., "2", "1.el9",
701+
"3.alpha.1"). Releases are compared identifier by identifier: numeric identifiers are
702+
compared as integers, alphanumeric identifiers are compared lexically, and numeric
703+
identifiers always sort before alphanumeric identifiers.
704+
705+
For bundles with explicit pkg.Release metadata, this field contains that release value.
706+
For registry+v1 bundles lacking an explicit release value, this field contains the release
707+
extracted from version's build metadata (e.g., '2' from '1.0.0+2').
708+
This field is omitted when the bundle's release value is unset.
709+
maxLength: 20
710+
type: string
711+
x-kubernetes-validations:
712+
- message: release must be empty or consist of dot-separated
713+
identifiers (numeric without leading zeros, or alphanumeric)
714+
rule: self.matches("^$|^(0|[1-9][0-9]*|[0-9]*[A-Za-z-][0-9A-Za-z-]*)(\\.(0|[1-9][0-9]*|[0-9]*[A-Za-z-][0-9A-Za-z-]*))*$")
691715
version:
692716
description: |-
693717
version is required and references the version that this bundle represents.

0 commit comments

Comments
 (0)