Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
77 commits
Select commit Hold shift + click to select a range
e88a6ea
:sparkles: Implement Boxcutter (#1946)
thetechnick Sep 8, 2025
fb52fda
:seedling: Bump pkg.package-operator.run/boxcutter from 0.5.1 to 0.6.…
dependabot[bot] Sep 8, 2025
6db9e40
:seedling: Bump golang.org/x/mod from 0.27.0 to 0.28.0 (#2198)
dependabot[bot] Sep 8, 2025
97861ff
:seedling: Bump mkdocs-material from 9.6.18 to 9.6.19 (#2199)
dependabot[bot] Sep 8, 2025
1ab053e
:seedling: Bump golang.org/x/sync from 0.16.0 to 0.17.0 (#2197)
dependabot[bot] Sep 8, 2025
68610d0
Update webhook-operator test image resources (#2184)
perdasilva Sep 8, 2025
ab4d7b6
Merge branch 'main' into synchronize
tmshort Sep 9, 2025
d4a90c7
UPSTREAM: <carry>: Add OpenShift specific files
dtfranz Oct 26, 2023
fd3a2d3
UPSTREAM: <carry>: Fix catalogd.Dockerfile to use new paths
tmshort Feb 26, 2025
d0f9efd
UPSTREAM: <carry>: Update DOWNSTREAM_OWNERS_ALIASES
tmshort Mar 6, 2025
af129a0
UPSTREAM: <carry>: Add openshift node selector annotation
oceanc80 Mar 26, 2025
d07b505
UPSTREAM: <carry>: Add caalogd-cas-dir option to op-con
tmshort Apr 15, 2025
9269c12
UPSTREAM: <carry>: set the SElinux type
jianzhangbjz Apr 27, 2025
60e4974
UPSTREAM: <carry>: Add initial stack to run tests to validate the cat…
camilamacedo86 Apr 17, 2025
c8f61e4
UPSTREAM: <carry>: Add vendor files for the catalog-sync tests
camilamacedo86 Apr 17, 2025
fb415ce
UPSTREAM: <carry>: Bump catalog versions to 4.19
tmshort Apr 24, 2025
38871a8
UPSTREAM: <carry>: revert "Bump catalog versions to 4.19"
tmshort May 15, 2025
abe3ad4
UPSTREAM: <carry>: Update HOWTO-origin-tests
tmshort May 14, 2025
541b9a3
UPSTREAM: <carry>: [DefaultCatalogTests]: Allow to pass auth path for…
camilamacedo86 May 16, 2025
2d5c51d
UPSTREAM: <carry>: fix: set NoLchown=true to allow image unpack on OCPci
camilamacedo86 May 19, 2025
b8adee9
UPSTREAM: <carry>: [DefaultCatalogTests]: Moving parse of ENVVAR to t…
camilamacedo86 May 17, 2025
fc94c3e
UPSTREAM: <carry>: [Default Catalog]: Create tmp dir to extract layer…
camilamacedo86 May 20, 2025
40945ac
UPSTREAM: <carry>: [Default Catalog](cleanp) Remove hack directory wh…
camilamacedo86 May 19, 2025
a2277ea
UPSTREAM: <carry>: Change code implementation to extract layers in OC…
camilamacedo86 May 21, 2025
920370c
UPSTREAM: <carry>: Add vendor files for change in the extract code im…
camilamacedo86 May 21, 2025
8a9859e
UPSTREAM: <carry>: [Default Catalog Tests]: Final cleanups and enhanc…
camilamacedo86 May 22, 2025
4609149
UPSTREAM: <carry>: SELinux type for operator-controller
jianzhangbjz May 22, 2025
7631e01
UPSTREAM: <carry>: Bump catalog versions to 4.19
tmshort Apr 24, 2025
f9b9bbf
UPSTREAM: <carry>: [Default Catalog Consistency Test] (feat) add chec…
camilamacedo86 May 28, 2025
25c0ed2
UPSTREAM: <carry>: [Default Catalog Consistency Test]: fix junit outp…
camilamacedo86 Jun 2, 2025
6762adf
UPSTREAM: <carry>: [Default Catalog Consistency Test] (feat) add chec…
camilamacedo86 May 29, 2025
a2fc1cc
UPSTREAM: <carry>: [Default Catalog Consistency Test]: Enable Catalog…
camilamacedo86 Jun 4, 2025
2fb741c
UPSTREAM: <carry>: [Default Catalog Consistency Test]: Rename Tests s…
camilamacedo86 Jun 4, 2025
84fd312
UPSTREAM: <carry>: Updating ose-olm-operator-controller-container ima…
Jun 18, 2025
1e2f565
UPSTREAM: <carry>: Updating ose-olm-catalogd-container image to be co…
Jun 18, 2025
a318e4b
UPSTREAM: <carry>: Update e2e registry to use 1.24/4.20
tmshort Jun 30, 2025
2c92f30
UPSTREAM: <carry>: [Catalog Default Tests]: Upgrade go version to 1.2…
camilamacedo86 Jul 1, 2025
4c09740
UPSTREAM: <carry>: Add structure to allow move the orgin tests using OTE
camilamacedo86 Jun 13, 2025
594ce33
UPSTREAM: <carry>: Add support for experimental manifests
tmshort Jul 2, 2025
767e2a4
UPSTREAM: <carry>: [OTE] - chore: follow up #383 – remove unreachable…
camilamacedo86 Jul 10, 2025
05e5f34
UPSTREAM: <carry>: Remove build of test image registry
tmshort Jul 9, 2025
ed4e724
UPSTREAM: <carry>: Add test-experimental-e2e target to openshift Make…
tmshort Jul 15, 2025
ddc5201
UPSTREAM: <carry>: [OTE]: Add binary in the operator controller image…
camilamacedo86 Jul 11, 2025
4175b5a
UPSTREAM: <carry>: Fix experimental manifest copying
tmshort Jul 17, 2025
cf60db4
UPSTREAM: <carry>: Update manifest generation for upstream rbac/webhooks
tmshort Jul 17, 2025
64840b7
UPSTREAM: <carry>: [OTE] - Add tracking mechanism
camilamacedo86 Jul 17, 2025
31bd723
UPSTREAM: <carry>: Update OTE dep to get fix
camilamacedo86 Jul 22, 2025
8200935
UPSTREAM: <carry>: [OTE] Add Readme
camilamacedo86 Jul 24, 2025
f653ef6
UPSTREAM: <carry>: set GIT_COMMIT env from SOURCE_GIT_COMMIT in Docke…
rashmigottipati Jun 6, 2025
c65e51c
UPSTREAM: <carry>: add openshift specific build target to pass commit…
ankitathomas Jun 11, 2025
161381d
UPSTREAM: <carry>: add source commit into binaries when linking
bentito Jul 9, 2025
4440699
UPSTREAM: <carry>: OTE add first test from openshift/origin olmv1.go
camilamacedo86 Jul 19, 2025
a0352ea
UPSTREAM: <carry>: Migrate tasks from openshift/origin olm v1.go file…
camilamacedo86 Jul 31, 2025
4f76f80
UPSTREAM: <carry>: OTE - How to test locally with OCP instances
camilamacedo86 Aug 6, 2025
edc6a6a
UPSTREAM: <carry>: [OTE] Refac: refac helper and olmv1 test to create…
camilamacedo86 Aug 8, 2025
b197164
UPSTREAM: <carry>: [OTE] add webhook tests
camilamacedo86 Jul 31, 2025
c75cf8e
UPSTREAM: <carry>: OTE: rewrite the upgrade incompatible operator test
tmshort Aug 11, 2025
06386d2
UPSTREAM: <carry>: Handle service-ca cert availability/rotation
tmshort Aug 15, 2025
75dca2a
UPSTREAM: <carry>: [OTE] add webhook tests
sosiouxme Aug 14, 2025
d0fe31d
UPSTREAM: <carry>: Upgrade OCP Catalog images from 4.19 to 4.20
camilamacedo86 Aug 13, 2025
c574d2f
UPSTREAM: <carry>: Remove bindata generation from build
tmshort Aug 15, 2025
4b5fb34
UPSTREAM: <carry>: [OTE] Add webhook tests
camilamacedo86 Aug 13, 2025
2139f4c
UPSTREAM: <carry>: OTE add logs and dumps for olmv1 test and fix help…
camilamacedo86 Aug 15, 2025
b869beb
UPSTREAM: <carry>: [OTE] Migrate preflight checks from openshift/origin
camilamacedo86 Jul 31, 2025
beb8726
UPSTREAM: <carry>: [OTE] Add webhook to validate openshift-service-ca…
camilamacedo86 Aug 13, 2025
adbfccf
UPSTREAM: <carry>: Adds ResourceVersion checks to the tls secret dele…
camilamacedo86 Aug 21, 2025
e09eade
UPSTREAM: <carry>: [OTE] - Readme:Add info to help use payload-aggreg…
camilamacedo86 Aug 20, 2025
4ce333f
UPSTREAM: <carry>: remove obsolete owners
grokspawn Aug 21, 2025
0553e0f
UPSTREAM: <carry>: [OTE] add catalog tests from openshift/origin
camilamacedo86 Jul 31, 2025
4eb8ab9
UPSTREAM: <carry>: Migrate single/own namespace tests
camilamacedo86 Aug 8, 2025
1bbf658
UPSTREAM: <carry>: Adds ResourceVersion checks to the tls secret dele…
neisw Aug 25, 2025
dac2f1d
UPSTREAM: <carry>: Ensure unique name for bad-catalog tests
camilamacedo86 Aug 27, 2025
b65f351
UPSTREAM: <carry>: Revert "Handle service-ca cert availability/rotation"
tmshort Aug 29, 2025
861cba4
UPSTREAM: <carry>: grant QE approver permission for OTE
jianzhangbjz Aug 27, 2025
4f38859
UPSTREAM: <drop>: go mod vendor
tmshort Sep 9, 2025
320963c
UPSTREAM: <drop>: remove upstream GitHub configuration
tmshort Sep 9, 2025
921f919
UPSTREAM: <drop>: configure the commit-checker
tmshort Sep 9, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions api/v1/clusterextension_types_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ import (
"github.com/operator-framework/operator-controller/internal/operator-controller/conditionsets"
)

// TODO Expand these tests to cover Types/Reasons/etc. from other APIs as well

func TestClusterExtensionTypeRegistration(t *testing.T) {
types, err := parseConstants("Type")
if err != nil {
Expand Down
181 changes: 181 additions & 0 deletions api/v1/clusterextensionrevision_types.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,181 @@
/*
Copyright 2024.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

package v1

import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/types"
)

const (
ClusterExtensionRevisionKind = "ClusterExtensionRevision"

// Condition Types
ClusterExtensionRevisionTypeAvailable = "Available"
ClusterExtensionRevisionTypeSucceeded = "Succeeded"

// Condition Reasons
ClusterExtensionRevisionReasonAvailable = "Available"
ClusterExtensionRevisionReasonReconcileFailure = "ReconcileFailure"
ClusterExtensionRevisionReasonRevisionValidationFailure = "RevisionValidationFailure"
ClusterExtensionRevisionReasonPhaseValidationError = "PhaseValidationError"
ClusterExtensionRevisionReasonObjectCollisions = "ObjectCollisions"
ClusterExtensionRevisionReasonRolloutSuccess = "RolloutSuccess"
ClusterExtensionRevisionReasonProbeFailure = "ProbeFailure"
ClusterExtensionRevisionReasonIncomplete = "Incomplete"
ClusterExtensionRevisionReasonProgressing = "Progressing"
)

// ClusterExtensionRevisionSpec defines the desired state of ClusterExtensionRevision.
type ClusterExtensionRevisionSpec struct {
// Specifies the lifecycle state of the ClusterExtensionRevision.
//
// +kubebuilder:default="Active"
// +kubebuilder:validation:Enum=Active;Paused;Archived
// +kubebuilder:validation:XValidation:rule="oldSelf == 'Active' || oldSelf == 'Paused' || oldSelf == 'Archived' && oldSelf == self", message="can not un-archive"
LifecycleState ClusterExtensionRevisionLifecycleState `json:"lifecycleState,omitempty"`
// Revision number orders changes over time, must always be previous revision +1.
//
// +kubebuilder:validation:Required
// +kubebuilder:validation:XValidation:rule="self == oldSelf", message="revision is immutable"
Revision int64 `json:"revision"`
// Phases are groups of objects that will be applied at the same time.
// All objects in the a phase will have to pass their probes in order to progress to the next phase.
//
// +kubebuilder:validation:Required
// +kubebuilder:validation:XValidation:rule="self == oldSelf || oldSelf.size() == 0", message="phases is immutable"
// +patchMergeKey=name
// +patchStrategy=merge
// +listType=map
// +listMapKey=name
Phases []ClusterExtensionRevisionPhase `json:"phases"`
// Previous references previous revisions that objects can be adopted from.
//
// +kubebuilder:validation:XValidation:rule="self == oldSelf", message="previous is immutable"
Previous []ClusterExtensionRevisionPrevious `json:"previous,omitempty"`
}

// ClusterExtensionRevisionLifecycleState specifies the lifecycle state of the ClusterExtensionRevision.
type ClusterExtensionRevisionLifecycleState string

const (
// ClusterExtensionRevisionLifecycleStateActive / "Active" is the default lifecycle state.
ClusterExtensionRevisionLifecycleStateActive ClusterExtensionRevisionLifecycleState = "Active"
// ClusterExtensionRevisionLifecycleStatePaused / "Paused" disables reconciliation of the ClusterExtensionRevision.
// Only Status updates will still propagated, but object changes will not be reconciled.
ClusterExtensionRevisionLifecycleStatePaused ClusterExtensionRevisionLifecycleState = "Paused"
// ClusterExtensionRevisionLifecycleStateArchived / "Archived" disables reconciliation while also "scaling to zero",
// which deletes all objects that are not excluded via the pausedFor property and
// removes itself from the owner list of all other objects previously under management.
ClusterExtensionRevisionLifecycleStateArchived ClusterExtensionRevisionLifecycleState = "Archived"
)

// ClusterExtensionRevisionPhase are groups of objects that will be applied at the same time.
// All objects in the a phase will have to pass their probes in order to progress to the next phase.
type ClusterExtensionRevisionPhase struct {
// Name identifies this phase.
//
// +kubebuilder:validation:MaxLength=63
// +kubebuilder:validation:Pattern=`^[a-z]([-a-z0-9]*[a-z0-9])?$`
Name string `json:"name"`
// Objects are a list of all the objects within this phase.
Objects []ClusterExtensionRevisionObject `json:"objects"`
}

// ClusterExtensionRevisionObject contains an object and settings for it.
type ClusterExtensionRevisionObject struct {
// +kubebuilder:validation:EmbeddedResource
// +kubebuilder:pruning:PreserveUnknownFields
Object unstructured.Unstructured `json:"object"`
// CollisionProtection controls whether OLM can adopt and modify objects
// already existing on the cluster or even owned by another controller.
//
// +kubebuilder:default="Prevent"
CollisionProtection CollisionProtection `json:"collisionProtection,omitempty"`
}

// CollisionProtection specifies if and how ownership collisions are prevented.
type CollisionProtection string

const (
// CollisionProtectionPrevent prevents owner collisions entirely
// by only allowing to work with objects itself has created.
CollisionProtectionPrevent CollisionProtection = "Prevent"
// CollisionProtectionIfNoController allows to patch and override
// objects already present if they are not owned by another controller.
CollisionProtectionIfNoController CollisionProtection = "IfNoController"
// CollisionProtectionNone allows to patch and override objects
// already present and owned by other controllers.
// Be careful! This setting may cause multiple controllers to fight over a resource,
// causing load on the API server and etcd.
CollisionProtectionNone CollisionProtection = "None"
)

type ClusterExtensionRevisionPrevious struct {
// +kubebuilder:validation:Required
Name string `json:"name"`
// +kubebuilder:validation:Required
UID types.UID `json:"uid"`
}

// ClusterExtensionRevisionStatus defines the observed state of a ClusterExtensionRevision.
type ClusterExtensionRevisionStatus struct {
// +patchMergeKey=type
// +patchStrategy=merge
// +listType=map
// +listMapKey=type
// +optional
Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"`
}

// +kubebuilder:object:root=true
// +kubebuilder:resource:scope=Cluster
// +kubebuilder:subresource:status

// ClusterExtensionRevision is the Schema for the clusterextensionrevisions API
type ClusterExtensionRevision struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`

// spec is an optional field that defines the desired state of the ClusterExtension.
// +optional
Spec ClusterExtensionRevisionSpec `json:"spec,omitempty"`

// status is an optional field that defines the observed state of the ClusterExtension.
// +optional
Status ClusterExtensionRevisionStatus `json:"status,omitempty"`
}

// +kubebuilder:object:root=true

// ClusterExtensionRevisionList contains a list of ClusterExtensionRevision
type ClusterExtensionRevisionList struct {
metav1.TypeMeta `json:",inline"`

// +optional
metav1.ListMeta `json:"metadata,omitempty"`

// items is a required list of ClusterExtensionRevision objects.
//
// +kubebuilder:validation:Required
Items []ClusterExtensionRevision `json:"items"`
}

func init() {
SchemeBuilder.Register(&ClusterExtensionRevision{}, &ClusterExtensionRevisionList{})
}
16 changes: 11 additions & 5 deletions api/v1/common_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,18 @@ const (
TypeInstalled = "Installed"
TypeProgressing = "Progressing"

// Installed reasons
ReasonAbsent = "Absent"

// Progressing reasons
ReasonSucceeded = "Succeeded"
ReasonRetrying = "Retrying"
ReasonBlocked = "Blocked"
ReasonRolloutInProgress = "RolloutInProgress"
ReasonRetrying = "Retrying"
ReasonBlocked = "Blocked"

// Terminal reasons
// Deprecation reasons
ReasonDeprecated = "Deprecated"
ReasonFailed = "Failed"

// Common reasons
ReasonSucceeded = "Succeeded"
ReasonFailed = "Failed"
)
161 changes: 161 additions & 0 deletions api/v1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading